diff options
Diffstat (limited to 'firmware/export/pp5020.h')
-rw-r--r-- | firmware/export/pp5020.h | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/firmware/export/pp5020.h b/firmware/export/pp5020.h index 36c88e00df..26d5bbaa51 100644 --- a/firmware/export/pp5020.h +++ b/firmware/export/pp5020.h | |||
@@ -23,6 +23,9 @@ | |||
23 | 23 | ||
24 | /* All info gleaned and/or copied from the iPodLinux project. */ | 24 | /* All info gleaned and/or copied from the iPodLinux project. */ |
25 | 25 | ||
26 | /* PCM addresses for obtaining buffers will be what DMA is using (physical) */ | ||
27 | #define HAVE_PCM_DMA_ADDRESS | ||
28 | |||
26 | /* USBOTG */ | 29 | /* USBOTG */ |
27 | #define USB_NUM_ENDPOINTS 3 | 30 | #define USB_NUM_ENDPOINTS 3 |
28 | /* This needs to be 2048 byte aligned, but USB_QHARRAY_ATTR should take care | 31 | /* This needs to be 2048 byte aligned, but USB_QHARRAY_ATTR should take care |
@@ -104,6 +107,10 @@ | |||
104 | #define USB_IRQ 20 | 107 | #define USB_IRQ 20 |
105 | #define IDE_IRQ 23 | 108 | #define IDE_IRQ 23 |
106 | #define FIREWIRE_IRQ 25 | 109 | #define FIREWIRE_IRQ 25 |
110 | #define DMA0_IRQ 26 | ||
111 | #define DMA1_IRQ 27 /* guess */ | ||
112 | #define DMA2_IRQ 28 /* guess */ | ||
113 | #define DMA3_IRQ 29 /* guess */ | ||
107 | #define HI_IRQ 30 | 114 | #define HI_IRQ 30 |
108 | #define GPIO0_IRQ (32+0) /* Ports A..D */ | 115 | #define GPIO0_IRQ (32+0) /* Ports A..D */ |
109 | #define GPIO1_IRQ (32+1) /* Ports E..H */ | 116 | #define GPIO1_IRQ (32+1) /* Ports E..H */ |
@@ -119,6 +126,10 @@ | |||
119 | #define IDE_MASK (1 << IDE_IRQ) | 126 | #define IDE_MASK (1 << IDE_IRQ) |
120 | #define USB_MASK (1 << USB_IRQ) | 127 | #define USB_MASK (1 << USB_IRQ) |
121 | #define FIREWIRE_MASK (1 << FIREWIRE_IRQ) | 128 | #define FIREWIRE_MASK (1 << FIREWIRE_IRQ) |
129 | #define DMA0_MASK (1 << DMA0_IRQ) | ||
130 | #define DMA1_MASK (1 << DMA1_IRQ) | ||
131 | #define DMA2_MASK (1 << DMA2_IRQ) | ||
132 | #define DMA3_MASK (1 << DMA3_IRQ) | ||
122 | #define HI_MASK (1 << HI_IRQ) | 133 | #define HI_MASK (1 << HI_IRQ) |
123 | #define GPIO0_MASK (1 << (GPIO0_IRQ-32)) | 134 | #define GPIO0_MASK (1 << (GPIO0_IRQ-32)) |
124 | #define GPIO1_MASK (1 << (GPIO1_IRQ-32)) | 135 | #define GPIO1_MASK (1 << (GPIO1_IRQ-32)) |
@@ -601,4 +612,88 @@ | |||
601 | #define MMAP7_LOGICAL (*(volatile unsigned long*)(0xf000f038)) | 612 | #define MMAP7_LOGICAL (*(volatile unsigned long*)(0xf000f038)) |
602 | #define MMAP7_PHYSICAL (*(volatile unsigned long*)(0xf000f03c)) | 613 | #define MMAP7_PHYSICAL (*(volatile unsigned long*)(0xf000f03c)) |
603 | 614 | ||
615 | /** DMA engine **/ | ||
616 | #define DMA0_BASE_ADDR 0x6000b000 | ||
617 | #define DMA1_BASE_ADDR 0x6000b020 | ||
618 | #define DMA2_BASE_ADDR 0x6000b040 | ||
619 | #define DMA3_BASE_ADDR 0x6000b060 | ||
620 | |||
621 | /* DMA request IDs */ | ||
622 | #define DMA_REQ_IIS 2 | ||
623 | #define DMA_REQ_SDHC 13 | ||
624 | |||
625 | #define DMA_MASTER_CONTROL (*(volatile unsigned long*)(0x6000a000)) | ||
626 | #define DMA_MASTER_STATUS (*(volatile unsigned long*)(0x6000a004)) | ||
627 | /* 1ul << DMA_REQ_xxx to set bit */ | ||
628 | #define DMA_REQ_STATUS (*(volatile unsigned long*)(0x6000a008)) | ||
629 | |||
630 | #define DMA_MASTER_CONTROL_EN (1 << 31) | ||
631 | |||
632 | #define DMA_MASTER_STATUS_CH0 (0x1 << 24) | ||
633 | #define DMA_MASTER_STATUS_CH1 (0x1 << 25) | ||
634 | #define DMA_MASTER_STATUS_CH2 (0x1 << 26) | ||
635 | #define DMA_MASTER_STATUS_CH3 (0x1 << 27) | ||
636 | |||
637 | #define DMA0_CMD (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x00)) | ||
638 | #define DMA0_STATUS (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x04)) | ||
639 | #define DMA0_RAM_ADDR (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x10)) | ||
640 | #define DMA0_FLAGS (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x14)) | ||
641 | #define DMA0_PER_ADDR (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x18)) | ||
642 | #define DMA0_INCR (*(volatile unsigned long*)(DMA0_BASE_ADDR+0x1c)) | ||
643 | |||
644 | #define DMA1_CMD (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x00)) | ||
645 | #define DMA1_STATUS (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x04)) | ||
646 | #define DMA1_RAM_ADDR (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x10)) | ||
647 | #define DMA1_FLAGS (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x14)) | ||
648 | #define DMA1_PER_ADDR (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x18)) | ||
649 | #define DMA1_INCR (*(volatile unsigned long*)(DMA1_BASE_ADDR+0x1c)) | ||
650 | |||
651 | #define DMA2_CMD (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x00)) | ||
652 | #define DMA2_STATUS (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x04)) | ||
653 | #define DMA2_RAM_ADDR (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x10)) | ||
654 | #define DMA2_FLAGS (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x14)) | ||
655 | #define DMA2_PER_ADDR (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x18)) | ||
656 | #define DMA2_INCR (*(volatile unsigned long*)(DMA2_BASE_ADDR+0x1c)) | ||
657 | |||
658 | #define DMA3_CMD (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x00)) | ||
659 | #define DMA3_STATUS (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x04)) | ||
660 | #define DMA3_RAM_ADDR (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x10)) | ||
661 | #define DMA3_FLAGS (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x14)) | ||
662 | #define DMA3_PER_ADDR (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x18)) | ||
663 | #define DMA3_INCR (*(volatile unsigned long*)(DMA3_BASE_ADDR+0x1c)) | ||
664 | |||
665 | #define DMA_CMD_SIZE (0xffff) | ||
666 | #define DMA_CMD_REQ_ID (0xf << 16) | ||
667 | #define DMA_CMD_REQ_ID_POS 16 | ||
668 | #define DMA_CMD_WAIT_REQ (0x1 << 24) | ||
669 | #define DMA_CMD_UNK25 (0x1 << 25) | ||
670 | #define DMA_CMD_SINGLE (0x1 << 26) /* stop on complete, no auto reload */ | ||
671 | #define DMA_CMD_RAM_TO_PER (0x1 << 27) /* otherwise per to ram */ | ||
672 | #define DMA_CMD_SLEEP_WAIT (0x1 << 28) | ||
673 | #define DMA_CMD_INTR (0x1 << 30) | ||
674 | #define DMA_CMD_START (0x1 << 31) | ||
675 | |||
676 | #define DMA_STATUS_SIZE_REMAIN (0xffff) | ||
677 | #define DMA_STATUS_INTR (0x1 << 30) | ||
678 | #define DMA_STATUS_BUSY (0x1 << 31) | ||
679 | |||
680 | #define DMA_FLAGS_ALIGNED (0x1 << 24) | ||
681 | #define DMA_FLAGS_UNK26 (0x1 << 26) | ||
682 | |||
683 | #define DMA_INCR_RANGE (0x7 << 16) | ||
684 | #define DMA_INCR_RANGE_UNL (0x0 << 16) | ||
685 | #define DMA_INCR_RANGE_FIXED (0x1 << 16) | ||
686 | #define DMA_INCR_RANGE_ALTR (0x2 << 16) | ||
687 | #define DMA_INCR_RANGE_4 (0x3 << 16) | ||
688 | #define DMA_INCR_RANGE_8 (0x4 << 16) | ||
689 | #define DMA_INCR_RANGE_16 (0x5 << 16) | ||
690 | #define DMA_INCR_RANGE_32 (0x6 << 16) | ||
691 | #define DMA_INCR_RANGE_64 (0x7 << 16) | ||
692 | |||
693 | #define DMA_INCR_WIDTH (0x7 << 28) | ||
694 | #define DMA_INCR_WIDTH_8BIT (0x0 << 28) | ||
695 | #define DMA_INCR_WIDTH_16BIT (0x1 << 28) | ||
696 | #define DMA_INCR_WIDTH_32BIT (0x2 << 28) | ||
697 | /* All other values reserved? */ | ||
698 | |||
604 | #endif /* __PP5020_H__ */ | 699 | #endif /* __PP5020_H__ */ |