heathrow: human-readable DBDMA channel names.

This commit is contained in:
Maxim Poliakovski 2023-07-24 15:20:52 +02:00
parent c2cd076662
commit 7bb7ff9f0f
2 changed files with 21 additions and 5 deletions

View File

@ -117,9 +117,9 @@ void HeathrowIC::notify_bar_change(int bar_num)
uint32_t HeathrowIC::dma_read(uint32_t offset, int size) {
switch (offset >> 8) {
case 1:
case MIO_OHARE_DMA_FLOPPY:
return this->floppy_dma->reg_read(offset & 0xFF, size);
case 8:
case MIO_OHARE_DMA_AUDIO_OUT:
return this->snd_out_dma->reg_read(offset & 0xFF, size);
default:
LOG_F(WARNING, "Unsupported DMA channel read, offset=0x%X", offset);
@ -130,10 +130,10 @@ uint32_t HeathrowIC::dma_read(uint32_t offset, int size) {
void HeathrowIC::dma_write(uint32_t offset, uint32_t value, int size) {
switch (offset >> 8) {
case 1:
case MIO_OHARE_DMA_FLOPPY:
this->floppy_dma->reg_write(offset & 0xFF, value, size);
break;
case 8:
case MIO_OHARE_DMA_AUDIO_OUT:
this->snd_out_dma->reg_write(offset & 0xFF, value, size);
break;
default:

View File

@ -40,7 +40,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
DMA space. Access to emulated legacy devices is accomplished by reading from/
writing to MIO's PCI address space at predefined offsets.
MIO includes a DMA controller that offers 15 DMA channels implementing
MIO includes a DMA controller that offers up to 12 DMA channels implementing
Apple's own DMA protocol called descriptor-based DMA (DBDMA).
Official documentation (that is somewhat incomplete and erroneous) can be
@ -219,6 +219,22 @@ enum {
MIO_OHARE_FEAT_CTRL = 0x38, // feature control register
};
/** O'Hare/Heathrow DBDMA channels. */
enum : uint8_t {
MIO_OHARE_DMA_MESH = 0,
MIO_OHARE_DMA_FLOPPY = 1,
MIO_OHARE_DMA_ETH_XMIT = 2,
MIO_OHARE_DMA_ETH_RCV = 3,
MIO_OHARE_DMA_ESSC_A_XMIT = 4,
MIO_OHARE_DMA_ESSC_A_RCV = 5,
MIO_OHARE_DMA_ESSC_B_XMIT = 6,
MIO_OHARE_DMA_ESSC_B_RCV = 7,
MIO_OHARE_DMA_AUDIO_OUT = 8,
MIO_OHARE_DMA_AUDIO_IN = 9,
MIO_OHARE_DMA_IDE0 = 0xB,
MIO_OHARE_DMA_IDE1 = 0xC
};
class HeathrowIC : public PCIDevice, public InterruptCtrl {
public:
HeathrowIC();