[PATCH 00/21] Imagination BXS-4-64 MC1 GPU support

Matt Coster
2024-11-05T16:08:25Z

This GPU is found in the TI AM68 family of SoCs, with initial support
added to the k3-j721s2 devicetree and tested on a TI SK-AM68 board.

A suitable firmware binary can currently be found in the IMG
linux-firmware repository[1] as powervr/rogue_36.53.104.796_v1.fw. A
merge request will be sent out for this within the next few weeks.

No new UAPI will be necessary for this platform as it is sufficiently
similar to the already supported AXE-1-16M.

The firmware successfully boots with basic job submission appearing to
work correctly, as tested with a few of Sascha Willems' Vulkan demos[2].
Note these do not necessarily render correctly due to incomplete UMD
support.

UMD support is still a work in progress. The branch at [3] is nearly
feature complete from a Vulkan perspective. We're currently undertaking
a significant rework of the compiler to better accommodate this and
other Rogue GPUs which means we can't do more comprehensive driver
testing at this point. However, we expect to send a Mesa merge request
for the initial version of the compiler (capable of passing some of the
Vulkan CTS smoke tests) within the next few days, with a fully
functional version of the compiler in place by the end of the year.

There are several dt-bindings changes at the beginning of this series.
We expect the result to be versatile enough to handle all Imagination
Rogue GPUs while being a strong foundation to build bindings for the
newer Volcanic architecture (for which we're currently developing
support).

[1]: https://gitlab.freedesktop.org/imagination/linux-firmware/-/tree/powervr
[2]: https://github.com/SaschaWillems/Vulkan
[3]: https://gitlab.freedesktop.org/imagination/mesa/-/tree/dev/bxs

---
Matt Coster (20):
dt-bindings: gpu: img: More explicit compatible strings
dt-bindings: gpu: img: Further constrain clocks
dt-bindings: gpu: img: Power domain details
dt-bindings: gpu: img: Allow dma-coherent
drm/imagination: Use more specific compatible strings
drm/imagination: Add power domain control
arm64: dts: ti: k3-am62: New GPU binding details
dt-bindings: gpu: img: Add BXS-4-64 devicetree bindings
drm/imagination: Revert to non-threaded IRQs
drm/imagination: Remove firmware enable_reg
drm/imagination: Rename event_mask -> status_mask
drm/imagination: Make has_fixed_data_addr a value
drm/imagination: Use a lookup table for fw defs
drm/imagination: Use callbacks for fw irq handling
drm/imagination: Add register required for RISC-V firmware
drm/imagination: Move ELF fw utils to common file
drm/imagination: Add platform overrides infrastructure
drm/imagination: Add device_memory_force_cpu_cached override
drm/imagination: Add support for TI AM68 GPU
arm64: dts: ti: k3-j721s2: Add GPU node

Sarah Walker (1):
drm/imagination: Add RISC-V firmware processor support

.../devicetree/bindings/gpu/img,powervr-rogue.yaml | 122 +++++++++++++--
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 3 +-
arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 12 ++
drivers/gpu/drm/imagination/Makefile | 2 +
drivers/gpu/drm/imagination/pvr_ccb.c | 25 +++-
drivers/gpu/drm/imagination/pvr_device.c | 130 ++++++++--------
drivers/gpu/drm/imagination/pvr_device.h | 77 +++++++++-
drivers/gpu/drm/imagination/pvr_drv.c | 58 +++++++-
drivers/gpu/drm/imagination/pvr_fw.c | 26 +++-
drivers/gpu/drm/imagination/pvr_fw.h | 85 +++++------
drivers/gpu/drm/imagination/pvr_fw_meta.c | 23 +--
drivers/gpu/drm/imagination/pvr_fw_mips.c | 82 ++---------
drivers/gpu/drm/imagination/pvr_fw_riscv.c | 163 +++++++++++++++++++++
drivers/gpu/drm/imagination/pvr_fw_startstop.c | 21 +++
drivers/gpu/drm/imagination/pvr_fw_util.c | 67 +++++++++
drivers/gpu/drm/imagination/pvr_gem.c | 3 +
drivers/gpu/drm/imagination/pvr_gem.h | 7 +-
drivers/gpu/drm/imagination/pvr_mmu.c | 7 +-
drivers/gpu/drm/imagination/pvr_power.c | 118 ++++++++++++++-
drivers/gpu/drm/imagination/pvr_power.h | 3 +
drivers/gpu/drm/imagination/pvr_queue.c | 23 ++-
drivers/gpu/drm/imagination/pvr_rogue_cr_defs.h | 17 ++-
drivers/gpu/drm/imagination/pvr_rogue_riscv.h | 41 ++++++
23 files changed, 881 insertions(+), 234 deletions(-)
---
base-commit: d78f0ee0406803cda8801fd5201746ccf89e5e4a