static void dw_mipi_dsi_set_mode(struct dw_mipi_dsi *dsi,
enum dw_mipi_dsi_mode mode)
{
- if (mode == DSI_COMMAND_MODE)
+ if (mode == DSI_COMMAND_MODE) {
dsi_write(dsi, DSI_MODE_CFG, ENABLE_CMD_MODE);
- else
+ } else {
+ dsi_write(dsi, DSI_PWR_UP, RESET);
+ dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS);
dsi_write(dsi, DSI_MODE_CFG, ENABLE_VIDEO_MODE);
+ dsi_write(dsi, DSI_PWR_UP, POWERUP);
+ }
}
static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi)
regmap_write(dsi->grf_regmap, pdata->grf_switch_reg, val);
- if (pdata->grf_dsi0_mode_reg)
- regmap_write(dsi->grf_regmap, pdata->grf_dsi0_mode_reg,
- pdata->grf_dsi0_mode);
-
}
dev_info(dsi->dev, "vop %s output to dsi0\n", (vop_id) ? "LIT" : "BIG");
return;
}
+ if (dsi->dphy.phy) {
+ rockchip_dsi_set_hs_clk(dsi);
+ phy_power_on(dsi->dphy.phy);
+ } else {
+ dw_mipi_dsi_get_lane_bps(dsi);
+ }
+
pm_runtime_get_sync(dsi->dev);
if (dsi->rst) {
udelay(10);
}
- if (dsi->dphy.phy) {
- rockchip_dsi_set_hs_clk(dsi);
- phy_power_on(dsi->dphy.phy);
- } else {
- dw_mipi_dsi_get_lane_bps(dsi);
- }
-
dev_info(dsi->dev, "final DSI-Link bandwidth: %u x %d Mbps\n",
dsi->lane_mbps, dsi->lanes);
}
static void rockchip_dsi_host_init(struct dw_mipi_dsi *dsi)
{
+ const struct dw_mipi_dsi_plat_data *pdata = dsi->pdata;
+
dw_mipi_dsi_init(dsi);
dw_mipi_dsi_dpi_config(dsi, &dsi->mode);
dw_mipi_dsi_packet_handler_config(dsi);
dw_mipi_dsi_dphy_timing_config(dsi);
dw_mipi_dsi_dphy_interface_config(dsi);
dw_mipi_dsi_clear_err(dsi);
+
+ if (pdata->grf_dsi0_mode_reg)
+ regmap_write(dsi->grf_regmap, pdata->grf_dsi0_mode_reg,
+ pdata->grf_dsi0_mode);
+
+
}
static void rockchip_dsi_init(struct dw_mipi_dsi *dsi)
static void rockchip_dsi_enable(struct dw_mipi_dsi *dsi)
{
- dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS);
dw_mipi_dsi_set_mode(dsi, DSI_VIDEO_MODE);
clk_disable_unprepare(dsi->dphy.ref_clk);
clk_disable_unprepare(dsi->pclk);
vop_id = drm_of_encoder_active_endpoint_id(dsi->dev->of_node, encoder);
- rockchip_dsi_grf_config(dsi, vop_id);
rockchip_dsi_init(dsi);
if (dsi->panel)
if (dsi->panel)
drm_panel_enable(dsi->panel);
+
+ rockchip_dsi_grf_config(dsi, vop_id);
}
static int