[PATCH v9 20/23] drm/rockchip: Make VOP driver optional

Andy Yan andy.yan at rock-chips.com
Wed Mar 30 05:50:09 PDT 2022


Hi Sascha:

On 3/30/22 14:39, Sascha Hauer wrote:
> Hi Andy,
>
> On Tue, Mar 29, 2022 at 07:56:27PM +0800, Andy Yan wrote:
>> Hi Sascha:
>>
>> On 3/28/22 23:11, Sascha Hauer wrote:
>>> With upcoming VOP2 support VOP won't be the only choice anymore, so make
>>> the VOP driver optional.
>>>
>>> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
>>> ---
>>>    drivers/gpu/drm/rockchip/Kconfig            | 8 ++++++++
>>>    drivers/gpu/drm/rockchip/Makefile           | 3 ++-
>>>    drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +-
>>>    3 files changed, 11 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
>>> index fa5cfda4e90e3..7d22e2997a571 100644
>>> --- a/drivers/gpu/drm/rockchip/Kconfig
>>> +++ b/drivers/gpu/drm/rockchip/Kconfig
>>> @@ -23,8 +23,16 @@ config DRM_ROCKCHIP
>>>    if DRM_ROCKCHIP
>>> +config ROCKCHIP_VOP
>>> +	bool "Rockchip VOP driver"
>>> +	default y
>>> +	help
>>> +	  This selects support for the VOP driver. You should enable it
>>> +	  on all older SoCs up to RK3399.
> That reminds me that I wanted to rephrase this. Will change in next
> round.
>
>>> +
>>>    config ROCKCHIP_ANALOGIX_DP
>>>    	bool "Rockchip specific extensions for Analogix DP driver"
>>> +	depends on ROCKCHIP_VOP
>>
>> Aanlogix dp is also on vop2 base soc such as  rk356x and rk3588 .
> I added the dependency because analogix_dp-rockchip.c calls
> rockchip_drm_wait_vact_end() which is implemented in the VOP driver,
> so this driver currenty can't work with the VOP2 driver and can't
> be linked without the VOP driver being present.
> I'll add a few words to the commit message.


Maybe a better direction is move rockchip_drm_wait_vact_end from the VOP 
driver to rockchip_drm_drv.c

int rockchip_drm_wait_vact_end(struct drm_crtc *crtc, unsigned int 
mstimeout)
{
         struct rockchip_drm_private *priv;
         int pipe, ret = 0;

         if (!crtc)
                 return -ENODEV;

         if (mstimeout <= 0)
                 return -EINVAL;

         priv = crtc->dev->dev_private;
         pipe = drm_crtc_index(crtc);

         if (priv->crtc_funcs[pipe] && 
priv->crtc_funcs[pipe]->wait_vact_end)
                 ret = priv->crtc_funcs[pipe]->wait_vact_end(crtc, 
mstimeout);

         return ret;
}
EXPORT_SYMBOL(rockchip_drm_wait_vact_end);

> Sascha
>
>



More information about the Linux-rockchip mailing list