struct clk                      *ref_clk;
        struct clk                      *i2c_clk;
        struct clk                      *dfll_clk;
+       struct reset_control            *dfll_rst;
        struct reset_control            *dvco_rst;
        unsigned long                   ref_rate;
        unsigned long                   i2c_clk_rate;
                return -EINVAL;
        }
 
+       reset_control_deassert(td->dfll_rst);
        reset_control_deassert(td->dvco_rst);
 
        ret = clk_prepare(td->ref_clk);
        clk_unprepare(td->ref_clk);
 
        reset_control_assert(td->dvco_rst);
+       reset_control_assert(td->dfll_rst);
 
        return ret;
 }
        }
 
        reset_control_assert(td->dvco_rst);
+       reset_control_assert(td->dfll_rst);
 
        return 0;
 }
 {
        struct tegra_dfll *td = dev_get_drvdata(dev);
 
+       reset_control_deassert(td->dfll_rst);
        reset_control_deassert(td->dvco_rst);
 
        pm_runtime_get_sync(td->dev);
 
        td->soc = soc;
 
+       td->dfll_rst = devm_reset_control_get_optional(td->dev, "dfll");
+       if (IS_ERR(td->dfll_rst)) {
+               dev_err(td->dev, "couldn't get dfll reset\n");
+               return PTR_ERR(td->dfll_rst);
+       }
+
        td->dvco_rst = devm_reset_control_get(td->dev, "dvco");
        if (IS_ERR(td->dvco_rst)) {
                dev_err(td->dev, "couldn't get dvco reset\n");
        clk_unprepare(td->i2c_clk);
 
        reset_control_assert(td->dvco_rst);
+       reset_control_assert(td->dfll_rst);
 
        return td->soc;
 }