drm/bridge: dw-mipi-dsi: dual-channel-dsi: power off dual phy during sleep

Change-Id: Ic3abc81d7a6ffb8016d884ea29b3cb48e983f5f8
Signed-off-by: Guochun Huang <hero.huang@rock-chips.com>
This commit is contained in:
Guochun Huang
2021-09-08 17:49:43 +08:00
committed by Tao Huang
parent e6cd868ed8
commit a1e099fb78

View File

@@ -594,8 +594,14 @@ static void dw_mipi_dsi_set_mode(struct dw_mipi_dsi *dsi,
static void dw_mipi_dsi_disable(struct dw_mipi_dsi *dsi)
{
const struct dw_mipi_dsi_phy_ops *phy_ops = dsi->plat_data->phy_ops;
if (phy_ops->power_off)
phy_ops->power_off(dsi->plat_data->priv_data);
dsi_write(dsi, DSI_PWR_UP, RESET);
dsi_write(dsi, DSI_PHY_RSTZ, PHY_RSTZ);
pm_runtime_put(dsi->dev);
}
static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi)
@@ -852,7 +858,6 @@ static void dw_mipi_dsi_clear_err(struct dw_mipi_dsi *dsi)
static void dw_mipi_dsi_bridge_post_disable(struct drm_bridge *bridge)
{
struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
const struct dw_mipi_dsi_phy_ops *phy_ops = dsi->plat_data->phy_ops;
/*
* Switch to command mode before panel-bridge post_disable &
@@ -861,6 +866,8 @@ static void dw_mipi_dsi_bridge_post_disable(struct drm_bridge *bridge)
* before by the drm framework.
*/
dw_mipi_dsi_set_mode(dsi, 0);
if (dsi->slave)
dw_mipi_dsi_set_mode(dsi->slave, 0);
/*
* TODO Only way found to call panel-bridge post_disable &
@@ -871,16 +878,10 @@ static void dw_mipi_dsi_bridge_post_disable(struct drm_bridge *bridge)
if (dsi->panel_bridge->funcs->post_disable)
dsi->panel_bridge->funcs->post_disable(dsi->panel_bridge);
if (phy_ops->power_off)
phy_ops->power_off(dsi->plat_data->priv_data);
if (dsi->slave) {
if (dsi->slave)
dw_mipi_dsi_disable(dsi->slave);
pm_runtime_put(dsi->slave->dev);
}
dw_mipi_dsi_disable(dsi);
pm_runtime_put(dsi->dev);
dw_mipi_dsi_disable(dsi);
}
static unsigned int dw_mipi_dsi_get_lanes(struct dw_mipi_dsi *dsi)