Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e10cb8af authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: add pre_destroy op for sde connectors" into msm-4.14

parents 4091cb4b f2536c1a
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -652,8 +652,8 @@ void sde_connector_destroy(struct drm_connector *connector)
	/* cancel if any pending esd work */
	/* cancel if any pending esd work */
	sde_connector_schedule_status_work(connector, false);
	sde_connector_schedule_status_work(connector, false);


	if (c_conn->ops.put_modes)
	if (c_conn->ops.pre_destroy)
		c_conn->ops.put_modes(connector, c_conn->display);
		c_conn->ops.pre_destroy(connector, c_conn->display);


	if (c_conn->blob_caps)
	if (c_conn->blob_caps)
		drm_property_blob_put(c_conn->blob_caps);
		drm_property_blob_put(c_conn->blob_caps);
@@ -2128,8 +2128,6 @@ struct drm_connector *sde_connector_init(struct drm_device *dev,
	SDE_DEBUG("connector %d attach encoder %d\n",
	SDE_DEBUG("connector %d attach encoder %d\n",
			c_conn->base.base.id, encoder->base.id);
			c_conn->base.base.id, encoder->base.id);


	priv->connectors[priv->num_connectors++] = &c_conn->base;

	INIT_DELAYED_WORK(&c_conn->status_work,
	INIT_DELAYED_WORK(&c_conn->status_work,
			sde_connector_check_status_work);
			sde_connector_check_status_work);


+8 −8
Original line number Original line Diff line number Diff line
@@ -75,14 +75,6 @@ struct sde_connector_ops {
	int (*get_modes)(struct drm_connector *connector,
	int (*get_modes)(struct drm_connector *connector,
			void *display);
			void *display);


	/**
	 * put_modes - free up drm modes of the connector
	 * @connector: Pointer to drm connector structure
	 * @display: Pointer to private display handle
	 */
	void (*put_modes)(struct drm_connector *connector,
			void *display);

	/**
	/**
	 * update_pps - update pps command for the display panel
	 * update_pps - update pps command for the display panel
	 * @connector: Pointer to drm connector structure
	 * @connector: Pointer to drm connector structure
@@ -292,6 +284,14 @@ struct sde_connector_ops {
	int (*atomic_check)(struct drm_connector *connector,
	int (*atomic_check)(struct drm_connector *connector,
			void *display,
			void *display,
			struct drm_connector_state *c_state);
			struct drm_connector_state *c_state);

	/**
	 * pre_destroy - handle pre destroy operations for the connector
	 * @connector: Pointer to drm connector structure
	 * @display: Pointer to private display handle
	 * Returns: Zero on success, negative error code for failures
	 */
	void (*pre_destroy)(struct drm_connector *connector, void *display);
};
};


/**
/**
+4 −1
Original line number Original line Diff line number Diff line
@@ -915,7 +915,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
		.set_info_blob = dsi_conn_set_info_blob,
		.set_info_blob = dsi_conn_set_info_blob,
		.detect =     dsi_conn_detect,
		.detect =     dsi_conn_detect,
		.get_modes =  dsi_connector_get_modes,
		.get_modes =  dsi_connector_get_modes,
		.put_modes =  dsi_connector_put_modes,
		.pre_destroy =  dsi_connector_put_modes,
		.mode_valid = dsi_conn_mode_valid,
		.mode_valid = dsi_conn_mode_valid,
		.get_info =   dsi_display_get_info,
		.get_info =   dsi_display_get_info,
		.set_backlight = dsi_display_set_backlight,
		.set_backlight = dsi_display_set_backlight,
@@ -1009,6 +1009,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
					DRM_MODE_CONNECTOR_DSI);
					DRM_MODE_CONNECTOR_DSI);
		if (connector) {
		if (connector) {
			priv->encoders[priv->num_encoders++] = encoder;
			priv->encoders[priv->num_encoders++] = encoder;
			priv->connectors[priv->num_connectors++] = connector;
		} else {
		} else {
			SDE_ERROR("dsi %d connector init failed\n", i);
			SDE_ERROR("dsi %d connector init failed\n", i);
			dsi_display_drm_bridge_deinit(display);
			dsi_display_drm_bridge_deinit(display);
@@ -1051,6 +1052,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
				DRM_MODE_CONNECTOR_VIRTUAL);
				DRM_MODE_CONNECTOR_VIRTUAL);
		if (connector) {
		if (connector) {
			priv->encoders[priv->num_encoders++] = encoder;
			priv->encoders[priv->num_encoders++] = encoder;
			priv->connectors[priv->num_connectors++] = connector;
		} else {
		} else {
			SDE_ERROR("wb %d connector init failed\n", i);
			SDE_ERROR("wb %d connector init failed\n", i);
			sde_wb_drm_deinit(display);
			sde_wb_drm_deinit(display);
@@ -1094,6 +1096,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
					DRM_MODE_CONNECTOR_DisplayPort);
					DRM_MODE_CONNECTOR_DisplayPort);
		if (connector) {
		if (connector) {
			priv->encoders[priv->num_encoders++] = encoder;
			priv->encoders[priv->num_encoders++] = encoder;
			priv->connectors[priv->num_connectors++] = connector;
		} else {
		} else {
			SDE_ERROR("dp %d connector init failed\n", i);
			SDE_ERROR("dp %d connector init failed\n", i);
			dp_drm_bridge_deinit(display);
			dp_drm_bridge_deinit(display);