Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.c +20 −11 Original line number Diff line number Diff line Loading @@ -538,10 +538,9 @@ static int dsi_display_status_reg_read(struct dsi_display *display) } } exit: if (rc <= 0) { dsi_display_ctrl_irq_update(display, false); /* mask only error interrupts */ if (rc <= 0) dsi_display_mask_ctrl_error_interrupts(display); } dsi_display_cmd_engine_disable(display); done: Loading Loading @@ -3593,16 +3592,24 @@ static int _dsi_display_dev_deinit(struct dsi_display *display) } /** * dsi_display_splash_res_init() - Initialize resources for continuous splash * @display: Pointer to dsi display * dsi_display_cont_splash_config() - Initialize resources for continuous splash * @dsi_display: Pointer to dsi display * Returns: Zero on success */ static int dsi_display_splash_res_init(struct dsi_display *display) int dsi_display_cont_splash_config(void *dsi_display) { struct dsi_display *display = dsi_display; int rc = 0; /* Vote for gdsc required to read register address space */ if (!display) { pr_err("invalid input display param\n"); return -EINVAL; } mutex_lock(&display->display_lock); /* Vote for gdsc required to read register address space */ display->cont_splash_client = sde_power_client_create(display->phandle, "cont_splash_client"); rc = sde_power_resource_enable(display->phandle, Loading @@ -3610,6 +3617,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) if (rc) { pr_err("failed to vote gdsc for continuous splash, rc=%d\n", rc); mutex_unlock(&display->display_lock); return -EINVAL; } Loading @@ -3625,6 +3633,9 @@ static int dsi_display_splash_res_init(struct dsi_display *display) dsi_display_clk_mngr_update_splash_status(display->clk_mngr, display->is_cont_splash_enabled); /* Set up ctrl isr before enabling core clk */ dsi_display_ctrl_isr_configure(display, true); /* Vote for Core clk and link clk. Votes on ctrl and phy * regulator are inplicit from pre clk on callback */ Loading @@ -3645,6 +3656,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) } dsi_config_host_engine_state_for_cont_splash(display); mutex_unlock(&display->display_lock); return rc; Loading @@ -3653,6 +3665,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) DSI_ALL_CLKS, DSI_CLK_OFF); clk_manager_update: dsi_display_ctrl_isr_configure(display, false); /* Update splash status for clock manager */ dsi_display_clk_mngr_update_splash_status(display->clk_mngr, false); Loading @@ -3661,6 +3674,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) (void)sde_power_resource_enable(display->phandle, display->cont_splash_client, false); display->is_cont_splash_enabled = false; mutex_unlock(&display->display_lock); return rc; } Loading Loading @@ -4106,11 +4120,6 @@ static int dsi_display_bind(struct device *dev, } } /* Initialize resources for continuous splash */ rc = dsi_display_splash_res_init(display); if (rc) pr_err("Continuous splash resource init failed, rc=%d\n", rc); goto error; error_host_deinit: Loading drivers/gpu/drm/msm/dsi-staging/dsi_display.h +7 −0 Original line number Diff line number Diff line Loading @@ -622,4 +622,11 @@ enum dsi_pixel_format dsi_display_get_dst_format( struct drm_connector *connector, void *display); /** * dsi_display_cont_splash_config() - initialize splash resources * @display: Handle to display * * Return: Zero on Success */ int dsi_display_cont_splash_config(void *display); #endif /* _DSI_DISPLAY_H_ */ drivers/gpu/drm/msm/sde/sde_connector.h +7 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,13 @@ struct sde_connector_ops { * Returns: Zero on success, negative error code for failures */ void (*pre_destroy)(struct drm_connector *connector, void *display); /** * cont_splash_config - initialize splash resources * @display: Pointer to private display handle * Returns: zero for success, negetive for failure */ int (*cont_splash_config)(void *display); }; /** Loading drivers/gpu/drm/msm/sde/sde_kms.c +8 −0 Original line number Diff line number Diff line Loading @@ -1260,6 +1260,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .check_status = dsi_display_check_status, .enable_event = dsi_conn_enable_event, .cmd_transfer = dsi_display_cmd_transfer, .cont_splash_config = dsi_display_cont_splash_config, }; static const struct sde_connector_ops wb_ops = { .post_init = sde_wb_connector_post_init, Loading @@ -1273,6 +1274,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .get_dst_format = NULL, .check_status = NULL, .cmd_transfer = NULL, .cont_splash_config = NULL, }; static const struct sde_connector_ops dp_ops = { .post_init = dp_connector_post_init, Loading @@ -1285,6 +1287,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .check_status = NULL, .config_hdr = dp_connector_config_hdr, .cmd_transfer = NULL, .cont_splash_config = NULL, }; struct msm_display_info info; struct drm_encoder *encoder; Loading Loading @@ -2272,6 +2275,7 @@ static int sde_kms_cont_splash_config(struct msm_kms *kms) struct list_head *connector_list = NULL; struct drm_connector *conn_iter = NULL; struct drm_connector *connector = NULL; struct sde_connector *sde_conn = NULL; if (!kms) { SDE_ERROR("invalid kms\n"); Loading Loading @@ -2383,6 +2387,10 @@ static int sde_kms_cont_splash_config(struct msm_kms *kms) sde_crtc_update_cont_splash_mixer_settings(crtc); sde_conn = to_sde_connector(connector); if (sde_conn && sde_conn->ops.cont_splash_config) sde_conn->ops.cont_splash_config(sde_conn->display); return rc; } Loading Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.c +20 −11 Original line number Diff line number Diff line Loading @@ -538,10 +538,9 @@ static int dsi_display_status_reg_read(struct dsi_display *display) } } exit: if (rc <= 0) { dsi_display_ctrl_irq_update(display, false); /* mask only error interrupts */ if (rc <= 0) dsi_display_mask_ctrl_error_interrupts(display); } dsi_display_cmd_engine_disable(display); done: Loading Loading @@ -3593,16 +3592,24 @@ static int _dsi_display_dev_deinit(struct dsi_display *display) } /** * dsi_display_splash_res_init() - Initialize resources for continuous splash * @display: Pointer to dsi display * dsi_display_cont_splash_config() - Initialize resources for continuous splash * @dsi_display: Pointer to dsi display * Returns: Zero on success */ static int dsi_display_splash_res_init(struct dsi_display *display) int dsi_display_cont_splash_config(void *dsi_display) { struct dsi_display *display = dsi_display; int rc = 0; /* Vote for gdsc required to read register address space */ if (!display) { pr_err("invalid input display param\n"); return -EINVAL; } mutex_lock(&display->display_lock); /* Vote for gdsc required to read register address space */ display->cont_splash_client = sde_power_client_create(display->phandle, "cont_splash_client"); rc = sde_power_resource_enable(display->phandle, Loading @@ -3610,6 +3617,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) if (rc) { pr_err("failed to vote gdsc for continuous splash, rc=%d\n", rc); mutex_unlock(&display->display_lock); return -EINVAL; } Loading @@ -3625,6 +3633,9 @@ static int dsi_display_splash_res_init(struct dsi_display *display) dsi_display_clk_mngr_update_splash_status(display->clk_mngr, display->is_cont_splash_enabled); /* Set up ctrl isr before enabling core clk */ dsi_display_ctrl_isr_configure(display, true); /* Vote for Core clk and link clk. Votes on ctrl and phy * regulator are inplicit from pre clk on callback */ Loading @@ -3645,6 +3656,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) } dsi_config_host_engine_state_for_cont_splash(display); mutex_unlock(&display->display_lock); return rc; Loading @@ -3653,6 +3665,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) DSI_ALL_CLKS, DSI_CLK_OFF); clk_manager_update: dsi_display_ctrl_isr_configure(display, false); /* Update splash status for clock manager */ dsi_display_clk_mngr_update_splash_status(display->clk_mngr, false); Loading @@ -3661,6 +3674,7 @@ static int dsi_display_splash_res_init(struct dsi_display *display) (void)sde_power_resource_enable(display->phandle, display->cont_splash_client, false); display->is_cont_splash_enabled = false; mutex_unlock(&display->display_lock); return rc; } Loading Loading @@ -4106,11 +4120,6 @@ static int dsi_display_bind(struct device *dev, } } /* Initialize resources for continuous splash */ rc = dsi_display_splash_res_init(display); if (rc) pr_err("Continuous splash resource init failed, rc=%d\n", rc); goto error; error_host_deinit: Loading
drivers/gpu/drm/msm/dsi-staging/dsi_display.h +7 −0 Original line number Diff line number Diff line Loading @@ -622,4 +622,11 @@ enum dsi_pixel_format dsi_display_get_dst_format( struct drm_connector *connector, void *display); /** * dsi_display_cont_splash_config() - initialize splash resources * @display: Handle to display * * Return: Zero on Success */ int dsi_display_cont_splash_config(void *display); #endif /* _DSI_DISPLAY_H_ */
drivers/gpu/drm/msm/sde/sde_connector.h +7 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,13 @@ struct sde_connector_ops { * Returns: Zero on success, negative error code for failures */ void (*pre_destroy)(struct drm_connector *connector, void *display); /** * cont_splash_config - initialize splash resources * @display: Pointer to private display handle * Returns: zero for success, negetive for failure */ int (*cont_splash_config)(void *display); }; /** Loading
drivers/gpu/drm/msm/sde/sde_kms.c +8 −0 Original line number Diff line number Diff line Loading @@ -1260,6 +1260,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .check_status = dsi_display_check_status, .enable_event = dsi_conn_enable_event, .cmd_transfer = dsi_display_cmd_transfer, .cont_splash_config = dsi_display_cont_splash_config, }; static const struct sde_connector_ops wb_ops = { .post_init = sde_wb_connector_post_init, Loading @@ -1273,6 +1274,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .get_dst_format = NULL, .check_status = NULL, .cmd_transfer = NULL, .cont_splash_config = NULL, }; static const struct sde_connector_ops dp_ops = { .post_init = dp_connector_post_init, Loading @@ -1285,6 +1287,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .check_status = NULL, .config_hdr = dp_connector_config_hdr, .cmd_transfer = NULL, .cont_splash_config = NULL, }; struct msm_display_info info; struct drm_encoder *encoder; Loading Loading @@ -2272,6 +2275,7 @@ static int sde_kms_cont_splash_config(struct msm_kms *kms) struct list_head *connector_list = NULL; struct drm_connector *conn_iter = NULL; struct drm_connector *connector = NULL; struct sde_connector *sde_conn = NULL; if (!kms) { SDE_ERROR("invalid kms\n"); Loading Loading @@ -2383,6 +2387,10 @@ static int sde_kms_cont_splash_config(struct msm_kms *kms) sde_crtc_update_cont_splash_mixer_settings(crtc); sde_conn = to_sde_connector(connector); if (sde_conn && sde_conn->ops.cont_splash_config) sde_conn->ops.cont_splash_config(sde_conn->display); return rc; } Loading