summaryrefslogtreecommitdiff
path: root/firmware/export/pp5020.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export/pp5020.h')
-rw-r--r--firmware/export/pp5020.h95
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__ */