Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3ba9122 authored by Rob Herring's avatar Rob Herring
Browse files

drm/panfrost: Add initial panfrost driver



This adds the initial driver for panfrost which supports Arm Mali
Midgard and Bifrost family of GPUs. Currently, only the T860 and
T760 Midgard GPUs have been tested.

v2:
- Add GPU reset on job hangs (Tomeu)
- Add RuntimePM and devfreq support (Tomeu)
- Fix T760 support (Tomeu)
- Add a TODO file (Rob, Tomeu)
- Support multiple in fences (Tomeu)
- Drop support for shared fences (Tomeu)
- Fill in MMU de-init (Rob)
- Move register definitions back to single header (Rob)
- Clean-up hardcoded job submit todos (Rob)
- Implement feature setup based on features/issues (Rob)
- Add remaining Midgard DT compatible strings (Rob)

v3:
- Add support for reset lines (Neil)
- Add a MAINTAINERS entry (Rob)
- Call dma_set_mask_and_coherent (Rob)
- Do MMU invalidate on map and unmap. Restructure to do a single
  operation per map/unmap call. (Rob)
- Add a missing explicit padding to struct drm_panfrost_create_bo (Rob)
- Fix 0-day error: "panfrost_devfreq.c:151:9-16: ERROR: PTR_ERR applied after initialization to constant on line 150"
- Drop HW_FEATURE_AARCH64_MMU conditional (Rob)
- s/DRM_PANFROST_PARAM_GPU_ID/DRM_PANFROST_PARAM_GPU_PROD_ID/ (Rob)
- Check drm_gem_shmem_prime_import_sg_table() error code (Rob)
- Re-order power on sequence (Rob)
- Move panfrost_acquire_object_fences() before scheduling job (Rob)
- Add NULL checks on array pointers in job clean-up (Rob)
- Rework devfreq (Tomeu)
- Fix devfreq init with no regulator (Rob)
- Various WS and comments clean-up (Rob)

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Lyude Paul <lyude@redhat.com>
Reviewed-by: default avatarAlyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: default avatarEric Anholt <eric@anholt.net>
Reviewed-by: default avatarSteven Price <steven.price@arm.com>
Signed-off-by: default avatarMarty E. Plummer <hanetzer@startmail.com>
Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190409205427.6943-4-robh@kernel.org
parent c117aa4d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1180,6 +1180,15 @@ F: drivers/gpu/drm/arm/
F:	Documentation/devicetree/bindings/display/arm,malidp.txt
F:	Documentation/gpu/afbc.rst

ARM MALI PANFROST DRM DRIVER
M:	Rob Herring <robh@kernel.org>
M:	Tomeu Vizoso <tomeu.vizoso@collabora.com>
L:	dri-devel@lists.freedesktop.org
S:	Supported
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	drivers/gpu/drm/panfrost/
F:	include/uapi/drm/panfrost_drm.h

ARM MFM AND FLOPPY DRIVERS
M:	Ian Molton <spyro@f2s.com>
S:	Maintained
+2 −0
Original line number Diff line number Diff line
@@ -337,6 +337,8 @@ source "drivers/gpu/drm/vboxvideo/Kconfig"

source "drivers/gpu/drm/lima/Kconfig"

source "drivers/gpu/drm/panfrost/Kconfig"

source "drivers/gpu/drm/aspeed/Kconfig"

# Keep legacy drivers last
+1 −0
Original line number Diff line number Diff line
@@ -112,4 +112,5 @@ obj-$(CONFIG_DRM_TVE200) += tve200/
obj-$(CONFIG_DRM_XEN) += xen/
obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/
obj-$(CONFIG_DRM_LIMA)  += lima/
obj-$(CONFIG_DRM_PANFROST) += panfrost/
obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/
+14 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

config DRM_PANFROST
	tristate "Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)"
	depends on DRM
	depends on ARM || ARM64 || COMPILE_TEST
	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.
+12 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

panfrost-y := \
	panfrost_drv.o \
	panfrost_device.o \
	panfrost_devfreq.o \
	panfrost_gem.o \
	panfrost_gpu.o \
	panfrost_job.o \
	panfrost_mmu.o

obj-$(CONFIG_DRM_PANFROST) += panfrost.o
Loading