All of lore.kernel.org
 help / color / mirror / Atom feed
From: jeffy <jeffy.chen@rock-chips.com>
To: yao mark <mark.yao@rock-chips.com>,
	David Airlie <airlied@linux.ie>, Heiko Stuebner <heiko@sntech.de>
Cc: linux-rockchip@lists.infradead.org,
	dri-devel@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: drm/rockchip: Correct vop out_mode configure
Date: Wed, 31 May 2017 10:05:23 +0800	[thread overview]
Message-ID: <592E24E3.3070001@rock-chips.com> (raw)
In-Reply-To: <1495885416-22216-1-git-send-email-mark.yao@rock-chips.com>

Hi Mark,

Reviewed-by: Jeffy Chen <jeffy.chen@rock-chips.com>

On 05/27/2017 07:43 PM, yao mark wrote:
> Force vop output mode on encoder driver seem not a good idea,
>
> EDP, HDMI, DisplayPort all have 10bit input on rk3399,
> On non-10bit vop, vop 8bit output bit[0-7] connect to the
> encoder high 8bit [2-9].
>
> So force RGB10 to RGB888 on vop driver would be better.
>
> And another problem, EDP check crtc id on atomic_check,
> but encoder maybe NULL, so out_mode configure would fail,
> it cause edp no display.
>
> Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
> ---
>   drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 12 ------------
>   drivers/gpu/drm/rockchip/cdn-dp-core.c          |  9 ++-------
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c     |  8 ++++++++
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.h     |  3 +++
>   drivers/gpu/drm/rockchip/rockchip_vop_reg.c     |  2 ++
>   5 files changed, 15 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> index 1bccd82..9606121 100644
> --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> @@ -237,8 +237,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>   				      struct drm_connector_state *conn_state)
>   {
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
> -	struct rockchip_dp_device *dp = to_dp(encoder);
> -	int ret;
>
>   	/*
>   	 * The hardware IC designed that VOP must output the RGB10 video
> @@ -250,16 +248,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>
>   	s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
>   	s->output_type = DRM_MODE_CONNECTOR_eDP;
> -	if (dp->data->chip_type == RK3399_EDP) {
> -		/*
> -		 * For RK3399, VOP Lit must code the out mode to RGB888,
> -		 * VOP Big must code the out mode to RGB10.
> -		 */
> -		ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node,
> -							encoder);
> -		if (ret > 0)
> -			s->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	}
>
>   	return 0;
>   }
> diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> index a2169dd..14fa1f8 100644
> --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
> +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> @@ -615,7 +615,6 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>   {
>   	struct cdn_dp_device *dp = encoder_to_dp(encoder);
>   	int ret, val;
> -	struct rockchip_crtc_state *state;
>
>   	ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder);
>   	if (ret < 0) {
> @@ -625,14 +624,10 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>
>   	DRM_DEV_DEBUG_KMS(dp->dev, "vop %s output to cdn-dp\n",
>   			  (ret) ? "LIT" : "BIG");
> -	state = to_rockchip_crtc_state(encoder->crtc->state);
> -	if (ret) {
> +	if (ret)
>   		val = DP_SEL_VOP_LIT | (DP_SEL_VOP_LIT << 16);
> -		state->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	} else {
> +	else
>   		val = DP_SEL_VOP_LIT << 16;
> -		state->output_mode = ROCKCHIP_OUT_MODE_AAAA;
> -	}
>
>   	ret = cdn_dp_grf_write(dp, GRF_SOC_CON9, val);
>   	if (ret)
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 40a5e6e..c83f481 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -874,6 +874,7 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
>   static void vop_crtc_enable(struct drm_crtc *crtc)
>   {
>   	struct vop *vop = to_vop(crtc);
> +	const struct vop_data *vop_data = vop->data;
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state);
>   	struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode;
>   	u16 hsync_len = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> @@ -966,6 +967,13 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
>   		DRM_DEV_ERROR(vop->dev, "unsupported connector_type [%d]\n",
>   			      s->output_type);
>   	}
> +
> +	/*
> +	 * if vop is not support RGB10 output, need force RGB10 to RGB888.
> +	 */
> +	if (s->output_mode == ROCKCHIP_OUT_MODE_AAAA &&
> +	    !(vop_data->feature & VOP_FEATURE_OUTPUT_RGB10))
> +		s->output_mode = ROCKCHIP_OUT_MODE_P888;
>   	VOP_CTRL_SET(vop, out_mode, s->output_mode);
>
>   	VOP_CTRL_SET(vop, htotal_pw, (htotal << 16) | hsync_len);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> index 5a4faa85..9979fd0 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> @@ -142,6 +142,9 @@ struct vop_data {
>   	const struct vop_intr *intr;
>   	const struct vop_win_data *win;
>   	unsigned int win_size;
> +
> +#define VOP_FEATURE_OUTPUT_RGB10	BIT(0)
> +	u64 feature;
>   };
>
>   /* interrupt define */
> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> index 0da4444..bafd698 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> @@ -275,6 +275,7 @@ static const struct vop_intr rk3288_vop_intr = {
>   static const struct vop_data rk3288_vop = {
>   	.init_table = rk3288_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3288_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3288_vop_intr,
>   	.ctrl = &rk3288_ctrl_data,
>   	.win = rk3288_vop_win_data,
> @@ -343,6 +344,7 @@ static const struct vop_reg_data rk3399_init_reg_table[] = {
>   static const struct vop_data rk3399_vop_big = {
>   	.init_table = rk3399_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3399_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3399_vop_intr,
>   	.ctrl = &rk3399_ctrl_data,
>   	/*
>
>


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: jeffy.chen@rock-chips.com (jeffy)
To: linux-arm-kernel@lists.infradead.org
Subject: drm/rockchip: Correct vop out_mode configure
Date: Wed, 31 May 2017 10:05:23 +0800	[thread overview]
Message-ID: <592E24E3.3070001@rock-chips.com> (raw)
In-Reply-To: <1495885416-22216-1-git-send-email-mark.yao@rock-chips.com>

Hi Mark,

Reviewed-by: Jeffy Chen <jeffy.chen@rock-chips.com>

On 05/27/2017 07:43 PM, yao mark wrote:
> Force vop output mode on encoder driver seem not a good idea,
>
> EDP, HDMI, DisplayPort all have 10bit input on rk3399,
> On non-10bit vop, vop 8bit output bit[0-7] connect to the
> encoder high 8bit [2-9].
>
> So force RGB10 to RGB888 on vop driver would be better.
>
> And another problem, EDP check crtc id on atomic_check,
> but encoder maybe NULL, so out_mode configure would fail,
> it cause edp no display.
>
> Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
> ---
>   drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 12 ------------
>   drivers/gpu/drm/rockchip/cdn-dp-core.c          |  9 ++-------
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c     |  8 ++++++++
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.h     |  3 +++
>   drivers/gpu/drm/rockchip/rockchip_vop_reg.c     |  2 ++
>   5 files changed, 15 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> index 1bccd82..9606121 100644
> --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> @@ -237,8 +237,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>   				      struct drm_connector_state *conn_state)
>   {
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
> -	struct rockchip_dp_device *dp = to_dp(encoder);
> -	int ret;
>
>   	/*
>   	 * The hardware IC designed that VOP must output the RGB10 video
> @@ -250,16 +248,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>
>   	s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
>   	s->output_type = DRM_MODE_CONNECTOR_eDP;
> -	if (dp->data->chip_type == RK3399_EDP) {
> -		/*
> -		 * For RK3399, VOP Lit must code the out mode to RGB888,
> -		 * VOP Big must code the out mode to RGB10.
> -		 */
> -		ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node,
> -							encoder);
> -		if (ret > 0)
> -			s->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	}
>
>   	return 0;
>   }
> diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> index a2169dd..14fa1f8 100644
> --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
> +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> @@ -615,7 +615,6 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>   {
>   	struct cdn_dp_device *dp = encoder_to_dp(encoder);
>   	int ret, val;
> -	struct rockchip_crtc_state *state;
>
>   	ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder);
>   	if (ret < 0) {
> @@ -625,14 +624,10 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>
>   	DRM_DEV_DEBUG_KMS(dp->dev, "vop %s output to cdn-dp\n",
>   			  (ret) ? "LIT" : "BIG");
> -	state = to_rockchip_crtc_state(encoder->crtc->state);
> -	if (ret) {
> +	if (ret)
>   		val = DP_SEL_VOP_LIT | (DP_SEL_VOP_LIT << 16);
> -		state->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	} else {
> +	else
>   		val = DP_SEL_VOP_LIT << 16;
> -		state->output_mode = ROCKCHIP_OUT_MODE_AAAA;
> -	}
>
>   	ret = cdn_dp_grf_write(dp, GRF_SOC_CON9, val);
>   	if (ret)
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 40a5e6e..c83f481 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -874,6 +874,7 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
>   static void vop_crtc_enable(struct drm_crtc *crtc)
>   {
>   	struct vop *vop = to_vop(crtc);
> +	const struct vop_data *vop_data = vop->data;
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state);
>   	struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode;
>   	u16 hsync_len = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> @@ -966,6 +967,13 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
>   		DRM_DEV_ERROR(vop->dev, "unsupported connector_type [%d]\n",
>   			      s->output_type);
>   	}
> +
> +	/*
> +	 * if vop is not support RGB10 output, need force RGB10 to RGB888.
> +	 */
> +	if (s->output_mode == ROCKCHIP_OUT_MODE_AAAA &&
> +	    !(vop_data->feature & VOP_FEATURE_OUTPUT_RGB10))
> +		s->output_mode = ROCKCHIP_OUT_MODE_P888;
>   	VOP_CTRL_SET(vop, out_mode, s->output_mode);
>
>   	VOP_CTRL_SET(vop, htotal_pw, (htotal << 16) | hsync_len);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> index 5a4faa85..9979fd0 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> @@ -142,6 +142,9 @@ struct vop_data {
>   	const struct vop_intr *intr;
>   	const struct vop_win_data *win;
>   	unsigned int win_size;
> +
> +#define VOP_FEATURE_OUTPUT_RGB10	BIT(0)
> +	u64 feature;
>   };
>
>   /* interrupt define */
> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> index 0da4444..bafd698 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> @@ -275,6 +275,7 @@ static const struct vop_intr rk3288_vop_intr = {
>   static const struct vop_data rk3288_vop = {
>   	.init_table = rk3288_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3288_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3288_vop_intr,
>   	.ctrl = &rk3288_ctrl_data,
>   	.win = rk3288_vop_win_data,
> @@ -343,6 +344,7 @@ static const struct vop_reg_data rk3399_init_reg_table[] = {
>   static const struct vop_data rk3399_vop_big = {
>   	.init_table = rk3399_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3399_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3399_vop_intr,
>   	.ctrl = &rk3399_ctrl_data,
>   	/*
>
>

WARNING: multiple messages have this Message-ID (diff)
From: jeffy <jeffy.chen@rock-chips.com>
To: yao mark <mark.yao@rock-chips.com>,
	David Airlie <airlied@linux.ie>, Heiko Stuebner <heiko@sntech.de>
Cc: linux-rockchip@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: drm/rockchip: Correct vop out_mode configure
Date: Wed, 31 May 2017 10:05:23 +0800	[thread overview]
Message-ID: <592E24E3.3070001@rock-chips.com> (raw)
In-Reply-To: <1495885416-22216-1-git-send-email-mark.yao@rock-chips.com>

Hi Mark,

Reviewed-by: Jeffy Chen <jeffy.chen@rock-chips.com>

On 05/27/2017 07:43 PM, yao mark wrote:
> Force vop output mode on encoder driver seem not a good idea,
>
> EDP, HDMI, DisplayPort all have 10bit input on rk3399,
> On non-10bit vop, vop 8bit output bit[0-7] connect to the
> encoder high 8bit [2-9].
>
> So force RGB10 to RGB888 on vop driver would be better.
>
> And another problem, EDP check crtc id on atomic_check,
> but encoder maybe NULL, so out_mode configure would fail,
> it cause edp no display.
>
> Signed-off-by: Mark Yao <mark.yao@rock-chips.com>
> ---
>   drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 12 ------------
>   drivers/gpu/drm/rockchip/cdn-dp-core.c          |  9 ++-------
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c     |  8 ++++++++
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.h     |  3 +++
>   drivers/gpu/drm/rockchip/rockchip_vop_reg.c     |  2 ++
>   5 files changed, 15 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> index 1bccd82..9606121 100644
> --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c
> @@ -237,8 +237,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>   				      struct drm_connector_state *conn_state)
>   {
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state);
> -	struct rockchip_dp_device *dp = to_dp(encoder);
> -	int ret;
>
>   	/*
>   	 * The hardware IC designed that VOP must output the RGB10 video
> @@ -250,16 +248,6 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
>
>   	s->output_mode = ROCKCHIP_OUT_MODE_AAAA;
>   	s->output_type = DRM_MODE_CONNECTOR_eDP;
> -	if (dp->data->chip_type == RK3399_EDP) {
> -		/*
> -		 * For RK3399, VOP Lit must code the out mode to RGB888,
> -		 * VOP Big must code the out mode to RGB10.
> -		 */
> -		ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node,
> -							encoder);
> -		if (ret > 0)
> -			s->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	}
>
>   	return 0;
>   }
> diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> index a2169dd..14fa1f8 100644
> --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
> +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
> @@ -615,7 +615,6 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>   {
>   	struct cdn_dp_device *dp = encoder_to_dp(encoder);
>   	int ret, val;
> -	struct rockchip_crtc_state *state;
>
>   	ret = drm_of_encoder_active_endpoint_id(dp->dev->of_node, encoder);
>   	if (ret < 0) {
> @@ -625,14 +624,10 @@ static void cdn_dp_encoder_enable(struct drm_encoder *encoder)
>
>   	DRM_DEV_DEBUG_KMS(dp->dev, "vop %s output to cdn-dp\n",
>   			  (ret) ? "LIT" : "BIG");
> -	state = to_rockchip_crtc_state(encoder->crtc->state);
> -	if (ret) {
> +	if (ret)
>   		val = DP_SEL_VOP_LIT | (DP_SEL_VOP_LIT << 16);
> -		state->output_mode = ROCKCHIP_OUT_MODE_P888;
> -	} else {
> +	else
>   		val = DP_SEL_VOP_LIT << 16;
> -		state->output_mode = ROCKCHIP_OUT_MODE_AAAA;
> -	}
>
>   	ret = cdn_dp_grf_write(dp, GRF_SOC_CON9, val);
>   	if (ret)
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index 40a5e6e..c83f481 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -874,6 +874,7 @@ static bool vop_crtc_mode_fixup(struct drm_crtc *crtc,
>   static void vop_crtc_enable(struct drm_crtc *crtc)
>   {
>   	struct vop *vop = to_vop(crtc);
> +	const struct vop_data *vop_data = vop->data;
>   	struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state);
>   	struct drm_display_mode *adjusted_mode = &crtc->state->adjusted_mode;
>   	u16 hsync_len = adjusted_mode->hsync_end - adjusted_mode->hsync_start;
> @@ -966,6 +967,13 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
>   		DRM_DEV_ERROR(vop->dev, "unsupported connector_type [%d]\n",
>   			      s->output_type);
>   	}
> +
> +	/*
> +	 * if vop is not support RGB10 output, need force RGB10 to RGB888.
> +	 */
> +	if (s->output_mode == ROCKCHIP_OUT_MODE_AAAA &&
> +	    !(vop_data->feature & VOP_FEATURE_OUTPUT_RGB10))
> +		s->output_mode = ROCKCHIP_OUT_MODE_P888;
>   	VOP_CTRL_SET(vop, out_mode, s->output_mode);
>
>   	VOP_CTRL_SET(vop, htotal_pw, (htotal << 16) | hsync_len);
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> index 5a4faa85..9979fd0 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> @@ -142,6 +142,9 @@ struct vop_data {
>   	const struct vop_intr *intr;
>   	const struct vop_win_data *win;
>   	unsigned int win_size;
> +
> +#define VOP_FEATURE_OUTPUT_RGB10	BIT(0)
> +	u64 feature;
>   };
>
>   /* interrupt define */
> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> index 0da4444..bafd698 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> @@ -275,6 +275,7 @@ static const struct vop_intr rk3288_vop_intr = {
>   static const struct vop_data rk3288_vop = {
>   	.init_table = rk3288_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3288_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3288_vop_intr,
>   	.ctrl = &rk3288_ctrl_data,
>   	.win = rk3288_vop_win_data,
> @@ -343,6 +344,7 @@ static const struct vop_reg_data rk3399_init_reg_table[] = {
>   static const struct vop_data rk3399_vop_big = {
>   	.init_table = rk3399_init_reg_table,
>   	.table_size = ARRAY_SIZE(rk3399_init_reg_table),
> +	.feature = VOP_FEATURE_OUTPUT_RGB10,
>   	.intr = &rk3399_vop_intr,
>   	.ctrl = &rk3399_ctrl_data,
>   	/*
>
>

  reply	other threads:[~2017-05-31  2:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-27 11:43 [PATCH] drm/rockchip: Correct vop out_mode configure Mark Yao
2017-05-27 11:43 ` Mark Yao
2017-05-27 11:43 ` Mark Yao
2017-05-31  2:05 ` jeffy [this message]
2017-05-31  2:05   ` jeffy
2017-05-31  2:05   ` jeffy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=592E24E3.3070001@rock-chips.com \
    --to=jeffy.chen@rock-chips.com \
    --cc=airlied@linux.ie \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mark.yao@rock-chips.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.