disp: msm: dsi: fix dsi pll dividers

Updating DSI PLL byte clock dividers as per HW recommendation.

Change-Id: I9dbe7a04f813676a7690d0cadc52d7ed19ca4871
Signed-off-by: Santosh Kumar Aenugu <santoshkumar@codeaurora.org>
This commit is contained in:
Santosh Kumar Aenugu
2021-04-22 12:08:24 -07:00
parent 72f7dfe428
commit 6add9d0fc0
3 changed files with 88 additions and 27 deletions

View File

@@ -190,8 +190,8 @@ struct dsi_pll_vco_calc {
}; };
struct dsi_pll_div_table { struct dsi_pll_div_table {
u32 min_hz; u64 min_hz;
u32 max_hz; u64 max_hz;
int pll_div; int pll_div;
int phy_div; int phy_div;
}; };

View File

@@ -1004,16 +1004,29 @@ static int dsi_pll_5nm_set_byteclk_div(struct dsi_pll_resource *pll,
int table_size; int table_size;
u32 pll_post_div = 0, phy_post_div = 0; u32 pll_post_div = 0, phy_post_div = 0;
struct dsi_pll_div_table *table; struct dsi_pll_div_table *table;
u32 bitclk_rate; u64 bitclk_rate;
u64 const phy_rate_split = 1500000000UL;
if (pll->type == DSI_PHY_TYPE_DPHY) { if (pll->type == DSI_PHY_TYPE_DPHY) {
bitclk_rate = pll->byteclk_rate * 8; bitclk_rate = pll->byteclk_rate * 8;
table_size = ARRAY_SIZE(pll_5nm_dphy);
table = pll_5nm_dphy; if (bitclk_rate <= phy_rate_split) {
table = pll_5nm_dphy_lb;
table_size = ARRAY_SIZE(pll_5nm_dphy_lb);
} else {
table = pll_5nm_dphy_hb;
table_size = ARRAY_SIZE(pll_5nm_dphy_hb);
}
} else { } else {
bitclk_rate = pll->byteclk_rate * 7; bitclk_rate = pll->byteclk_rate * 7;
table_size = ARRAY_SIZE(pll_5nm_cphy);
table = pll_5nm_cphy; if (bitclk_rate <= phy_rate_split) {
table = pll_5nm_cphy_lb;
table_size = ARRAY_SIZE(pll_5nm_cphy_lb);
} else {
table = pll_5nm_cphy_hb;
table_size = ARRAY_SIZE(pll_5nm_cphy_hb);
}
} }
for (i = 0; i < table_size; i++) { for (i = 0; i < table_size; i++) {

View File

@@ -225,26 +225,74 @@ enum {
DSI_PLL_MAX DSI_PLL_MAX
}; };
struct dsi_pll_div_table pll_5nm_dphy[] = { struct dsi_pll_div_table pll_5nm_dphy_lb[] = {
{60000000, 86670000, 2, 5}, {27270000, 30000000, 2, 11},
{86670000, 97500000, 1, 9}, {30000000, 33330000, 4, 5},
{97500000, 111430000, 8, 1}, {33330000, 37500000, 2, 9},
{111430000, 130000000, 1, 7}, {37500000, 40000000, 8, 2},
{130000000, 156000000, 2, 3}, {40000000, 42860000, 1, 15},
{150000000, 195000000, 1, 5}, {42860000, 46150000, 2, 7},
{195000000, 260000000, 4, 1}, {46150000, 50000000, 1, 13},
{260000000, 390000000, 1, 3}, {50000000, 54550000, 4, 3},
{390000000, 780000000, 2, 1}, {54550000, 60000000, 1, 11},
{780000000, 3500000000, 1, 1} {60000000, 66670000, 2, 5},
{66670000, 75000000, 1, 9},
{75000000, 85710000, 8, 1},
{85710000, 100000000, 1, 7},
{100000000, 120000000, 2, 3},
{120000000, 150000000, 1, 5},
{150000000, 200000000, 4, 1},
{200000000, 300000000, 1, 3},
{300000000, 600000000, 2, 1},
{600000000, 1500000000, 1, 1}
}; };
struct dsi_pll_div_table pll_5nm_cphy[] = { struct dsi_pll_div_table pll_5nm_dphy_hb[] = {
{60000000, 97500000, 2, 5}, {68180000, 75000000, 2, 11},
{97500000, 130000000, 8, 1}, {75000000, 83330000, 4, 5},
{130000000, 156000000, 2, 3}, {83330000, 93750000, 2, 9},
{156000000, 195000000, 1, 5}, {93750000, 100000000, 8, 2},
{195000000, 260000000, 4, 1}, {100000000, 107140000, 1, 15},
{260000000, 390000000, 1, 3}, {107140000, 115380000, 2, 7},
{390000000, 780000000, 2, 1}, {115380000, 125000000, 1, 13},
{780000000, 3500000000, 1, 1} {125000000, 136360000, 4, 3},
{136360000, 150000000, 1, 11},
{150000000, 166670000, 2, 5},
{166670000, 187500000, 1, 9},
{187500000, 214290000, 8, 1},
{214290000, 250000000, 1, 7},
{250000000, 300000000, 2, 3},
{300000000, 375000000, 1, 5},
{375000000, 500000000, 4, 1},
{500000000, 750000000, 1, 3},
{750000000, 1500000000, 2, 1},
{1500000000, 5000000000, 1, 1}
};
struct dsi_pll_div_table pll_5nm_cphy_lb[] = {
{30000000, 37500000, 4, 5},
{37500000, 50000000, 8, 2},
{50000000, 60000000, 4, 3},
{60000000, 75000000, 2, 5},
{75000000, 100000000, 8, 1},
{100000000, 120000000, 2, 3},
{120000000, 150000000, 1, 5},
{150000000, 200000000, 4, 1},
{200000000, 300000000, 1, 3},
{300000000, 600000000, 2, 1},
{600000000, 1500000000, 1, 1}
};
struct dsi_pll_div_table pll_5nm_cphy_hb[] = {
{75000000, 93750000, 4, 5},
{93750000, 12500000, 8, 2},
{125000000, 150000000, 4, 3},
{150000000, 187500000, 2, 5},
{187500000, 250000000, 8, 1},
{250000000, 300000000, 2, 3},
{300000000, 375000000, 1, 5},
{375000000, 500000000, 4, 1},
{500000000, 750000000, 1, 3},
{750000000, 1500000000, 2, 1},
{1500000000, 5000000000, 1, 1}
}; };