.. | .. |
---|
42 | 42 | u8 tx_dctrl[] = { 0x00, 0x00, 0x00, 0x04, 0x01 }; |
---|
43 | 43 | void __iomem *lane_base = phy->lane_base; |
---|
44 | 44 | |
---|
| 45 | + if (phy->cfg->quirks & V3_0_0_10NM_OLD_TIMINGS_QUIRK) |
---|
| 46 | + tx_dctrl[3] = 0x02; |
---|
| 47 | + |
---|
45 | 48 | /* Strength ctrl settings */ |
---|
46 | 49 | for (i = 0; i < 5; i++) { |
---|
47 | 50 | dsi_phy_write(lane_base + REG_DSI_10nm_PHY_LN_LPTX_STR_CTRL(i), |
---|
.. | .. |
---|
74 | 77 | tx_dctrl[i]); |
---|
75 | 78 | } |
---|
76 | 79 | |
---|
77 | | - /* Toggle BIT 0 to release freeze I/0 */ |
---|
78 | | - dsi_phy_write(lane_base + REG_DSI_10nm_PHY_LN_TX_DCTRL(3), 0x05); |
---|
79 | | - dsi_phy_write(lane_base + REG_DSI_10nm_PHY_LN_TX_DCTRL(3), 0x04); |
---|
| 80 | + if (!(phy->cfg->quirks & V3_0_0_10NM_OLD_TIMINGS_QUIRK)) { |
---|
| 81 | + /* Toggle BIT 0 to release freeze I/0 */ |
---|
| 82 | + dsi_phy_write(lane_base + REG_DSI_10nm_PHY_LN_TX_DCTRL(3), 0x05); |
---|
| 83 | + dsi_phy_write(lane_base + REG_DSI_10nm_PHY_LN_TX_DCTRL(3), 0x04); |
---|
| 84 | + } |
---|
80 | 85 | } |
---|
81 | 86 | |
---|
82 | 87 | static int dsi_10nm_phy_enable(struct msm_dsi_phy *phy, int src_pll_id, |
---|
.. | .. |
---|
93 | 98 | DBG(""); |
---|
94 | 99 | |
---|
95 | 100 | if (msm_dsi_dphy_timing_calc_v3(timing, clk_req)) { |
---|
96 | | - dev_err(&phy->pdev->dev, |
---|
| 101 | + DRM_DEV_ERROR(&phy->pdev->dev, |
---|
97 | 102 | "%s: D-PHY timing calculation failed\n", __func__); |
---|
98 | 103 | return -EINVAL; |
---|
99 | 104 | } |
---|
.. | .. |
---|
172 | 177 | |
---|
173 | 178 | ret = msm_dsi_pll_set_usecase(phy->pll, phy->usecase); |
---|
174 | 179 | if (ret) { |
---|
175 | | - dev_err(&phy->pdev->dev, "%s: set pll usecase failed, %d\n", |
---|
| 180 | + DRM_DEV_ERROR(&phy->pdev->dev, "%s: set pll usecase failed, %d\n", |
---|
176 | 181 | __func__, ret); |
---|
177 | 182 | return ret; |
---|
178 | 183 | } |
---|
.. | .. |
---|
196 | 201 | phy->lane_base = msm_ioremap(pdev, "dsi_phy_lane", |
---|
197 | 202 | "DSI_PHY_LANE"); |
---|
198 | 203 | if (IS_ERR(phy->lane_base)) { |
---|
199 | | - dev_err(&pdev->dev, "%s: failed to map phy lane base\n", |
---|
| 204 | + DRM_DEV_ERROR(&pdev->dev, "%s: failed to map phy lane base\n", |
---|
200 | 205 | __func__); |
---|
201 | 206 | return -ENOMEM; |
---|
202 | 207 | } |
---|
.. | .. |
---|
221 | 226 | .io_start = { 0xae94400, 0xae96400 }, |
---|
222 | 227 | .num_dsi_phy = 2, |
---|
223 | 228 | }; |
---|
| 229 | + |
---|
| 230 | +const struct msm_dsi_phy_cfg dsi_phy_10nm_8998_cfgs = { |
---|
| 231 | + .type = MSM_DSI_PHY_10NM, |
---|
| 232 | + .src_pll_truthtable = { {false, false}, {true, false} }, |
---|
| 233 | + .reg_cfg = { |
---|
| 234 | + .num = 1, |
---|
| 235 | + .regs = { |
---|
| 236 | + {"vdds", 36000, 32}, |
---|
| 237 | + }, |
---|
| 238 | + }, |
---|
| 239 | + .ops = { |
---|
| 240 | + .enable = dsi_10nm_phy_enable, |
---|
| 241 | + .disable = dsi_10nm_phy_disable, |
---|
| 242 | + .init = dsi_10nm_phy_init, |
---|
| 243 | + }, |
---|
| 244 | + .io_start = { 0xc994400, 0xc996400 }, |
---|
| 245 | + .num_dsi_phy = 2, |
---|
| 246 | + .quirks = V3_0_0_10NM_OLD_TIMINGS_QUIRK, |
---|
| 247 | +}; |
---|