diff mbox

drm/rockchip: vop: make vop register setting take effect

Message ID 1472269178-16593-1-git-send-email-zyw@rock-chips.com (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Zhong Aug. 27, 2016, 3:39 a.m. UTC
The setting of vop registers need a reg_done writing to take effect.
In vop_enable the vop return to work by by restoring registers, but the
registers do not take effect immediately, it should a vop_cfg_done
after it. The same thing is needed by windows_disabled in
vop_crtc_disable.

Signed-off-by: Chris Zhong <zyw@rock-chips.com>
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

yao mark Aug. 29, 2016, 2:51 a.m. UTC | #1
On 2016年08月27日 11:39, Chris Zhong wrote:
> The setting of vop registers need a reg_done writing to take effect.
> In vop_enable the vop return to work by by restoring registers, but the
> registers do not take effect immediately, it should a vop_cfg_done
> after it. The same thing is needed by windows_disabled in
> vop_crtc_disable.
>
> Signed-off-by: Chris Zhong <zyw@rock-chips.com>
> ---
>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++++
>   1 file changed, 4 insertions(+)
Thanks for your fix.

applied to my drm-fixes.

> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> index efbc41a..a0bfcff 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
> @@ -464,6 +464,8 @@ static int vop_enable(struct drm_crtc *crtc)
>   	}
>   
>   	memcpy(vop->regs, vop->regsbak, vop->len);
> +	vop_cfg_done(vop);
> +
>   	/*
>   	 * At here, vop clock & iommu is enable, R/W vop regs would be safe.
>   	 */
> @@ -513,6 +515,8 @@ static void vop_crtc_disable(struct drm_crtc *crtc)
>   		spin_unlock(&vop->reg_lock);
>   	}
>   
> +	vop_cfg_done(vop);
> +
>   	drm_crtc_vblank_off(crtc);
>   
>   	/*
Tomasz Figa Jan. 17, 2017, 9:32 a.m. UTC | #2
Hi Mark,

On Mon, Aug 29, 2016 at 11:51 AM, Mark yao <mark.yao@rock-chips.com> wrote:
> On 2016年08月27日 11:39, Chris Zhong wrote:
>>
>> The setting of vop registers need a reg_done writing to take effect.
>> In vop_enable the vop return to work by by restoring registers, but the
>> registers do not take effect immediately, it should a vop_cfg_done
>> after it. The same thing is needed by windows_disabled in
>> vop_crtc_disable.
>>
>> Signed-off-by: Chris Zhong <zyw@rock-chips.com>
>> ---
>>   drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>
> Thanks for your fix.
>
> applied to my drm-fixes.

This patch seems to have been lost in action. I don't see it in linux-next.

Best regards,
Tomasz
yao mark Jan. 17, 2017, 10:06 a.m. UTC | #3
Hi Tomasz

I had sent to Dave, but maybe something is wrong, it miss.

the patch is on this pull-request:
https://lists.freedesktop.org/archives/dri-devel/2016-September/118505.html

I forgot to double check it, I will resend to Dave soon.

Thanks.

On 2017年01月17日 17:32, Tomasz Figa wrote:
> Hi Mark,
>
> On Mon, Aug 29, 2016 at 11:51 AM, Mark yao <mark.yao@rock-chips.com> wrote:
>> On 2016年08月27日 11:39, Chris Zhong wrote:
>>> The setting of vop registers need a reg_done writing to take effect.
>>> In vop_enable the vop return to work by by restoring registers, but the
>>> registers do not take effect immediately, it should a vop_cfg_done
>>> after it. The same thing is needed by windows_disabled in
>>> vop_crtc_disable.
>>>
>>> Signed-off-by: Chris Zhong <zyw@rock-chips.com>
>>> ---
>>>    drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 4 ++++
>>>    1 file changed, 4 insertions(+)
>> Thanks for your fix.
>>
>> applied to my drm-fixes.
> This patch seems to have been lost in action. I don't see it in linux-next.
>
> Best regards,
> Tomasz
>
>
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index efbc41a..a0bfcff 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -464,6 +464,8 @@  static int vop_enable(struct drm_crtc *crtc)
 	}
 
 	memcpy(vop->regs, vop->regsbak, vop->len);
+	vop_cfg_done(vop);
+
 	/*
 	 * At here, vop clock & iommu is enable, R/W vop regs would be safe.
 	 */
@@ -513,6 +515,8 @@  static void vop_crtc_disable(struct drm_crtc *crtc)
 		spin_unlock(&vop->reg_lock);
 	}
 
+	vop_cfg_done(vop);
+
 	drm_crtc_vblank_off(crtc);
 
 	/*