return err;
}
+static void reset_dsi_domains(struct mipi_dsi_info *mipi_dsi, bool reset)
+{
+ /* escape domain */
+ regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
+ DSI_RST_ESC_N, (reset ? 0 : DSI_RST_ESC_N));
+ /* byte domain */
+ regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
+ DSI_RST_BYTE_N, (reset ? 0 : DSI_RST_BYTE_N));
+
+ /* dpi domain */
+ regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
+ DSI_RST_DPI_N, (reset ? 0 : DSI_RST_DPI_N));
+}
+
static int mipi_dsi_enable(struct mxc_dispdrv_handle *disp,
struct fb_info *fbi)
{
mipi_dsi_dpi_init(mipi_dsi);
- /* escape domain */
- regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
- DSI_RST_ESC_N, DSI_RST_ESC_N);
- /* byte domain */
- regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
- DSI_RST_BYTE_N, DSI_RST_BYTE_N);
-
- /* dpi domain */
- regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
- DSI_RST_DPI_N, DSI_RST_DPI_N);
+ reset_dsi_domains(mipi_dsi, 0);
/* display_en */
regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
mipi_dsi->lcd_inited = 0;
}
+
+ reset_dsi_domains(mipi_dsi, 1);
+ regmap_update_bits(mipi_dsi->regmap, SIM_SOPT1CFG,
+ DSI_PLL_EN, 0x0);
}
static const struct of_device_id imx_mipi_dsi_dt_ids[] = {