207 lines
4.8 KiB
Diff
207 lines
4.8 KiB
Diff
|
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
index fe4f9556239ac..cb43e7b47157d 100644
|
||
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
@@ -91,80 +91,88 @@ static struct rockchip_hdmi *to_rockchip_hdmi(struct drm_encoder *encoder)
|
||
|
|
||
|
static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
||
|
{
|
||
|
- 27000000, {
|
||
|
- { 0x00b3, 0x0000},
|
||
|
- { 0x2153, 0x0000},
|
||
|
- { 0x40f3, 0x0000}
|
||
|
+ 30666000, {
|
||
|
+ { 0x00b3, 0x0000 },
|
||
|
+ { 0x2153, 0x0000 },
|
||
|
+ { 0x40f3, 0x0000 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 36000000, {
|
||
|
- { 0x00b3, 0x0000},
|
||
|
- { 0x2153, 0x0000},
|
||
|
- { 0x40f3, 0x0000}
|
||
|
+ }, {
|
||
|
+ 36800000, {
|
||
|
+ { 0x00b3, 0x0000 },
|
||
|
+ { 0x2153, 0x0000 },
|
||
|
+ { 0x40a2, 0x0001 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 40000000, {
|
||
|
- { 0x00b3, 0x0000},
|
||
|
- { 0x2153, 0x0000},
|
||
|
- { 0x40f3, 0x0000}
|
||
|
+ }, {
|
||
|
+ 46000000, {
|
||
|
+ { 0x00b3, 0x0000 },
|
||
|
+ { 0x2142, 0x0001 },
|
||
|
+ { 0x40a2, 0x0001 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 54000000, {
|
||
|
- { 0x0072, 0x0001},
|
||
|
- { 0x2142, 0x0001},
|
||
|
- { 0x40a2, 0x0001},
|
||
|
+ }, {
|
||
|
+ 61333000, {
|
||
|
+ { 0x0072, 0x0001 },
|
||
|
+ { 0x2142, 0x0001 },
|
||
|
+ { 0x40a2, 0x0001 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 65000000, {
|
||
|
- { 0x0072, 0x0001},
|
||
|
- { 0x2142, 0x0001},
|
||
|
- { 0x40a2, 0x0001},
|
||
|
+ }, {
|
||
|
+ 73600000, {
|
||
|
+ { 0x0072, 0x0001 },
|
||
|
+ { 0x2142, 0x0001 },
|
||
|
+ { 0x4061, 0x0002 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 66000000, {
|
||
|
- { 0x013e, 0x0003},
|
||
|
- { 0x217e, 0x0002},
|
||
|
- { 0x4061, 0x0002}
|
||
|
+ }, {
|
||
|
+ 92000000, {
|
||
|
+ { 0x0072, 0x0001 },
|
||
|
+ { 0x2145, 0x0002 },
|
||
|
+ { 0x4061, 0x0002 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 74250000, {
|
||
|
- { 0x0072, 0x0001},
|
||
|
- { 0x2145, 0x0002},
|
||
|
- { 0x4061, 0x0002}
|
||
|
+ }, {
|
||
|
+ 122666000, {
|
||
|
+ { 0x0051, 0x0002 },
|
||
|
+ { 0x2145, 0x0002 },
|
||
|
+ { 0x4061, 0x0002 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 83500000, {
|
||
|
- { 0x0072, 0x0001},
|
||
|
+ }, {
|
||
|
+ 147200000, {
|
||
|
+ { 0x0051, 0x0002 },
|
||
|
+ { 0x2145, 0x0002 },
|
||
|
+ { 0x4064, 0x0003 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 108000000, {
|
||
|
- { 0x0051, 0x0002},
|
||
|
- { 0x2145, 0x0002},
|
||
|
- { 0x4061, 0x0002}
|
||
|
+ }, {
|
||
|
+ 184000000, {
|
||
|
+ { 0x0051, 0x0002 },
|
||
|
+ { 0x214c, 0x0003 },
|
||
|
+ { 0x4064, 0x0003 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 106500000, {
|
||
|
- { 0x0051, 0x0002},
|
||
|
- { 0x2145, 0x0002},
|
||
|
- { 0x4061, 0x0002}
|
||
|
+ }, {
|
||
|
+ 226666000, {
|
||
|
+ { 0x0040, 0x0003 },
|
||
|
+ { 0x214c, 0x0003 },
|
||
|
+ { 0x4064, 0x0003 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 146250000, {
|
||
|
- { 0x0051, 0x0002},
|
||
|
- { 0x2145, 0x0002},
|
||
|
- { 0x4061, 0x0002}
|
||
|
+ }, {
|
||
|
+ 272000000, {
|
||
|
+ { 0x0040, 0x0003 },
|
||
|
+ { 0x214c, 0x0003 },
|
||
|
+ { 0x5a64, 0x0003 },
|
||
|
},
|
||
|
- }, {
|
||
|
- 148500000, {
|
||
|
- { 0x0051, 0x0003},
|
||
|
- { 0x214c, 0x0003},
|
||
|
- { 0x4064, 0x0003}
|
||
|
+ }, {
|
||
|
+ 340000000, {
|
||
|
+ { 0x0040, 0x0003 },
|
||
|
+ { 0x3b4c, 0x0003 },
|
||
|
+ { 0x5a64, 0x0003 },
|
||
|
},
|
||
|
- }, {
|
||
|
+ }, {
|
||
|
+ 600000000, {
|
||
|
+ { 0x1a40, 0x0003 },
|
||
|
+ { 0x3b4c, 0x0003 },
|
||
|
+ { 0x5a64, 0x0003 },
|
||
|
+ },
|
||
|
+ }, {
|
||
|
~0UL, {
|
||
|
- { 0x00a0, 0x000a },
|
||
|
- { 0x2001, 0x000f },
|
||
|
- { 0x4002, 0x000f },
|
||
|
+ { 0x0000, 0x0000 },
|
||
|
+ { 0x0000, 0x0000 },
|
||
|
+ { 0x0000, 0x0000 },
|
||
|
},
|
||
|
}
|
||
|
};
|
||
|
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
index cb43e7b47157d..a77a46a709809 100644
|
||
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
@@ -259,7 +259,7 @@ dw_hdmi_rockchip_mode_valid(struct dw_hdmi *hdmi, void *data,
|
||
|
int i;
|
||
|
|
||
|
for (i = 0; mpll_cfg[i].mpixelclock != (~0UL); i++) {
|
||
|
- if (pclk == mpll_cfg[i].mpixelclock) {
|
||
|
+ if (pclk <= mpll_cfg[i].mpixelclock) {
|
||
|
valid = true;
|
||
|
break;
|
||
|
}
|
||
|
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
index a77a46a709809..ed480f6548f0e 100644
|
||
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
@@ -180,20 +180,8 @@ static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
||
|
static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
||
|
/* pixelclk bpp8 bpp10 bpp12 */
|
||
|
{
|
||
|
- 40000000, { 0x0018, 0x0018, 0x0018 },
|
||
|
- }, {
|
||
|
- 65000000, { 0x0028, 0x0028, 0x0028 },
|
||
|
- }, {
|
||
|
- 66000000, { 0x0038, 0x0038, 0x0038 },
|
||
|
- }, {
|
||
|
- 74250000, { 0x0028, 0x0038, 0x0038 },
|
||
|
- }, {
|
||
|
- 83500000, { 0x0028, 0x0038, 0x0038 },
|
||
|
- }, {
|
||
|
- 146250000, { 0x0038, 0x0038, 0x0038 },
|
||
|
- }, {
|
||
|
- 148500000, { 0x0000, 0x0038, 0x0038 },
|
||
|
- }, {
|
||
|
+ 600000000, { 0x0000, 0x0000, 0x0000 },
|
||
|
+ }, {
|
||
|
~0UL, { 0x0000, 0x0000, 0x0000},
|
||
|
}
|
||
|
};
|
||
|
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
index ed480f6548f0e..de8720fd7d5d6 100644
|
||
|
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
||
|
@@ -191,6 +191,7 @@ static const struct dw_hdmi_phy_config rockchip_phy_config[] = {
|
||
|
{ 74250000, 0x8009, 0x0004, 0x0272},
|
||
|
{ 148500000, 0x802b, 0x0004, 0x028d},
|
||
|
{ 297000000, 0x8039, 0x0005, 0x028d},
|
||
|
+ { 594000000, 0x8039, 0x0000, 0x019d},
|
||
|
{ ~0UL, 0x0000, 0x0000, 0x0000}
|
||
|
};
|
||
|
|