mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 04:10:18 +09:00
drm/rockchip: dsi: fix loader protect for dual-channel mode
Change-Id: I2d5111269393b1eb77f9fccfa28b20fe366ad7d6 Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
@@ -1143,13 +1143,6 @@ static void dw_mipi_dsi_encoder_disable(struct drm_encoder *encoder)
|
||||
dw_mipi_dsi_post_disable(dsi);
|
||||
}
|
||||
|
||||
static bool dw_mipi_dsi_encoder_mode_fixup(struct drm_encoder *encoder,
|
||||
const struct drm_display_mode *mode,
|
||||
struct drm_display_mode *adjusted_mode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static void dw_mipi_dsi_pre_init(struct dw_mipi_dsi *dsi)
|
||||
{
|
||||
if (dsi->dphy.phy)
|
||||
@@ -1277,9 +1270,33 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dw_mipi_dsi_loader_protect(struct dw_mipi_dsi *dsi, bool on)
|
||||
{
|
||||
if (on)
|
||||
pm_runtime_get_sync(dsi->dev);
|
||||
else
|
||||
pm_runtime_put(dsi->dev);
|
||||
|
||||
if (dsi->slave)
|
||||
dw_mipi_dsi_loader_protect(dsi->slave, on);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dw_mipi_dsi_encoder_loader_protect(struct drm_encoder *encoder,
|
||||
bool on)
|
||||
{
|
||||
struct dw_mipi_dsi *dsi = encoder_to_dsi(encoder);
|
||||
|
||||
if (dsi->panel)
|
||||
drm_panel_loader_protect(dsi->panel, on);
|
||||
|
||||
return dw_mipi_dsi_loader_protect(dsi, on);
|
||||
}
|
||||
|
||||
static const struct drm_encoder_helper_funcs
|
||||
dw_mipi_dsi_encoder_helper_funcs = {
|
||||
.mode_fixup = dw_mipi_dsi_encoder_mode_fixup,
|
||||
.loader_protect = dw_mipi_dsi_encoder_loader_protect,
|
||||
.mode_set = dw_mipi_dsi_encoder_mode_set,
|
||||
.enable = dw_mipi_dsi_encoder_enable,
|
||||
.disable = dw_mipi_dsi_encoder_disable,
|
||||
@@ -1305,23 +1322,8 @@ static struct drm_encoder *dw_mipi_dsi_connector_best_encoder(
|
||||
return &dsi->encoder;
|
||||
}
|
||||
|
||||
static int dw_mipi_loader_protect(struct drm_connector *connector, bool on)
|
||||
{
|
||||
struct dw_mipi_dsi *dsi = con_to_dsi(connector);
|
||||
|
||||
if (dsi->panel)
|
||||
drm_panel_loader_protect(dsi->panel, on);
|
||||
if (on)
|
||||
pm_runtime_get_sync(dsi->dev);
|
||||
else
|
||||
pm_runtime_put(dsi->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct drm_connector_helper_funcs
|
||||
dw_mipi_dsi_connector_helper_funcs = {
|
||||
.loader_protect = dw_mipi_loader_protect,
|
||||
.get_modes = dw_mipi_dsi_connector_get_modes,
|
||||
.best_encoder = dw_mipi_dsi_connector_best_encoder,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user