On 08/03/2019 01:24, Rob Herring wrote:
> From: "Marty E. Plummer" <hanet...@startmail.com>
> 
> This adds the initial driver for panfrost which supports Arm Mali
> Midgard and Bifrost family of GPUs. Currently, only the T860 Midgard GPU
> has been tested.
> 
> Cc: Maarten Lankhorst <maarten.lankho...@linux.intel.com>
> Cc: Maxime Ripard <maxime.rip...@bootlin.com>
> Cc: Sean Paul <s...@poorly.run>
> Cc: David Airlie <airl...@linux.ie>
> Cc: Daniel Vetter <dan...@ffwll.ch>
> Cc: Alyssa Rosenzweig <aly...@rosenzweig.io>
> Cc: Lyude Paul <ly...@redhat.com>
> Cc: Eric Anholt <e...@anholt.net>
> Signed-off-by: Marty E. Plummer <hanet...@startmail.com>
> Signed-off-by: Tomeu Vizoso <tomeu.viz...@collabora.com>
> Signed-off-by: Rob Herring <r...@kernel.org>
> ---
> Sending this out in the spirit of release early, release often. We're 
> close to parity compared to mesa + the vendor driver. There's a few 
> issues Tomeu is chasing. 
> 
> There's still some pieces of the h/w setup we've just hardcoded. Locking 
> in various places is probably missing. Error recovery is non-existent 
> (other than module unload/load). There's some work to add tracepoints 
> and perf counters that's not here yet. Bifrost GPUs are definitely not 
> supported yet other than identifying them. Primarily the MMU setup is 
> missing.
> 
> How's performance? Great, because I haven't measured it.
> 
> This patch and its dependencies are available here[1]. The mesa support 
> is here[2]. Both are likely to change (daily).
> 
> Rob
> 
> [1] https://gitlab.freedesktop.org/robh/linux-panfrost.git panfrost-rebase
> [2] https://gitlab.freedesktop.org/tomeu/mesa.git mainline-driver
> 
>  drivers/gpu/drm/Kconfig                      |   2 +
>  drivers/gpu/drm/Makefile                     |   1 +
>  drivers/gpu/drm/panfrost/Kconfig             |  14 +
>  drivers/gpu/drm/panfrost/Makefile            |  11 +
>  drivers/gpu/drm/panfrost/panfrost_device.c   | 127 ++++
>  drivers/gpu/drm/panfrost/panfrost_device.h   |  83 +++
>  drivers/gpu/drm/panfrost/panfrost_drv.c      | 419 ++++++++++++
>  drivers/gpu/drm/panfrost/panfrost_features.h | 308 +++++++++
>  drivers/gpu/drm/panfrost/panfrost_gem.c      |  92 +++
>  drivers/gpu/drm/panfrost/panfrost_gem.h      |  29 +
>  drivers/gpu/drm/panfrost/panfrost_gpu.c      | 464 +++++++++++++
>  drivers/gpu/drm/panfrost/panfrost_gpu.h      |  15 +
>  drivers/gpu/drm/panfrost/panfrost_issues.h   | 175 +++++
>  drivers/gpu/drm/panfrost/panfrost_job.c      | 662 +++++++++++++++++++
>  drivers/gpu/drm/panfrost/panfrost_job.h      |  47 ++
>  drivers/gpu/drm/panfrost/panfrost_mmu.c      | 409 ++++++++++++
>  drivers/gpu/drm/panfrost/panfrost_mmu.h      |  15 +
>  include/uapi/drm/panfrost_drm.h              | 138 ++++
>  18 files changed, 3011 insertions(+)
>  create mode 100644 drivers/gpu/drm/panfrost/Kconfig
>  create mode 100644 drivers/gpu/drm/panfrost/Makefile
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_device.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_device.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_drv.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_features.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_gem.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_gem.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_gpu.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_gpu.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_issues.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_job.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_job.h
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_mmu.c
>  create mode 100644 drivers/gpu/drm/panfrost/panfrost_mmu.h
>  create mode 100644 include/uapi/drm/panfrost_drm.h
> 
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index febdc102b75c..cdafe35f0576 100644
> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -335,6 +335,8 @@ source "drivers/gpu/drm/tve200/Kconfig"
>  
>  source "drivers/gpu/drm/xen/Kconfig"
>  
> +source "drivers/gpu/drm/panfrost/Kconfig"
> +
>  # Keep legacy drivers last
>  
>  menuconfig DRM_LEGACY
> diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
> index 7476ed945e30..66fd696ae60c 100644
> --- a/drivers/gpu/drm/Makefile
> +++ b/drivers/gpu/drm/Makefile
> @@ -110,3 +110,4 @@ obj-$(CONFIG_DRM_TINYDRM) += tinydrm/
>  obj-$(CONFIG_DRM_PL111) += pl111/
>  obj-$(CONFIG_DRM_TVE200) += tve200/
>  obj-$(CONFIG_DRM_XEN) += xen/
> +obj-$(CONFIG_DRM_PANFROST) += panfrost/
> diff --git a/drivers/gpu/drm/panfrost/Kconfig 
> b/drivers/gpu/drm/panfrost/Kconfig
> new file mode 100644
> index 000000000000..eb7283149354
> --- /dev/null
> +++ b/drivers/gpu/drm/panfrost/Kconfig
> @@ -0,0 +1,14 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +config DRM_PANFROST
> +     tristate "Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)"
> +     depends on DRM
> +     depends on ARCH_ROCKCHIP

Could you switch to
+       depends on ARM || ARM64 || COMPILE_TEST
instead of ARCH_ROCKHIP ?

It will simply bringup on non-rockchip boards.

Neil

> +     depends on MMU
> +     select DRM_SCHED
> +     select IOMMU_SUPPORT
> +     select IOMMU_IO_PGTABLE_LPAE
> +     select DRM_GEM_SHMEM_HELPER
> +     help
> +       DRM driver for ARM Mali Midgard (t6xx, t7xx, t8xx) and
> +       Bifrost (G3x, G5x, G7x) GPUs.

[...]

> +/**
> + * Returns the offset for the BO in the GPU address space for this DRM fd.
> + * This is the same value returned by drm_panfrost_create_bo, if that was 
> called
> + * from this DRM fd.
> + */
> +struct drm_panfrost_get_bo_offset {
> +     __u32 handle;
> +     __u32 pad;
> +     __u64 offset;
> +};
> +
> +#if defined(__cplusplus)
> +}
> +#endif
> +
> +#endif /* _PANFROST_DRM_H_ */
> 

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

Reply via email to