hc
2023-11-06 9df731a176aab8e03b984b681b1bea01ccff6644
u-boot/drivers/video/drm/phy-rockchip-samsung-hdptx-hdmi.c
....@@ -1278,9 +1278,9 @@
12781278 hdptx_write(hdptx, CMN_REG0043, 0x00);
12791279 hdptx_write(hdptx, CMN_REG0044, 0x46);
12801280 hdptx_write(hdptx, CMN_REG0045, 0x24);
1281
- hdptx_write(hdptx, CMN_REG0046, 0xff);
1281
+ hdptx_write(hdptx, CMN_REG0046, 0xdd);
12821282 hdptx_write(hdptx, CMN_REG0047, 0x00);
1283
- hdptx_write(hdptx, CMN_REG0048, 0x44);
1283
+ hdptx_write(hdptx, CMN_REG0048, 0x11);
12841284 hdptx_write(hdptx, CMN_REG0049, 0xfa);
12851285 hdptx_write(hdptx, CMN_REG004A, 0x08);
12861286 hdptx_write(hdptx, CMN_REG004B, 0x00);
....@@ -1457,6 +1457,13 @@
14571457 hdptx_write(hdptx, LANE_REG0616, 0x02);
14581458 hdptx_write(hdptx, LANE_REG061B, 0x01);
14591459 hdptx_write(hdptx, LANE_REG061E, 0x08);
1460
+
1461
+ /* fix Inter-Pair Skew exceed the limits */
1462
+ hdptx_write(hdptx, LANE_REG031E, 0x02);
1463
+ hdptx_write(hdptx, LANE_REG041E, 0x02);
1464
+ hdptx_write(hdptx, LANE_REG051E, 0x02);
1465
+ hdptx_write(hdptx, LANE_REG061E, 0x0a);
1466
+
14601467 hdptx_write(hdptx, LANE_REG061F, 0x15);
14611468 hdptx_write(hdptx, LANE_REG0620, 0xa0);
14621469
....@@ -1705,6 +1712,33 @@
17051712 hdptx_write(hdptx, LANE_REG061F, 0x15);
17061713 hdptx_write(hdptx, LANE_REG0620, 0xa0);
17071714
1715
+ hdptx_write(hdptx, LANE_REG031E, 0x02);
1716
+ hdptx_write(hdptx, LANE_REG041E, 0x02);
1717
+ hdptx_write(hdptx, LANE_REG051E, 0x02);
1718
+ hdptx_write(hdptx, LANE_REG061E, 0x02);
1719
+
1720
+ hdptx_write(hdptx, LANE_REG0303, 0x2f);
1721
+ hdptx_write(hdptx, LANE_REG0403, 0x2f);
1722
+ hdptx_write(hdptx, LANE_REG0503, 0x2f);
1723
+ hdptx_write(hdptx, LANE_REG0603, 0x2f);
1724
+ hdptx_write(hdptx, LANE_REG0305, 0x03);
1725
+ hdptx_write(hdptx, LANE_REG0405, 0x03);
1726
+ hdptx_write(hdptx, LANE_REG0505, 0x03);
1727
+ hdptx_write(hdptx, LANE_REG0605, 0x03);
1728
+ hdptx_write(hdptx, LANE_REG0306, 0xfc);
1729
+ hdptx_write(hdptx, LANE_REG0406, 0xfc);
1730
+ hdptx_write(hdptx, LANE_REG0506, 0xfc);
1731
+ hdptx_write(hdptx, LANE_REG0606, 0xfc);
1732
+
1733
+ hdptx_write(hdptx, LANE_REG0305, 0x4f);
1734
+ hdptx_write(hdptx, LANE_REG0405, 0x4f);
1735
+ hdptx_write(hdptx, LANE_REG0505, 0x4f);
1736
+ hdptx_write(hdptx, LANE_REG0605, 0x4f);
1737
+ hdptx_write(hdptx, LANE_REG0304, 0x14);
1738
+ hdptx_write(hdptx, LANE_REG0404, 0x14);
1739
+ hdptx_write(hdptx, LANE_REG0504, 0x14);
1740
+ hdptx_write(hdptx, LANE_REG0604, 0x14);
1741
+
17081742 return hdptx_post_enable_lane(hdptx);
17091743 }
17101744
....@@ -1774,6 +1808,33 @@
17741808 hdptx_write(hdptx, LANE_REG061B, 0x01);
17751809 hdptx_write(hdptx, LANE_REG061F, 0x15);
17761810 hdptx_write(hdptx, LANE_REG0620, 0xa0);
1811
+
1812
+ hdptx_write(hdptx, LANE_REG031E, 0x02);
1813
+ hdptx_write(hdptx, LANE_REG041E, 0x02);
1814
+ hdptx_write(hdptx, LANE_REG051E, 0x02);
1815
+ hdptx_write(hdptx, LANE_REG061E, 0x02);
1816
+
1817
+ hdptx_write(hdptx, LANE_REG0303, 0x2f);
1818
+ hdptx_write(hdptx, LANE_REG0403, 0x2f);
1819
+ hdptx_write(hdptx, LANE_REG0503, 0x2f);
1820
+ hdptx_write(hdptx, LANE_REG0603, 0x2f);
1821
+ hdptx_write(hdptx, LANE_REG0305, 0x03);
1822
+ hdptx_write(hdptx, LANE_REG0405, 0x03);
1823
+ hdptx_write(hdptx, LANE_REG0505, 0x03);
1824
+ hdptx_write(hdptx, LANE_REG0605, 0x03);
1825
+ hdptx_write(hdptx, LANE_REG0306, 0xfc);
1826
+ hdptx_write(hdptx, LANE_REG0406, 0xfc);
1827
+ hdptx_write(hdptx, LANE_REG0506, 0xfc);
1828
+ hdptx_write(hdptx, LANE_REG0606, 0xfc);
1829
+
1830
+ hdptx_write(hdptx, LANE_REG0305, 0x4f);
1831
+ hdptx_write(hdptx, LANE_REG0405, 0x4f);
1832
+ hdptx_write(hdptx, LANE_REG0505, 0x4f);
1833
+ hdptx_write(hdptx, LANE_REG0605, 0x4f);
1834
+ hdptx_write(hdptx, LANE_REG0304, 0x14);
1835
+ hdptx_write(hdptx, LANE_REG0404, 0x14);
1836
+ hdptx_write(hdptx, LANE_REG0504, 0x14);
1837
+ hdptx_write(hdptx, LANE_REG0604, 0x14);
17771838
17781839 return hdptx_post_enable_lane(hdptx);
17791840 }
....@@ -1951,12 +2012,14 @@
19512012
19522013 subnode = ofnode_find_subnode(parent->node, "clk-port");
19532014 if (!ofnode_valid(subnode)) {
1954
- printf("%s: no subnode for %s", __func__, parent->name);
2015
+ free(str);
2016
+ printf("%s: no subnode for %s\n", __func__, parent->name);
19552017 return -ENXIO;
19562018 }
19572019
19582020 ret = device_bind_driver_to_node(parent, "clk_hdptx", str, subnode, &child);
19592021 if (ret) {
2022
+ free(str);
19602023 printf("%s: clk-port cannot bind its driver\n", __func__);
19612024 return ret;
19622025 }
....@@ -2019,18 +2082,6 @@
20192082 new_rate = rate;
20202083 priv->rate = rate;
20212084 }
2022
- }
2023
- } else {
2024
- if (!hdptx_ropll_cmn_config(hdptx, rate)) {
2025
- new_rate = rate;
2026
- priv->rate = rate;
2027
- }
2028
- }
2029
-
2030
- if (rate > (HDMI20_MAX_RATE / 100)) {
2031
- if (!hdptx_lcpll_cmn_config(hdptx, rate)) {
2032
- new_rate = rate;
2033
- priv->rate = rate;
20342085 }
20352086 } else {
20362087 if (!hdptx_ropll_cmn_config(hdptx, rate)) {