Loading drivers/gpu/drm/msm/sde/sde_connector.c +19 −0 Original line number Original line Diff line number Diff line Loading @@ -248,6 +248,25 @@ int sde_connector_pre_kickoff(struct drm_connector *connector) return rc; return rc; } } void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable) { struct sde_connector *c_conn; struct dsi_display *display; u32 state = enable ? DSI_CLK_ON : DSI_CLK_OFF; if (!connector) { SDE_ERROR("invalid connector\n"); return; } c_conn = to_sde_connector(connector); display = (struct dsi_display *) c_conn->display; if (display && c_conn->ops.clk_ctrl) c_conn->ops.clk_ctrl(display->mdp_clk_handle, DSI_ALL_CLKS, state); } static void sde_connector_destroy(struct drm_connector *connector) static void sde_connector_destroy(struct drm_connector *connector) { { struct sde_connector *c_conn; struct sde_connector *c_conn; Loading drivers/gpu/drm/msm/sde/sde_connector.h +15 −0 Original line number Original line Diff line number Diff line Loading @@ -150,6 +150,14 @@ struct sde_connector_ops { int (*pre_kickoff)(struct drm_connector *connector, int (*pre_kickoff)(struct drm_connector *connector, void *display, void *display, struct msm_display_kickoff_params *params); struct msm_display_kickoff_params *params); /** * clk_ctrl - perform clk enable/disable on the connector * @handle: Pointer to clk handle * @type: Type of clks * @enable: State of clks */ int (*clk_ctrl)(void *handle, u32 type, u32 state); }; }; /** /** Loading Loading @@ -365,6 +373,13 @@ void sde_connector_complete_commit(struct drm_connector *connector); int sde_connector_get_info(struct drm_connector *connector, int sde_connector_get_info(struct drm_connector *connector, struct msm_display_info *info); struct msm_display_info *info); /** * sde_connector_clk_ctrl - enables/disables the connector clks * @connector: Pointer to drm connector object * @enable: true/false to enable/disable */ void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable); /** /** * sde_connector_trigger_event - indicate that an event has occurred * sde_connector_trigger_event - indicate that an event has occurred * Any callbacks that have been registered against this event will * Any callbacks that have been registered against this event will Loading drivers/gpu/drm/msm/sde/sde_kms.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -566,7 +566,8 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .get_info = dsi_display_get_info, .get_info = dsi_display_get_info, .set_backlight = dsi_display_set_backlight, .set_backlight = dsi_display_set_backlight, .soft_reset = dsi_display_soft_reset, .soft_reset = dsi_display_soft_reset, .pre_kickoff = dsi_conn_pre_kickoff .pre_kickoff = dsi_conn_pre_kickoff, .clk_ctrl = dsi_display_clk_ctrl }; }; static const struct sde_connector_ops wb_ops = { static const struct sde_connector_ops wb_ops = { .post_init = sde_wb_connector_post_init, .post_init = sde_wb_connector_post_init, Loading Loading
drivers/gpu/drm/msm/sde/sde_connector.c +19 −0 Original line number Original line Diff line number Diff line Loading @@ -248,6 +248,25 @@ int sde_connector_pre_kickoff(struct drm_connector *connector) return rc; return rc; } } void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable) { struct sde_connector *c_conn; struct dsi_display *display; u32 state = enable ? DSI_CLK_ON : DSI_CLK_OFF; if (!connector) { SDE_ERROR("invalid connector\n"); return; } c_conn = to_sde_connector(connector); display = (struct dsi_display *) c_conn->display; if (display && c_conn->ops.clk_ctrl) c_conn->ops.clk_ctrl(display->mdp_clk_handle, DSI_ALL_CLKS, state); } static void sde_connector_destroy(struct drm_connector *connector) static void sde_connector_destroy(struct drm_connector *connector) { { struct sde_connector *c_conn; struct sde_connector *c_conn; Loading
drivers/gpu/drm/msm/sde/sde_connector.h +15 −0 Original line number Original line Diff line number Diff line Loading @@ -150,6 +150,14 @@ struct sde_connector_ops { int (*pre_kickoff)(struct drm_connector *connector, int (*pre_kickoff)(struct drm_connector *connector, void *display, void *display, struct msm_display_kickoff_params *params); struct msm_display_kickoff_params *params); /** * clk_ctrl - perform clk enable/disable on the connector * @handle: Pointer to clk handle * @type: Type of clks * @enable: State of clks */ int (*clk_ctrl)(void *handle, u32 type, u32 state); }; }; /** /** Loading Loading @@ -365,6 +373,13 @@ void sde_connector_complete_commit(struct drm_connector *connector); int sde_connector_get_info(struct drm_connector *connector, int sde_connector_get_info(struct drm_connector *connector, struct msm_display_info *info); struct msm_display_info *info); /** * sde_connector_clk_ctrl - enables/disables the connector clks * @connector: Pointer to drm connector object * @enable: true/false to enable/disable */ void sde_connector_clk_ctrl(struct drm_connector *connector, bool enable); /** /** * sde_connector_trigger_event - indicate that an event has occurred * sde_connector_trigger_event - indicate that an event has occurred * Any callbacks that have been registered against this event will * Any callbacks that have been registered against this event will Loading
drivers/gpu/drm/msm/sde/sde_kms.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -566,7 +566,8 @@ static int _sde_kms_setup_displays(struct drm_device *dev, .get_info = dsi_display_get_info, .get_info = dsi_display_get_info, .set_backlight = dsi_display_set_backlight, .set_backlight = dsi_display_set_backlight, .soft_reset = dsi_display_soft_reset, .soft_reset = dsi_display_soft_reset, .pre_kickoff = dsi_conn_pre_kickoff .pre_kickoff = dsi_conn_pre_kickoff, .clk_ctrl = dsi_display_clk_ctrl }; }; static const struct sde_connector_ops wb_ops = { static const struct sde_connector_ops wb_ops = { .post_init = sde_wb_connector_post_init, .post_init = sde_wb_connector_post_init, Loading