ram: k3-ddrss: Allow use of dt provided initial frequency
Allow device tree to provide ti,ddr-freq0 to be used as the initial DDR frequency that is set for lpddr4 before initialization of the controller. Make this optional and continue to use bypass frequency if ti,ddr-freq0 is not provided. Signed-off-by: Dave Gerlach <d-gerlach@ti.com> [praneeth@ti.com: fix minor build error] Signed-off-by: Praneeth Bajjuri <praneeth@ti.com>
This commit is contained in:
parent
c66dd9b846
commit
d7ca60b875
|
|
@ -35,6 +35,7 @@ struct k3_ddrss_desc {
|
|||
struct power_domain ddrdata_pwrdmn;
|
||||
struct clk ddr_clk;
|
||||
struct clk osc_clk;
|
||||
u32 ddr_freq0;
|
||||
u32 ddr_freq1;
|
||||
u32 ddr_freq2;
|
||||
u32 ddr_fhs_cnt;
|
||||
|
|
@ -124,9 +125,7 @@ static void k3_lpddr4_freq_update(void)
|
|||
else if (req_type == 2)
|
||||
clk_set_rate(&ddrss->ddr_clk, ddrss->ddr_freq2);
|
||||
else if (req_type == 0)
|
||||
/* Put DDR pll in bypass mode */
|
||||
clk_set_rate(&ddrss->ddr_clk,
|
||||
clk_get_rate(&ddrss->osc_clk));
|
||||
clk_set_rate(&ddrss->ddr_clk, ddrss->ddr_freq0);
|
||||
else
|
||||
printf("%s: Invalid freq request type\n", __func__);
|
||||
|
||||
|
|
@ -175,8 +174,7 @@ static int k3_ddrss_init_freq(struct k3_ddrss_desc *ddrss)
|
|||
ret = clk_set_rate(&ddrss->ddr_clk, ddrss->ddr_freq1);
|
||||
break;
|
||||
case DENALI_CTL_0_DRAM_CLASS_LPDDR4:
|
||||
/* Set to bypass frequency for LPDDR4*/
|
||||
ret = clk_set_rate(&ddrss->ddr_clk, clk_get_rate(&ddrss->osc_clk));
|
||||
ret = clk_set_rate(&ddrss->ddr_clk, ddrss->ddr_freq0);
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
|
|
@ -274,6 +272,14 @@ static int k3_ddrss_ofdata_to_priv(struct udevice *dev)
|
|||
if (ret)
|
||||
dev_err(dev, "clk get failed for osc clk %d\n", ret);
|
||||
|
||||
ret = dev_read_u32(dev, "ti,ddr-freq0", &ddrss->ddr_freq0);
|
||||
if (ret) {
|
||||
ddrss->ddr_freq0 = clk_get_rate(&ddrss->osc_clk);
|
||||
dev_dbg(dev,
|
||||
"ddr freq0 not populated, using bypass frequency.\n",
|
||||
ret);
|
||||
}
|
||||
|
||||
ret = dev_read_u32(dev, "ti,ddr-freq1", &ddrss->ddr_freq1);
|
||||
if (ret)
|
||||
dev_err(dev, "ddr freq1 not populated %d\n", ret);
|
||||
|
|
|
|||
Loading…
Reference in New Issue