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

Commit 6c3bc302 authored by Govinda Rajulu Chenna's avatar Govinda Rajulu Chenna
Browse files

drm/msm: add drm_connector as input to sde connector ops



This change adds drm_connector as one of the input parameter
to sde_connector_ops. sde_connector_ops needs drm_connector
input when interface drivers are working with more than one
stream, similar DP MST.

Change-Id: Ic8499482bacd901245ed7051cd8abb338781bc8c
Signed-off-by: default avatarGovinda Rajulu Chenna <gchenna@codeaurora.org>
parent fc5cffb7
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -276,7 +276,7 @@ static const struct drm_bridge_funcs dp_bridge_ops = {
	.mode_set     = dp_bridge_mode_set,
};

int dp_connector_config_hdr(void *display,
int dp_connector_config_hdr(struct drm_connector *connector, void *display,
	struct sde_connector_state *c_state)
{
	struct dp_display *dp = display;
@@ -304,8 +304,10 @@ int dp_connector_post_init(struct drm_connector *connector, void *display)
	return 0;
}

int dp_connector_get_mode_info(const struct drm_display_mode *drm_mode,
	struct msm_mode_info *mode_info, u32 max_mixer_width, void *display)
int dp_connector_get_mode_info(struct drm_connector *connector,
		const struct drm_display_mode *drm_mode,
		struct msm_mode_info *mode_info,
		u32 max_mixer_width, void *display)
{
	const u32 dual_lm = 2;
	const u32 single_lm = 1;
@@ -331,7 +333,8 @@ int dp_connector_get_mode_info(const struct drm_display_mode *drm_mode,
	return 0;
}

int dp_connector_get_info(struct msm_display_info *info, void *data)
int dp_connector_get_info(struct drm_connector *connector,
		struct msm_display_info *info, void *data)
{
	struct dp_display *display = data;

@@ -364,7 +367,7 @@ enum drm_connector_status dp_connector_detect(struct drm_connector *conn,

	/* get display dp_info */
	memset(&info, 0x0, sizeof(info));
	rc = dp_connector_get_info(&info, display);
	rc = dp_connector_get_info(conn, &info, display);
	if (rc) {
		pr_err("failed to get display info, rc=%d\n", rc);
		return connector_status_disconnected;
@@ -382,7 +385,7 @@ enum drm_connector_status dp_connector_detect(struct drm_connector *conn,
	return status;
}

void dp_connector_post_open(void *display)
void dp_connector_post_open(struct drm_connector *connector, void *display)
{
	struct dp_display *dp;

+17 −4
Original line number Diff line number Diff line
@@ -33,11 +33,13 @@ struct dp_bridge {

/**
 * dp_connector_config_hdr - callback to configure HDR
 * @connector: Pointer to drm connector structure
 * @display: Pointer to private display handle
 * @c_state: connect state data
 * Returns: Zero on success
 */
int dp_connector_config_hdr(void *display,
int dp_connector_config_hdr(struct drm_connector *connector,
		void *display,
		struct sde_connector_state *c_state);

/**
@@ -81,23 +83,34 @@ enum drm_mode_status dp_connector_mode_valid(struct drm_connector *connector,

/**
 * dp_connector_get_mode_info - retrieve information of the mode selected
 * @connector: Pointer to drm connector structure
 * @drm_mode: Display mode set for the display
 * @mode_info: Out parameter. Information of the mode
 * @max_mixer_width: max width supported by HW layer mixer
 * @display: Pointer to private display structure
 * Returns: zero on success
 */
int dp_connector_get_mode_info(const struct drm_display_mode *drm_mode,
int dp_connector_get_mode_info(struct drm_connector *connector,
		const struct drm_display_mode *drm_mode,
		struct msm_mode_info *mode_info,
		u32 max_mixer_width, void *display);

int dp_connector_get_info(struct msm_display_info *info, void *display);
/**
 * dp_connector_get_info - retrieve connector display info
 * @connector: Pointer to drm connector structure
 * @info: Out parameter. Information of the connected display
 * @display: Pointer to private display structure
 * Returns: zero on success
 */
int dp_connector_get_info(struct drm_connector *connector,
		struct msm_display_info *info, void *display);

/**
 * dp_connector_post_open - handle the post open functionalites
 * @connector: Pointer to drm connector structure
 * @display: Pointer to private display structure
 */
void dp_connector_post_open(void *display);
void dp_connector_post_open(struct drm_connector *connector, void *display);

int dp_drm_bridge_init(void *display,
	struct drm_encoder *encoder);
+14 −7
Original line number Diff line number Diff line
@@ -75,7 +75,8 @@ void dsi_rect_intersect(const struct dsi_rect *r1,
	}
}

int dsi_display_set_backlight(void *display, u32 bl_lvl)
int dsi_display_set_backlight(struct drm_connector *connector,
		void *display, u32 bl_lvl)
{
	struct dsi_display *dsi_display = display;
	struct dsi_panel *panel;
@@ -520,7 +521,7 @@ static int dsi_display_status_check_te(struct dsi_display *display)
	return rc;
}

int dsi_display_check_status(void *display)
int dsi_display_check_status(struct drm_connector *connector, void *display)
{
	struct dsi_display *dsi_display = display;
	struct dsi_panel *panel;
@@ -605,7 +606,8 @@ static int dsi_display_ctrl_get_host_init_state(struct dsi_display *dsi_display,
	return rc;
}

int dsi_display_cmd_transfer(void *display, const char *cmd_buf,
int dsi_display_cmd_transfer(struct drm_connector *connector,
		void *display, const char *cmd_buf,
		u32 cmd_buf_len)
{
	struct dsi_display *dsi_display = display;
@@ -669,7 +671,9 @@ int dsi_display_soft_reset(void *display)
	return rc;
}

enum dsi_pixel_format dsi_display_get_dst_format(void *display)
enum dsi_pixel_format dsi_display_get_dst_format(
		struct drm_connector *connector,
		void *display)
{
	enum dsi_pixel_format format = DSI_PIXEL_FORMAT_MAX;
	struct dsi_display *dsi_display = (struct dsi_display *)display;
@@ -1340,7 +1344,8 @@ static int dsi_display_phy_idle_off(struct dsi_display *display)
	return 0;
}

void dsi_display_enable_event(struct dsi_display *display,
void dsi_display_enable_event(struct drm_connector *connector,
		struct dsi_display *display,
		uint32_t event_idx, struct dsi_event_cb_info *event_info,
		bool enable)
{
@@ -4062,7 +4067,8 @@ int dsi_display_drm_bridge_deinit(struct dsi_display *display)
	return rc;
}

int dsi_display_get_info(struct msm_display_info *info, void *disp)
int dsi_display_get_info(struct drm_connector *connector,
		struct msm_display_info *info, void *disp)
{
	struct dsi_display *display;
	struct dsi_panel_phy_props phy_props;
@@ -5085,7 +5091,8 @@ static int dsi_display_set_roi(struct dsi_display *display,
	return rc;
}

int dsi_display_pre_kickoff(struct dsi_display *display,
int dsi_display_pre_kickoff(struct drm_connector *connector,
		struct dsi_display *display,
		struct msm_display_kickoff_params *params)
{
	int rc = 0;
+29 −8
Original line number Diff line number Diff line
/*
 * Copyright (c) 2015-2017, The Linux Foundation.All rights reserved.
 * Copyright (c) 2015-2018, The Linux Foundation.All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -289,12 +289,14 @@ int dsi_display_drm_bridge_deinit(struct dsi_display *display);

/**
 * dsi_display_get_info() - returns the display properties
 * @connector:        Pointer to drm connector structure
 * @info:             Pointer to the structure where info is stored.
 * @disp:             Handle to the display.
 *
 * Return: error code.
 */
int dsi_display_get_info(struct msm_display_info *info, void *disp);
int dsi_display_get_info(struct drm_connector *connector,
		struct msm_display_info *info, void *disp);

/**
 * dsi_display_get_mode_count() - get number of modes supported by the display
@@ -519,30 +521,44 @@ int dsi_dispaly_static_frame(struct dsi_display *display, bool enable);

/**
 * dsi_display_enable_event() - enable interrupt based connector event
 * @connector:          Pointer to drm connector structure
 * @display:            Handle to display.
 * @event_idx:          Event index.
 * @event_info:         Event callback definition.
 * @enable:             Whether to enable/disable the event interrupt.
 */
void dsi_display_enable_event(struct dsi_display *display,
void dsi_display_enable_event(struct drm_connector *connector,
		struct dsi_display *display,
		uint32_t event_idx, struct dsi_event_cb_info *event_info,
		bool enable);

int dsi_display_set_backlight(void *display, u32 bl_lvl);
/**
 * dsi_display_set_backlight() - set backlight
 * @connector:          Pointer to drm connector structure
 * @display:            Handle to display.
 * @bl_lvl:             Backlight level.
 * @event_info:         Event callback definition.
 * @enable:             Whether to enable/disable the event interrupt.
 */
int dsi_display_set_backlight(struct drm_connector *connector,
		void *display, u32 bl_lvl);

/**
 * dsi_display_check_status() - check if panel is dead or alive
 * @connector:          Pointer to drm connector structure
 * @display:            Handle to display.
 */
int dsi_display_check_status(void *display);
int dsi_display_check_status(struct drm_connector *connector, void *display);

/**
 * dsi_display_cmd_transfer() - transfer command to the panel
 * @connector:          Pointer to drm connector structure
 * @display:            Handle to display.
 * @cmd_buf:            Command buffer
 * @cmd_buf_len:        Command buffer length in bytes
 */
int dsi_display_cmd_transfer(void *display, const char *cmd_buffer,
int dsi_display_cmd_transfer(struct drm_connector *connector,
		void *display, const char *cmd_buffer,
		u32 cmd_buf_len);

/**
@@ -578,18 +594,23 @@ int dsi_display_set_power(struct drm_connector *connector,

/*
 * dsi_display_pre_kickoff - program kickoff-time features
 * @connector: Pointer to drm connector structure
 * @display: Pointer to private display structure
 * @params: Parameters for kickoff-time programming
 * Returns: Zero on success
 */
int dsi_display_pre_kickoff(struct dsi_display *display,
int dsi_display_pre_kickoff(struct drm_connector *connector,
		struct dsi_display *display,
		struct msm_display_kickoff_params *params);
/**
 * dsi_display_get_dst_format() - get dst_format from DSI display
 * @connector:        Pointer to drm connector structure
 * @display:         Handle to display
 *
 * Return: enum dsi_pixel_format type
 */
enum dsi_pixel_format dsi_display_get_dst_format(void *display);
enum dsi_pixel_format dsi_display_get_dst_format(
		struct drm_connector *connector,
		void *display);

#endif /* _DSI_DISPLAY_H_ */
+9 −7
Original line number Diff line number Diff line
/*
 * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -332,7 +332,8 @@ static bool dsi_bridge_mode_fixup(struct drm_bridge *bridge,
	return true;
}

int dsi_conn_get_mode_info(const struct drm_display_mode *drm_mode,
int dsi_conn_get_mode_info(struct drm_connector *connector,
		const struct drm_display_mode *drm_mode,
		struct msm_mode_info *mode_info,
		u32 max_mixer_width, void *display)
{
@@ -523,7 +524,7 @@ enum drm_connector_status dsi_conn_detect(struct drm_connector *conn,

	/* get display dsi_info */
	memset(&info, 0x0, sizeof(info));
	rc = dsi_display_get_info(&info, display);
	rc = dsi_display_get_info(conn, &info, display);
	if (rc) {
		pr_err("failed to get display info, rc=%d\n", rc);
		return connector_status_disconnected;
@@ -640,7 +641,7 @@ int dsi_conn_pre_kickoff(struct drm_connector *connector,
		return -EINVAL;
	}

	return dsi_display_pre_kickoff(display, params);
	return dsi_display_pre_kickoff(connector, display, params);
}

void dsi_conn_enable_event(struct drm_connector *connector,
@@ -653,7 +654,8 @@ void dsi_conn_enable_event(struct drm_connector *connector,
	event_info.event_cb = sde_connector_trigger_event;
	event_info.event_usr_ptr = connector;

	dsi_display_enable_event(display, event_idx, &event_info, enable);
	dsi_display_enable_event(connector, display,
			event_idx, &event_info, enable);
}

int dsi_conn_post_kickoff(struct drm_connector *connector)
Loading