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:
@@ -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;
|
||||||
};
|
};
|
||||||
|
@@ -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++) {
|
||||||
|
@@ -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}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user