ufs: Set utmi_pll1 as parent for cpu_isc clocks

Set utmi_pll1 as parent for cpu_isc clocks

Bug 4782274

Change-Id: Iab71527dc6de3f46d4b7880c3dd00eadc130c5ba
Signed-off-by: Mallikarjun Kasoju <mkasoju@nvidia.com>
This commit is contained in:
Mallikarjun Kasoju
2024-09-18 16:12:51 +00:00
committed by Jon Hunter
parent 711b5110fc
commit 701657e6f7
2 changed files with 40 additions and 4 deletions

View File

@@ -808,16 +808,42 @@ static int ufs_tegra_init_ufs_clks(struct ufs_tegra_host *ufs_tegra)
if (ufs_tegra->soc->chip_id != TEGRA264) { if (ufs_tegra->soc->chip_id != TEGRA264) {
err = ufs_tegra_host_clk_get(dev, err = ufs_tegra_host_clk_get(dev,
"pll_p", &ufs_tegra->ufshc_parent); "pll_p", &ufs_tegra->ufshc_parent);
if (err)
goto out;
} else { } else {
err = ufs_tegra_host_clk_get(dev, err = ufs_tegra_host_clk_get(dev,
"pllrefe_vcoout", &ufs_tegra->ufshc_parent); "pllrefe_vcoout", &ufs_tegra->ufshc_parent);
if (err) if (err) {
dev_err(dev, "%s: pllrefe_vcoout clock get failed: Err %d",
__func__, err);
goto out; goto out;
}
err = ufs_tegra_host_clk_get(dev, err = ufs_tegra_host_clk_get(dev,
"ufshc_div", &ufs_tegra->ufshc_clk_div); "ufshc_div", &ufs_tegra->ufshc_clk_div);
if (err) {
dev_err(dev, "%s: ufshc_div clock get failed: Err %d",
__func__, err);
goto out;
}
err = ufs_tegra_host_clk_get(dev,
"isc_cpu", &ufs_tegra->isc_cpu);
if (err) {
dev_err(dev, "%s: isc_cpu clock get failed: Err %d",
__func__, err);
goto out;
}
err = ufs_tegra_host_clk_get(dev,
"utmi_pll1", &ufs_tegra->utmi_pll1);
if (err) {
dev_err(dev, "%s: utmi_pll1 clock get failed: Err %d",
__func__, err);
goto out;
}
} }
if (err)
goto out;
if (ufs_tegra->soc->chip_id != TEGRA264) { if (ufs_tegra->soc->chip_id != TEGRA264) {
err = ufs_tegra_host_clk_get(dev, err = ufs_tegra_host_clk_get(dev,
"clk_m", &ufs_tegra->ufsdev_parent); "clk_m", &ufs_tegra->ufsdev_parent);
@@ -854,12 +880,20 @@ static int ufs_tegra_enable_ufs_clks(struct ufs_tegra_host *ufs_tegra)
*/ */
err = clk_set_parent(ufs_tegra->ufshc_clk, err = clk_set_parent(ufs_tegra->ufshc_clk,
ufs_tegra->ufshc_clk_div); ufs_tegra->ufshc_clk_div);
if (err) {
pr_err("\n ufshc_clk clk_set_parent failed\n");
goto out;
}
err = clk_set_parent(ufs_tegra->isc_cpu,
ufs_tegra->utmi_pll1);
} else { } else {
err = clk_set_parent(ufs_tegra->ufshc_clk, err = clk_set_parent(ufs_tegra->ufshc_clk,
ufs_tegra->ufshc_parent); ufs_tegra->ufshc_parent);
} }
if (err) { if (err) {
pr_err("Function clk_set_parent failed\n"); pr_err("\n clk_set_parent failed\n");
goto out; goto out;
} }
if (ufs_tegra->soc->chip_id != TEGRA264) { if (ufs_tegra->soc->chip_id != TEGRA264) {

View File

@@ -389,6 +389,8 @@ struct ufs_tegra_host {
struct clk *ufs_uphy_pll3; struct clk *ufs_uphy_pll3;
struct clk *pllrefe_clk; struct clk *pllrefe_clk;
struct clk *mphy_l0_uphy_tx_fifo; struct clk *mphy_l0_uphy_tx_fifo;
struct clk *isc_cpu;
struct clk *utmi_pll1;
struct regulator *vddio_ufs; struct regulator *vddio_ufs;
struct regulator *vddio_ufs_ap; struct regulator *vddio_ufs_ap;
struct pinctrl *ufs_pinctrl; struct pinctrl *ufs_pinctrl;