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

Commit a8aadbbd 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: extract compression ratio and widebus mode from connector"...

Merge "drm/msm: extract compression ratio and widebus mode from connector" into dev/msm-4.14-display
parents dba5a82b 4e385c38
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -410,6 +410,8 @@ int dp_connector_get_mode_info(struct drm_connector *connector,
		return -EINVAL;
	}

	memset(mode_info, 0, sizeof(*mode_info));

	topology = &mode_info->topology;
	topology->num_lm = (max_mixer_width <= drm_mode->hdisplay) ?
							dual_lm : single_lm;
@@ -418,7 +420,6 @@ int dp_connector_get_mode_info(struct drm_connector *connector,

	mode_info->frame_rate = drm_mode->vrefresh;
	mode_info->vtotal = drm_mode->vtotal;
	mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_NONE;

	return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -410,6 +410,8 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
		mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_DSC;
		memcpy(&mode_info->comp_info.dsc_info, &dsi_mode.priv_info->dsc,
			sizeof(dsi_mode.priv_info->dsc));
		mode_info->comp_info.comp_ratio =
			MSM_DISPLAY_COMPRESSION_RATIO_3_TO_1;
	}

	if (dsi_mode.priv_info->roi_caps.enabled) {
+17 −0
Original line number Diff line number Diff line
@@ -222,6 +222,19 @@ enum msm_display_compression_type {
	MSM_DISPLAY_COMPRESSION_DSC,
};

/**
 * enum msm_display_compression_ratio - compression ratio
 * @MSM_DISPLAY_COMPRESSION_NONE: no compression
 * @MSM_DISPLAY_COMPRESSION_RATIO_2_TO_1: 2 to 1 compression
 * @MSM_DISPLAY_COMPRESSION_RATIO_3_TO_1: 3 to 1 compression
 */
enum msm_display_compression_ratio {
	MSM_DISPLAY_COMPRESSION_RATIO_NONE,
	MSM_DISPLAY_COMPRESSION_RATIO_2_TO_1,
	MSM_DISPLAY_COMPRESSION_RATIO_3_TO_1,
	MSM_DISPLAY_COMPRESSION_RATIO_MAX,
};

/**
 * enum msm_display_caps - features/capabilities supported by displays
 * @MSM_DISPLAY_CAP_VID_MODE:           Video or "active" mode supported
@@ -394,11 +407,13 @@ struct msm_display_dsc_info {
/**
 * struct msm_compression_info - defined panel compression
 * @comp_type:        type of compression supported
 * @comp_ratio:       compression ratio
 * @dsc_info:         dsc configuration if the compression
 *                    supported is DSC
 */
struct msm_compression_info {
	enum msm_display_compression_type comp_type;
	enum msm_display_compression_ratio comp_ratio;

	union{
		struct msm_display_dsc_info dsc_info;
@@ -428,6 +443,7 @@ struct msm_display_topology {
 * @topology:        supported topology for the mode
 * @comp_info:       compression info supported
 * @roi_caps:        panel roi capabilities
 * @wide_bus_en:	wide-bus mode cfg for interface module
 */
struct msm_mode_info {
	uint32_t frame_rate;
@@ -439,6 +455,7 @@ struct msm_mode_info {
	struct msm_display_topology topology;
	struct msm_compression_info comp_info;
	struct msm_roi_caps roi_caps;
	bool wide_bus_en;
};

/**
+12 −0
Original line number Diff line number Diff line
@@ -993,6 +993,16 @@ static int sde_encoder_virt_atomic_check(
			return ret;
		}

		if (sde_conn_state->mode_info.comp_info.comp_type &&
			sde_conn_state->mode_info.comp_info.comp_ratio >=
					MSM_DISPLAY_COMPRESSION_RATIO_MAX) {
			SDE_ERROR_ENC(sde_enc,
				"invalid compression ratio: %d\n",
				sde_conn_state->mode_info.comp_info.comp_ratio);
			ret = -EINVAL;
			return ret;
		}

		/* Reserve dynamic resources, indicating atomic_check phase */
		ret = sde_rm_reserve(&sde_kms->rm, drm_enc, crtc_state,
			conn_state, true);
@@ -2995,6 +3005,8 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
			continue;

		phys->comp_type = comp_info->comp_type;
		phys->comp_ratio = comp_info->comp_ratio;
		phys->wide_bus_en = mode_info.wide_bus_en;
		if (phys != sde_enc->cur_master) {
			/**
			 * on DMS request, the encoder will be enabled
+4 −0
Original line number Diff line number Diff line
@@ -266,6 +266,8 @@ struct sde_encoder_irq {
 * @intf_cfg_v1:        Interface hardware configuration to be used if control
 *                      path supports SDE_CTL_ACTIVE_CFG
 * @comp_type:      Type of compression supported
 * @comp_ratio:		Compression ratio
 * @wide_bus_en:	Wide-bus configuraiton
 * @enc_spinlock:	Virtual-Encoder-Wide Spin Lock for IRQ purposes
 * @enable_state:	Enable state tracking
 * @vblank_refcount:	Reference count of vblank request
@@ -307,6 +309,8 @@ struct sde_encoder_phys {
	struct sde_hw_intf_cfg intf_cfg;
	struct sde_hw_intf_cfg_v1 intf_cfg_v1;
	enum msm_display_compression_type comp_type;
	enum msm_display_compression_ratio comp_ratio;
	bool wide_bus_en;
	spinlock_t *enc_spinlock;
	enum sde_enc_enable_state enable_state;
	struct mutex *vblank_ctl_lock;
Loading