This series implements CCE engine setup and PIO packet submission/processing.
This forms the foundation for full CCE support in the future.

CCE engine microcode is stored but not executed in this series. Reverse
engineering doesn't look impossible but it will definitely be a journey
and I think an initial implementation of at least some of the CCE
packets in C will make it much easier.

Ring buffer (BM modes) and Type-3 packet processing will follow in
future series.

Hardware tests available at:
https://codeberg.org/cjab/ati-tests/src/branch/main/tests/cce.c

Tested on real hardware (Rage 128 Pro Ultra, PCI 1002:5446) and QEMU.

Chad Jablonski (7):
  ati-vga: Extract ati_reg_write() from ati_mm_write()
  ati-vga: Implement CCE/PM4 microcode register handling
  ati-vga: Implement PM4_BUFFER_CNTL register
  ati-vga: Implement PM4_MICRO_CNTL register
  ati-vga: Disable GUI engine MMIO writes when CCE enabled
  ati-vga: Process Type-0/1/2 CCE packets via PIO
  ati-vga: Implement PM4_STAT register and common flags

 hw/display/ati.c        | 123 ++++++++++++++++++++++---
 hw/display/ati_cce.c    | 194 ++++++++++++++++++++++++++++++++++++++++
 hw/display/ati_cce.h    |  91 +++++++++++++++++++
 hw/display/ati_int.h    |   4 +
 hw/display/ati_regs.h   |  16 ++++
 hw/display/meson.build  |   2 +-
 hw/display/trace-events |   9 ++
 7 files changed, 428 insertions(+), 11 deletions(-)
 create mode 100644 hw/display/ati_cce.c
 create mode 100644 hw/display/ati_cce.h

-- 
2.51.2


Reply via email to