ddr_bandwidth: freq node value does not match actual [1/1]

PD#SWPL-206552

Problem:
freq node value does not match actual

Solution:
register has only the lower 16 bits used ddr freq

Verify:
local

Change-Id: I74e8f59def96916abd44cd39eaa28b615e3d8fdd
Signed-off-by: qinglin.li <qinglin.li@amlogic.com>
This commit is contained in:
qinglin.li
2025-03-19 14:39:04 +08:00
committed by codewalkerster
parent 66ffdd5595
commit ab86e730aa
7 changed files with 7 additions and 6 deletions
@@ -117,7 +117,7 @@ static void s1a_dmc_range_config(struct ddr_bandwidth *db, int channel,
static unsigned long s1a_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
db->dmc_freq = db->ddr_freq >> 1;
return db->dmc_freq;
@@ -136,7 +136,7 @@ static void s5_dmc_range_config(struct ddr_bandwidth *db, int channel,
static unsigned long s5_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
db->dmc_freq = db->ddr_freq >> 1;
return db->dmc_freq;
@@ -44,7 +44,7 @@ static void s6_dmc_port_config(struct ddr_bandwidth *db, int channel, int port)
static unsigned long s6_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
/* S6 dmc freq = 1/4 ddr freq */
db->dmc_freq = db->ddr_freq >> 2;
@@ -124,7 +124,7 @@ static void s7_dmc_range_config(struct ddr_bandwidth *db, int channel,
static unsigned long s7_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
db->dmc_freq = db->ddr_freq >> 1;
return db->dmc_freq;
@@ -136,7 +136,7 @@ static void t5m_dmc_range_config(struct ddr_bandwidth *db, int channel,
static unsigned long t5m_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
db->dmc_freq = db->ddr_freq >> 1;
if (db->soc_feature & DMC_ASYMMETRY) {
@@ -117,7 +117,7 @@ static void txhd2_dmc_range_config(struct ddr_bandwidth *db, int channel,
static unsigned long txhd2_get_dmc_freq_quick(struct ddr_bandwidth *db)
{
db->ddr_freq = readl(db->pll_reg) * 1000000;
db->ddr_freq = (readl(db->pll_reg) & 0xffff) * 1000000;
db->dmc_freq = db->ddr_freq >> 1;
return db->dmc_freq;
@@ -0,0 +1 @@
SWPL-206552