|
@@ -712,11 +712,21 @@ static void dw_mipi_dsi_disable(struct dw_mipi_dsi *dsi)
|
|
|
|
|
|
static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi)
|
|
|
{
|
|
|
+ /*
|
|
|
+ * The maximum permitted escape clock is 20MHz and it is derived from
|
|
|
+ * lanebyteclk, which is running at "lane_mbps / 8". Thus we want:
|
|
|
+ *
|
|
|
+ * (lane_mbps >> 3) / esc_clk_division < 20
|
|
|
+ * which is:
|
|
|
+ * (lane_mbps >> 3) / 20 > esc_clk_division
|
|
|
+ */
|
|
|
+ u32 esc_clk_division = (dsi->lane_mbps >> 3) / 20 + 1;
|
|
|
+
|
|
|
dsi_write(dsi, DSI_PWR_UP, RESET);
|
|
|
dsi_write(dsi, DSI_PHY_RSTZ, PHY_DISFORCEPLL | PHY_DISABLECLK
|
|
|
| PHY_RSTZ | PHY_SHUTDOWNZ);
|
|
|
dsi_write(dsi, DSI_CLKMGR_CFG, TO_CLK_DIVIDSION(10) |
|
|
|
- TX_ESC_CLK_DIVIDSION(7));
|
|
|
+ TX_ESC_CLK_DIVIDSION(esc_clk_division));
|
|
|
}
|
|
|
|
|
|
static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
|