Introduce Tyr
Rust driver for ARM Mali CSF-based GPUs The skeleton is basically taken from Nova and also rust_platform_driver.rs. So far, this is just a very early-stage experiment, but it looks promissing: - We use the same uAPI as Panthor, although this needs a bit of work, since bindgen cannot translate #defines into Rust. - The DRM registration and a few IOCTLs are implemented. There is an igt branch with tests. - Basic iomem and register set implementation, so it's possible to program the device. - IRQ handling, so we can receive notifications from the device. - We can boot the firmware. - We can communicate with CSF using the global interface. We can submit requests and the MCU will appropriately respond in the ack field. - There is GEM_CREATE and VM_BIND support. - We can send a PING request to CSF, and it will acknowledge it successfully. Notably missing (apart from literally everything else): - Job subission logic through drm_scheduler and completion through dma_fences - Devfreq, pm_idle, etc. The name "Tyr" is inspired by Norse mythology, reflecting ARM's tradition of naming their GPUs after Nordic mythological figures and places. Co-developed-by:Alice Ryhl <alice.ryhl@google.com> Signed-off-by:
Alice Ryhl <alice.ryhl@google.com> Signed-off-by:
Daniel Almeida <daniel.almeida@collabora.com>
Showing
- drivers/gpu/drm/Kconfig 2 additions, 0 deletionsdrivers/gpu/drm/Kconfig
- drivers/gpu/drm/Makefile 1 addition, 0 deletionsdrivers/gpu/drm/Makefile
- drivers/gpu/drm/tyr/Kconfig 31 additions, 0 deletionsdrivers/gpu/drm/tyr/Kconfig
- drivers/gpu/drm/tyr/Makefile 3 additions, 0 deletionsdrivers/gpu/drm/tyr/Makefile
- drivers/gpu/drm/tyr/driver.rs 349 additions, 0 deletionsdrivers/gpu/drm/tyr/driver.rs
- drivers/gpu/drm/tyr/file.rs 235 additions, 0 deletionsdrivers/gpu/drm/tyr/file.rs
- drivers/gpu/drm/tyr/flags.rs 137 additions, 0 deletionsdrivers/gpu/drm/tyr/flags.rs
- drivers/gpu/drm/tyr/fw.rs 263 additions, 0 deletionsdrivers/gpu/drm/tyr/fw.rs
- drivers/gpu/drm/tyr/fw/global.rs 430 additions, 0 deletionsdrivers/gpu/drm/tyr/fw/global.rs
- drivers/gpu/drm/tyr/fw/irq.rs 74 additions, 0 deletionsdrivers/gpu/drm/tyr/fw/irq.rs
- drivers/gpu/drm/tyr/fw/parse.rs 572 additions, 0 deletionsdrivers/gpu/drm/tyr/fw/parse.rs
- drivers/gpu/drm/tyr/fw/parse/cursor.rs 91 additions, 0 deletionsdrivers/gpu/drm/tyr/fw/parse/cursor.rs
- drivers/gpu/drm/tyr/fw/wait.rs 108 additions, 0 deletionsdrivers/gpu/drm/tyr/fw/wait.rs
- drivers/gpu/drm/tyr/gem.rs 150 additions, 0 deletionsdrivers/gpu/drm/tyr/gem.rs
- drivers/gpu/drm/tyr/gpu.rs 213 additions, 0 deletionsdrivers/gpu/drm/tyr/gpu.rs
- drivers/gpu/drm/tyr/gpu/irq.rs 74 additions, 0 deletionsdrivers/gpu/drm/tyr/gpu/irq.rs
- drivers/gpu/drm/tyr/gpu/wait.rs 30 additions, 0 deletionsdrivers/gpu/drm/tyr/gpu/wait.rs
- drivers/gpu/drm/tyr/mmu.rs 208 additions, 0 deletionsdrivers/gpu/drm/tyr/mmu.rs
- drivers/gpu/drm/tyr/mmu/as_lock.rs 89 additions, 0 deletionsdrivers/gpu/drm/tyr/mmu/as_lock.rs
- drivers/gpu/drm/tyr/mmu/faults.rs 126 additions, 0 deletionsdrivers/gpu/drm/tyr/mmu/faults.rs
Loading
Please register or sign in to comment