Loading drivers/gpu/drm/msm/hdmi-staging/sde_hdmi.c +7 −0 Original line number Diff line number Diff line Loading @@ -2203,6 +2203,13 @@ sde_hdmi_connector_detect(struct drm_connector *connector, return status; } int sde_hdmi_pre_kickoff(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params) { return 0; } int sde_hdmi_connector_get_modes(struct drm_connector *connector, void *display) { struct sde_hdmi *hdmi_display = (struct sde_hdmi *)display; Loading drivers/gpu/drm/msm/hdmi-staging/sde_hdmi.h +11 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,17 @@ bool sde_hdmi_tx_is_panel_on(struct sde_hdmi *hdmi_ctrl); int sde_hdmi_start_hdcp(struct drm_connector *connector); void sde_hdmi_hdcp_off(struct sde_hdmi *hdmi_ctrl); /* * sde_hdmi_pre_kickoff - program kickoff-time features * @display: Pointer to private display structure * @params: Parameters for kickoff-time programming * Returns: Zero on success */ int sde_hdmi_pre_kickoff(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params); #else /*#ifdef CONFIG_DRM_SDE_HDMI*/ static inline u32 sde_hdmi_get_num_of_displays(void) Loading drivers/gpu/drm/msm/msm_drv.h +8 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,14 @@ struct msm_display_info { enum msm_display_compression compression; }; /** * struct - msm_display_kickoff_params - info for display features at kickoff * @hdr_metadata: HDR metadata info passed from userspace */ struct msm_display_kickoff_params { struct drm_msm_ext_panel_hdr_metadata *hdr_metadata; }; /** * struct msm_drm_event - defines custom event notification struct * @base: base object required for event notification by DRM framework. Loading drivers/gpu/drm/msm/sde/sde_connector.c +30 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,36 @@ int sde_connector_get_info(struct drm_connector *connector, return c_conn->ops.get_info(info, c_conn->display); } int sde_connector_pre_kickoff(struct drm_connector *connector) { struct sde_connector *c_conn; struct sde_connector_state *c_state; struct msm_display_kickoff_params params; int rc; if (!connector) { SDE_ERROR("invalid argument\n"); return -EINVAL; } c_conn = to_sde_connector(connector); c_state = to_sde_connector_state(connector->state); if (!c_conn->display) { SDE_ERROR("invalid argument\n"); return -EINVAL; } if (!c_conn->ops.pre_kickoff) return 0; params.hdr_metadata = &c_state->hdr_meta; rc = c_conn->ops.pre_kickoff(connector, c_conn->display, ¶ms); return rc; } static void sde_connector_destroy(struct drm_connector *connector) { struct sde_connector *c_conn; Loading drivers/gpu/drm/msm/sde/sde_connector.h +20 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,19 @@ struct sde_connector_ops { int (*get_info)(struct msm_display_info *info, void *display); int (*set_backlight)(void *display, u32 bl_lvl); /** * pre_kickoff - trigger display to program kickoff-time features * @connector: Pointer to drm connector structure * @display: Pointer to private display structure * @params: Parameter bundle of connector-stored information for * kickoff-time programming into the display * Returns: Zero on success */ int (*pre_kickoff)(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params); }; /** Loading Loading @@ -307,5 +320,12 @@ void sde_connector_complete_commit(struct drm_connector *connector); int sde_connector_get_info(struct drm_connector *connector, struct msm_display_info *info); /** * sde_connector_pre_kickoff - trigger kickoff time feature programming * @connector: Pointer to drm connector object * Returns: Zero on success */ int sde_connector_pre_kickoff(struct drm_connector *connector); #endif /* _SDE_CONNECTOR_H_ */ Loading
drivers/gpu/drm/msm/hdmi-staging/sde_hdmi.c +7 −0 Original line number Diff line number Diff line Loading @@ -2203,6 +2203,13 @@ sde_hdmi_connector_detect(struct drm_connector *connector, return status; } int sde_hdmi_pre_kickoff(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params) { return 0; } int sde_hdmi_connector_get_modes(struct drm_connector *connector, void *display) { struct sde_hdmi *hdmi_display = (struct sde_hdmi *)display; Loading
drivers/gpu/drm/msm/hdmi-staging/sde_hdmi.h +11 −0 Original line number Diff line number Diff line Loading @@ -452,6 +452,17 @@ bool sde_hdmi_tx_is_panel_on(struct sde_hdmi *hdmi_ctrl); int sde_hdmi_start_hdcp(struct drm_connector *connector); void sde_hdmi_hdcp_off(struct sde_hdmi *hdmi_ctrl); /* * sde_hdmi_pre_kickoff - program kickoff-time features * @display: Pointer to private display structure * @params: Parameters for kickoff-time programming * Returns: Zero on success */ int sde_hdmi_pre_kickoff(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params); #else /*#ifdef CONFIG_DRM_SDE_HDMI*/ static inline u32 sde_hdmi_get_num_of_displays(void) Loading
drivers/gpu/drm/msm/msm_drv.h +8 −0 Original line number Diff line number Diff line Loading @@ -235,6 +235,14 @@ struct msm_display_info { enum msm_display_compression compression; }; /** * struct - msm_display_kickoff_params - info for display features at kickoff * @hdr_metadata: HDR metadata info passed from userspace */ struct msm_display_kickoff_params { struct drm_msm_ext_panel_hdr_metadata *hdr_metadata; }; /** * struct msm_drm_event - defines custom event notification struct * @base: base object required for event notification by DRM framework. Loading
drivers/gpu/drm/msm/sde/sde_connector.c +30 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,36 @@ int sde_connector_get_info(struct drm_connector *connector, return c_conn->ops.get_info(info, c_conn->display); } int sde_connector_pre_kickoff(struct drm_connector *connector) { struct sde_connector *c_conn; struct sde_connector_state *c_state; struct msm_display_kickoff_params params; int rc; if (!connector) { SDE_ERROR("invalid argument\n"); return -EINVAL; } c_conn = to_sde_connector(connector); c_state = to_sde_connector_state(connector->state); if (!c_conn->display) { SDE_ERROR("invalid argument\n"); return -EINVAL; } if (!c_conn->ops.pre_kickoff) return 0; params.hdr_metadata = &c_state->hdr_meta; rc = c_conn->ops.pre_kickoff(connector, c_conn->display, ¶ms); return rc; } static void sde_connector_destroy(struct drm_connector *connector) { struct sde_connector *c_conn; Loading
drivers/gpu/drm/msm/sde/sde_connector.h +20 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,19 @@ struct sde_connector_ops { int (*get_info)(struct msm_display_info *info, void *display); int (*set_backlight)(void *display, u32 bl_lvl); /** * pre_kickoff - trigger display to program kickoff-time features * @connector: Pointer to drm connector structure * @display: Pointer to private display structure * @params: Parameter bundle of connector-stored information for * kickoff-time programming into the display * Returns: Zero on success */ int (*pre_kickoff)(struct drm_connector *connector, void *display, struct msm_display_kickoff_params *params); }; /** Loading Loading @@ -307,5 +320,12 @@ void sde_connector_complete_commit(struct drm_connector *connector); int sde_connector_get_info(struct drm_connector *connector, struct msm_display_info *info); /** * sde_connector_pre_kickoff - trigger kickoff time feature programming * @connector: Pointer to drm connector object * Returns: Zero on success */ int sde_connector_pre_kickoff(struct drm_connector *connector); #endif /* _SDE_CONNECTOR_H_ */