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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
---
   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





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux