hollywood.h

Go to the documentation of this file.
00001 /*
00002         libbroadway - A general purpose library to control the Wii.
00003         Hollywood register definitions
00004 
00005 Copyright (C) 2008, 2009        Haxx Enterprises <bushing@gmail.com>
00006 Copyright (C) 2008, 2009        Sven Peter <svenpeter@gmail.com>
00007 Copyright (C) 2008, 2009        Hector Martin "marcan" <marcan@marcansoft.com>
00008 Copyright (C) 2008, 2009        John Kelley <wiidev@kelley.ca>
00009 Copyright (C) 2009-2011         Alex Marshall <trap15@raidenii.net>
00010 
00011 # This code is licensed to you under the terms of the GNU GPL, version 2;
00012 # see file COPYING or http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
00013 */
00014 
00022 #ifndef __HOLLYWOOD_H__
00023 #define __HOLLYWOOD_H__
00024 
00025 /* Hollywood Registers */
00026 
00027 #define         HW_GC_REG_BASE                  0xC000000                       
00028 #define         HW_PPC_REG_BASE                 0xD000000                       
00029 #define         HW_REG_BASE                     0xD800000                       
00031 // The PPC can only see the first three IPC registers
00032 #define         HW_IPC_PPCMSG                   (HW_REG_BASE + 0x000)           
00033 #define         HW_IPC_PPCCTRL                  (HW_REG_BASE + 0x004)           
00034 #define         HW_IPC_ARMMSG                   (HW_REG_BASE + 0x008)           
00035 #define         HW_IPC_ARMCTRL                  (HW_REG_BASE + 0x00C)           
00037 #define         HW_TIMER                        (HW_REG_BASE + 0x010)           
00038 #define         HW_ALARM                        (HW_REG_BASE + 0x014)           
00040 #define         HW_PPCIRQFLAG                   (HW_REG_BASE + 0x030)           
00041 #define         HW_PPCIRQMASK                   (HW_REG_BASE + 0x034)           
00043 #define         HW_ARMIRQFLAG                   (HW_REG_BASE + 0x038)           
00044 #define         HW_ARMIRQMASK                   (HW_REG_BASE + 0x03C)           
00046 #define         HW_MEMMIRR                      (HW_REG_BASE + 0x060)           
00048 // something to do with PPCBOOT
00049 // and legacy DI it seems ?!?
00050 #define         HW_EXICTRL                      (HW_REG_BASE + 0x070)           
00051 #define         EXICTRL_ENABLE_EXI              1                               
00053 // PPC side of GPIO1 (Starlet can access this too)
00054 // Output state
00055 #define         HW_GPIO1B_OUT                   (HW_REG_BASE + 0x0C0)           
00056 // Direction (1=output)
00057 #define         HW_GPIO1B_DIR                   (HW_REG_BASE + 0x0C4)           
00058 // Input state
00059 #define         HW_GPIO1B_IN                    (HW_REG_BASE + 0x0C8)           
00060 // Interrupt level
00061 #define         HW_GPIO1B_INTLVL                (HW_REG_BASE + 0x0CC)           
00062 // Interrupt flags (write 1 to clear)
00063 #define         HW_GPIO1B_INTFLAG               (HW_REG_BASE + 0x0D0)           
00064 // Interrupt propagation enable
00065 // Do these interrupts go anywhere???
00066 #define         HW_GPIO1B_INTENABLE             (HW_REG_BASE + 0x0D4)           
00067 //??? seems to be a mirror of inputs at some point... power-up state?
00068 #define         HW_GPIO1B_INMIR                 (HW_REG_BASE + 0x0D8)           
00069 // 0xFFFFFF by default, if cleared disables respective outputs. Top bits non-settable.
00070 #define         HW_GPIO1_ENABLE                 (HW_REG_BASE + 0x0DC)           
00072 #define         HW_GPIO1_SLOT                   0x000020                        
00073 #define         HW_GPIO1_DEBUG                  0xFF0000
00074 #define         HW_GPIO1_DEBUG_SH               16
00075 
00076 // Starlet side of GPIO1
00077 // Output state
00078 #define         HW_GPIO1_OUT                    (HW_REG_BASE + 0x0E0)           
00079 // Direction (1=output)
00080 #define         HW_GPIO1_DIR                    (HW_REG_BASE + 0x0E4)           
00081 // Input state
00082 #define         HW_GPIO1_IN                     (HW_REG_BASE + 0x0E8)           
00083 // Interrupt level
00084 #define         HW_GPIO1_INTLVL                 (HW_REG_BASE + 0x0EC)           
00085 // Interrupt flags (write 1 to clear)
00086 #define         HW_GPIO1_INTFLAG                (HW_REG_BASE + 0x0F0)           
00087 // Interrupt propagation enable (interrupts go to main interrupt 0x800)
00088 #define         HW_GPIO1_INTENABLE              (HW_REG_BASE + 0x0F4)           
00089 //??? seems to be a mirror of inputs at some point... power-up state?
00090 #define         HW_GPIO1_INMIR                  (HW_REG_BASE + 0x0F8)           
00091 // Owner of each GPIO bit. If 1, GPIO1B registers assume control. If 0, GPIO1 registers assume control.
00092 #define         HW_GPIO1_OWNER                  (HW_REG_BASE + 0x0FC)           
00094 // ????
00095 #define         HW_DIFLAGS                      (HW_REG_BASE + 0x180)           
00096 #define         DIFLAGS_BOOT_CODE               0x100000
00097 
00098 // maybe a GPIO???
00099 #define         HW_RESETS                       (HW_REG_BASE + 0x194)           
00101 #define         HW_CLOCKS                       (HW_REG_BASE + 0x1B4)           
00103 #define         HW_GPIO2_OUT                    (HW_REG_BASE + 0x1C8)
00104 #define         HW_GPIO2_DIR                    (HW_REG_BASE + 0x1CC)
00105 #define         HW_GPIO2_IN                     (HW_REG_BASE + 0x1D0)
00106 
00107 #define         HW_OTP_CMD                      (HW_REG_BASE + 0x1EC)           
00108 #define         HW_OTP_DATA                     (HW_REG_BASE + 0x1F0)           
00109 #define         HW_VERSION                      (HW_REG_BASE + 0x214)           
00111 /* SI Registers */
00112 
00113 #define         SI_REG_BASE                     (HW_PPC_REG_BASE + 0x06400)     
00114 #define         SI_OUTBUF(x)                    (SI_REG_BASE + ((x) * 0xC))     
00115 #define         SI_OUTBUF_0                     SI_OUTBUF(0)
00116 #define         SI_OUTBUF_1                     SI_OUTBUF(1)
00117 #define         SI_OUTBUF_2                     SI_OUTBUF(2)
00118 #define         SI_OUTBUF_3                     SI_OUTBUF(3)
00119 #define         SI_INBUFA(x)                    (SI_REG_BASE + 0x4 + ((x) * 0xC))       
00120 #define         SI_INBUFA_0                     SI_INBUFA(0)
00121 #define         SI_INBUFA_1                     SI_INBUFA(1)
00122 #define         SI_INBUFA_2                     SI_INBUFA(2)
00123 #define         SI_INBUFA_3                     SI_INBUFA(3)
00124 #define         SI_INBUFB(x)                    (SI_REG_BASE + 0x8 + ((x) * 0xC))       
00125 #define         SI_INBUFB_0                     SI_INBUFB(0)
00126 #define         SI_INBUFB_1                     SI_INBUFB(1)
00127 #define         SI_INBUFB_2                     SI_INBUFB(2)
00128 #define         SI_INBUFB_3                     SI_INBUFB(3)
00129 #define         SI_POLL                         (SI_REG_BASE + 0x30)            
00130 #define         SI_CONTROL                      (SI_REG_BASE + 0x34)            
00131 #define         SI_STATUS                       (SI_REG_BASE + 0x38)            
00132 #define         SI_EXI_LOCK                     (SI_REG_BASE + 0x3C)            
00133 #define         SI_IO_BUF                       (SI_REG_BASE + 0x80)            
00135 /* NAND Registers */
00136 
00137 #define         NAND_REG_BASE                   (HW_PPC_REG_BASE + 0x10000)     
00139 #define         NAND_CMD                        (NAND_REG_BASE + 0x000)         
00140 #define         NAND_STATUS                     NAND_CMD                        
00141 #define         NAND_CONF                       (NAND_REG_BASE + 0x004)         
00142 #define         NAND_ADDR0                      (NAND_REG_BASE + 0x008)         
00143 #define         NAND_ADDR1                      (NAND_REG_BASE + 0x00C)         
00144 #define         NAND_DATA                       (NAND_REG_BASE + 0x010)         
00145 #define         NAND_ECC                        (NAND_REG_BASE + 0x014)         
00146 #define         NAND_UNK1                       (NAND_REG_BASE + 0x018)
00147 #define         NAND_UNK2                       (NAND_REG_BASE + 0x01C)
00148 
00149 /* AES Registers */
00150 
00151 #define         AES_REG_BASE                    (HW_PPC_REG_BASE + 0x20000)     
00153 #define         AES_CMD                         (AES_REG_BASE + 0x000)          
00154 #define         AES_SRC                         (AES_REG_BASE + 0x004)          
00155 #define         AES_DEST                        (AES_REG_BASE + 0x008)          
00156 #define         AES_KEY                         (AES_REG_BASE + 0x00C)          
00157 #define         AES_IV                          (AES_REG_BASE + 0x010)          
00159 /* SHA-1 Registers */
00160 
00161 #define         SHA_REG_BASE                    (HW_PPC_REG_BASE + 0x30000)     
00163 #define         SHA_CMD                         (SHA_REG_BASE + 0x000)          
00164 #define         SHA_SRC                         (SHA_REG_BASE + 0x004)          
00165 #define         SHA_H0                          (SHA_REG_BASE + 0x008)          
00166 #define         SHA_H1                          (SHA_REG_BASE + 0x00C)          
00167 #define         SHA_H2                          (SHA_REG_BASE + 0x010)          
00168 #define         SHA_H3                          (SHA_REG_BASE + 0x014)          
00169 #define         SHA_H4                          (SHA_REG_BASE + 0x018)          
00171 /* EHCI Registers */
00172 #define         EHCI_REG_BASE                   (HW_PPC_REG_BASE + 0x40000)     
00174 /* stolen from mikep2 patched linux kernel: drivers/usb/host/ohci-mipc.c */
00175 #define         EHCI_CTL                        (EHCI_REG_BASE + 0xCC)
00176 /* oh0 interrupt enable */
00177 #define         EHCI_CTL_OH0INTE                (1 << 11)
00178 /* oh1 interrupt enable */
00179 #define         EHCI_CTL_OH1INTE                (1 << 12)
00180 
00181 /* OHCI0 Registers */
00182 #define         OHCI0_REG_BASE                  (HW_PPC_REG_BASE + 0x50000)     
00184 /* OHCI1 Registers */
00185 #define         OHCI1_REG_BASE                  (HW_PPC_REG_BASE + 0x60000)     
00187 #define         OHCI_HC_REVISION                0x00
00188 #define         OHCI_HC_CONTROL                 0x04
00189 #define         OHCI_HC_COMMAND_STATUS          0x08
00190 #define         OHCI_HC_INT_STATUS              0x0C
00191 
00192 #define         OHCI_HC_INT_ENABLE              0x10
00193 #define         OHCI_HC_INT_DISABLE             0x14
00194 #define         OHCI_HC_HCCA                    0x18
00195 #define         OHCI_HC_PERIOD_CURRENT_ED       0x1C
00196 
00197 #define         OHCI_HC_CTRL_HEAD_ED            0x20
00198 #define         OHCI_HC_CTRL_CURRENT_ED         0x24
00199 #define         OHCI_HC_BULK_HEAD_ED            0x28
00200 #define         OHCI_HC_BULK_CURRENT_ED         0x2C
00201 
00202 #define         OHCI_HC_DONE_HEAD               0x30
00203 #define         OHCI_HC_FM_INTERVAL             0x34
00204 #define         OHCI_HC_FM_REMAINING            0x38
00205 #define         OHCI_HC_FM_NUMBER               0x3C
00206 
00207 #define         OHCI_HC_PERIODIC_START          0x40
00208 #define         OHCI_HC_LS_THRESHOLD            0x44
00209 #define         OHCI_HC_RH_DESCRIPTOR_A         0x48
00210 #define         OHCI_HC_RH_DESCRIPTOR_B         0x4C
00211 
00212 #define         OHCI_HC_RH_STATUS               0x50
00213 #define         OHCI_HC_RH_PORT_STATUS_1        0x54
00214 #define         OHCI_HC_RH_PORT_STATUS_2        0x58
00215 
00216 
00217 /* SD Host Controller Registers */
00218 #define         SDHC_REG_BASE                   (HW_PPC_REG_BASE + 0x70000)     
00221 /* Drive Interface registers */
00222 #define         DI_REG_BASE                     (HW_REG_BASE + 0x06000)         
00224 #define         DI_STATUS                       (DI_REG_BASE + 0x00)            
00225 #define         DI_COVER                        (DI_REG_BASE + 0x04)            
00226 #define         DI_COMMAND                      (DI_REG_BASE + 0x08)            
00227 #define         DI_CMD_OFFSET                   (DI_REG_BASE + 0x0C)            
00228 #define         DI_CMD_LEN                      (DI_REG_BASE + 0x10)            
00229 #define         DI_DMA_ADDR                     (DI_REG_BASE + 0x14)            
00230 #define         DI_DMA_LEN                      (DI_REG_BASE + 0x18)            
00231 #define         DI_CONTROL                      (DI_REG_BASE + 0x1C)            
00232 #define         DI_IMM_BUF                      (DI_REG_BASE + 0x20)            
00233 #define         DI_CONFIG                       (DI_REG_BASE + 0x24)            
00236 /* EXI Registers */
00237 #define         EXI_REG_BASE                    (HW_REG_BASE + 0x06800)         
00239 #define         EXI_BOOT_BASE                   (EXI_REG_BASE + 0x040)          
00241 #define         EXI_CSR(x)                      (EXI_REG_BASE + (0x14 * (x)) + 0x00)    
00242 #define         EXI_MAR(x)                      (EXI_REG_BASE + (0x14 * (x)) + 0x04)    
00243 #define         EXI_LENGTH(x)                   (EXI_REG_BASE + (0x14 * (x)) + 0x08)    
00244 #define         EXI_CR(x)                       (EXI_REG_BASE + (0x14 * (x)) + 0x0C)    
00245 #define         EXI_DATA(x)                     (EXI_REG_BASE + (0x14 * (x)) + 0x10)    
00247 /* EXI0 Registers */
00248 #define         EXI0_REG_BASE                   EXI_CSR(0)                      
00250 #define         EXI0_CSR                        EXI_CSR(0)
00251 #define         EXI0_MAR                        EXI_MAR(0)
00252 #define         EXI0_LENGTH                     EXI_LENGTH(0)
00253 #define         EXI0_CR                         EXI_CR(0)
00254 #define         EXI0_DATA                       EXI_DATA(0)
00255 
00256 /* EXI1 Registers */
00257 #define         EXI1_REG_BASE                   EXI_CSR(1)                      
00259 #define         EXI1_CSR                        EXI_CSR(1)
00260 #define         EXI1_MAR                        EXI_MAR(1)
00261 #define         EXI1_LENGTH                     EXI_LENGTH(1)
00262 #define         EXI1_CR                         EXI_CR(1)
00263 #define         EXI1_DATA                       EXI_DATA(1)
00264 
00265 /* EXIT2 Registers */
00266 #define         EXI2_REG_BASE                   EXI_CSR(2)                      
00268 #define         EXI2_CSR                        EXI_CSR(2)
00269 #define         EXI2_MAR                        EXI_MAR(2)
00270 #define         EXI2_LENGTH                     EXI_LENGTH(2)
00271 #define         EXI2_CR                         EXI_CR(2)
00272 #define         EXI2_DATA                       EXI_DATA(2)
00273 
00274 
00275 /* Audio Interface registers */
00276 #define         AI_REG_BASE                     (HW_REG_BASE + 0x06C00)         
00278 #define         AI_CONTROL                      (AI_REG_BASE + 0x00)            
00279 #define         AI_VOLUME                       (AI_REG_BASE + 0x04)            
00280 #define         AI_AISCNT                       (AI_REG_BASE + 0x08)            
00281 #define         AI_AIIT                         (AI_REG_BASE + 0x0C)            
00283 /* MEMORY CONTROLLER Registers */
00284 #define         MEM_REG_BASE                    (HW_REG_BASE + 0xB4000)         
00286 #define         MEM_PROT                        (MEM_REG_BASE + 0x20A)          
00287 #define         MEM_PROT_START                  (MEM_REG_BASE + 0x20C)          
00288 #define         MEM_PROT_END                    (MEM_REG_BASE + 0x20E)          
00289 #define         MEM_FLUSHREQ                    (MEM_REG_BASE + 0x228)          
00290 #define         MEM_FLUSHACK                    (MEM_REG_BASE + 0x22A)          
00298 #define         GX32BIT(x)                      ({ typeof(x) _x = (x); \
00299                                                  ((_x & 0xFFFF0000) >> 16) | \
00300                                                  ((_x & 0x0000FFFF) << 16); })
00301 
00302 /* Command Processor registers */
00303 #define         CP_REG_BASE                     (HW_GC_REG_BASE + 0x00000)      
00305 #define         CP_STATUS                       (CP_REG_BASE + 0x00)            
00306 #define         CP_CONTROL                      (CP_REG_BASE + 0x02)            
00307 #define         CP_CLEAR                        (CP_REG_BASE + 0x04)            
00308 #define         CP_TOKEN                        (CP_REG_BASE + 0x0E)            
00309 #define         CP_BOUNDING_BOX_L               (CP_REG_BASE + 0x10)            
00310 #define         CP_BOUNDING_BOX_R               (CP_REG_BASE + 0x12)            
00311 #define         CP_BOUNDING_BOX_T               (CP_REG_BASE + 0x14)            
00312 #define         CP_BOUNDING_BOX_B               (CP_REG_BASE + 0x16)            
00313 #define         CP_PIPE_BASE                    (CP_REG_BASE + 0x20)            
00314 #define         CP_PIPE_END                     (CP_REG_BASE + 0x24)            
00315 #define         CP_PIPE_HI_WATERMARK            (CP_REG_BASE + 0x28)            
00316 #define         CP_PIPE_LO_WATERMARK            (CP_REG_BASE + 0x2C)            
00317 #define         CP_PIPE_DISTANCE                (CP_REG_BASE + 0x30)            
00318 #define         CP_PIPE_WRITE_PTR               (CP_REG_BASE + 0x34)            
00319 #define         CP_PIPE_READ_PTR                (CP_REG_BASE + 0x38)            
00320 #define         CP_PIPE_BP                      (CP_REG_BASE + 0x3C)            
00322 /* Pixel Engine registers */
00323 #define         PE_REG_BASE                     (HW_GC_REG_BASE + 0x01000)      
00325 #define         PE_Z_CONFIG                     (PE_REG_BASE + 0x00)            
00326 #define         PE_ALPHA_CONFIG                 (PE_REG_BASE + 0x02)            
00327 #define         PE_DEST_ALPHA                   (PE_REG_BASE + 0x04)            
00328 #define         PE_ALPHA_MODE                   (PE_REG_BASE + 0x06)            
00329 #define         PE_ALPHA_READ                   (PE_REG_BASE + 0x08)            
00330 #define         PE_IRQ_FLAG                     (PE_REG_BASE + 0x0A)            
00331 #define         PE_TOKEN                        (PE_REG_BASE + 0x0E)            
00333 /* Video Interface registers */
00334 #define         VI_REG_BASE                     (HW_GC_REG_BASE + 0x02000)      
00336 #define         VI_VTIMING                      (VI_REG_BASE + 0x00)            
00337 #define         VI_STATUS                       (VI_REG_BASE + 0x02)            
00338 #define         VI_HTIMING0                     (VI_REG_BASE + 0x04)            
00339 #define         VI_HTIMING1                     (VI_REG_BASE + 0x08)            
00340 #define         VI_ODD_VTIMING                  (VI_REG_BASE + 0x0C)            
00341 #define         VI_EVEN_VTIMING                 (VI_REG_BASE + 0x10)            
00342 #define         VI_ODD_BBLANK_INTRVL            (VI_REG_BASE + 0x14)            
00343 #define         VI_EVEN_BBLANK_INTRVL           (VI_REG_BASE + 0x18)            
00344 #define         VI_FRAMEBUFFER_0                (VI_REG_BASE + 0x1C)            
00345 #define         VI_FRAMEBUFFER_0_R              (VI_REG_BASE + 0x20)            
00346 #define         VI_FRAMEBUFFER_1                (VI_REG_BASE + 0x24)            
00347 #define         VI_FRAMEBUFFER_1_R              (VI_REG_BASE + 0x28)            
00348 #define         VI_VPOS                         (VI_REG_BASE + 0x2C)            
00349 #define         VI_HPOS                         (VI_REG_BASE + 0x2E)            
00350 #define         VI_DISP_IRQ0                    (VI_REG_BASE + 0x30)            
00351 #define         VI_DISP_IRQ1                    (VI_REG_BASE + 0x34)            
00352 #define         VI_DISP_IRQ2                    (VI_REG_BASE + 0x38)            
00353 #define         VI_DISP_IRQ3                    (VI_REG_BASE + 0x3C)            
00354 #define         VI_DISP_LATCH0                  (VI_REG_BASE + 0x40)            
00355 #define         VI_DISP_LATCH1                  (VI_REG_BASE + 0x44)            
00356 #define         VI_HSCALE_WIDTH                 (VI_REG_BASE + 0x48)            
00357 #define         VI_HSCALE_STEP                  (VI_REG_BASE + 0x4A)            
00358 #define         VI_FILTER_COEFF0                (VI_REG_BASE + 0x4C)            
00359 #define         VI_FILTER_COEFF1                (VI_REG_BASE + 0x50)            
00360 #define         VI_FILTER_COEFF2                (VI_REG_BASE + 0x54)            
00361 #define         VI_FILTER_COEFF3                (VI_REG_BASE + 0x58)            
00362 #define         VI_FILTER_COEFF4                (VI_REG_BASE + 0x5C)            
00363 #define         VI_FILTER_COEFF5                (VI_REG_BASE + 0x60)            
00364 #define         VI_FILTER_COEFF6                (VI_REG_BASE + 0x64)            
00365 #define         VI_CLOCK                        (VI_REG_BASE + 0x6C)            
00366 #define         VI_DTV_STATUS                   (VI_REG_BASE + 0x6E)            
00367 #define         VI_UNKNOWN                      (VI_REG_BASE + 0x70)
00368 #define         VI_BORDER_HBLANK_END            (VI_REG_BASE + 0x72)            
00369 #define         VI_BORDER_HBLANK_START          (VI_REG_BASE + 0x74)            
00372 /* Processor Interface registers */
00373 #define         PI_REG_BASE                     (HW_GC_REG_BASE + 0x03000)      
00375 #define         PI_INT_CAUSE                    (PI_REG_BASE + 0x00)            
00376 #define         PI_INT_MASK                     (PI_REG_BASE + 0x04)            
00377 #define         PI_PIPE_START                   (PI_REG_BASE + 0x0C)            
00378 #define         PI_PIPE_END                     (PI_REG_BASE + 0x10)            
00379 #define         PI_PIPE_WRITE_PTR               (PI_REG_BASE + 0x14)            
00380 #define         PI_RESET                        (PI_REG_BASE + 0x24)            
00381 #define         PI_CONSOLE_TYPE                 (PI_REG_BASE + 0x2C)            
00384 /* Memory Interface registers */
00385 #define         MI_REG_BASE                     (HW_GC_REG_BASE + 0x04000)      
00387 #define         MI_PROT_RGNTOP(x)               (MI_REG_BASE + (4 * (x)))       
00388 #define         MI_PROT_RGNBOT(x)               (MI_REG_BASE + (4 * (x)) + 2)   
00389 #define         MI_PROT_RGN0T                   MI_PROT_RGNTOP(0)               
00390 #define         MI_PROT_RGN1T                   MI_PROT_RGNTOP(1)               
00391 #define         MI_PROT_RGN2T                   MI_PROT_RGNTOP(2)               
00392 #define         MI_PROT_RGN3T                   MI_PROT_RGNTOP(3)               
00393 #define         MI_PROT_RGN0B                   MI_PROT_RGNBOT(0)               
00394 #define         MI_PROT_RGN1B                   MI_PROT_RGNBOT(1)               
00395 #define         MI_PROT_RGN2B                   MI_PROT_RGNBOT(2)               
00396 #define         MI_PROT_RGN3B                   MI_PROT_RGNBOT(3)               
00397 #define         MI_PROT_TYPE                    (MI_REG_BASE + 0x10)            
00398 #define         MI_IRQMASK                      (MI_REG_BASE + 0x1C)            
00399 #define         MI_IRQFLAG                      (MI_REG_BASE + 0x1E)            
00401 /* Don't know what this does */
00402 /* Clear it in IRQ please */
00403 #define         MI_UNKNOWN1                     (MI_REG_BASE + 0x20)
00404 
00405 /* Address protection exception occurred on */
00406 #define         MI_PROT_ADDRLO                  (MI_REG_BASE + 0x22)            
00407 #define         MI_PROT_ADDRHI                  (MI_REG_BASE + 0x24)            
00409 /* What are these timers? */
00410 /* Writing anything clears them */
00411 #define         MI_PROT_TIMER0H                 (MI_REG_BASE + 0x32)            
00412 #define         MI_PROT_TIMER0L                 (MI_REG_BASE + 0x34)            
00413 #define         MI_PROT_TIMER1H                 (MI_REG_BASE + 0x36)            
00414 #define         MI_PROT_TIMER1L                 (MI_REG_BASE + 0x38)            
00415 #define         MI_PROT_TIMER2H                 (MI_REG_BASE + 0x3A)            
00416 #define         MI_PROT_TIMER2L                 (MI_REG_BASE + 0x3C)            
00417 #define         MI_PROT_TIMER3H                 (MI_REG_BASE + 0x3E)            
00418 #define         MI_PROT_TIMER3L                 (MI_REG_BASE + 0x40)            
00419 #define         MI_PROT_TIMER4H                 (MI_REG_BASE + 0x42)            
00420 #define         MI_PROT_TIMER4L                 (MI_REG_BASE + 0x44)            
00421 #define         MI_PROT_TIMER5H                 (MI_REG_BASE + 0x46)            
00422 #define         MI_PROT_TIMER5L                 (MI_REG_BASE + 0x48)            
00423 #define         MI_PROT_TIMER6H                 (MI_REG_BASE + 0x4A)            
00424 #define         MI_PROT_TIMER6L                 (MI_REG_BASE + 0x4C)            
00425 #define         MI_PROT_TIMER7H                 (MI_REG_BASE + 0x4E)            
00426 #define         MI_PROT_TIMER7L                 (MI_REG_BASE + 0x50)            
00427 #define         MI_PROT_TIMER8H                 (MI_REG_BASE + 0x52)            
00428 #define         MI_PROT_TIMER8L                 (MI_REG_BASE + 0x54)            
00429 #define         MI_PROT_TIMER9H                 (MI_REG_BASE + 0x56)            
00430 #define         MI_PROT_TIMER9L                 (MI_REG_BASE + 0x58)            
00432 /* Judging by this being with the timers, possibly a timer controller? */
00433 #define         MI_UNKNOWN2                     (MI_REG_BASE + 0x5A)            
00435 /* DSP registers */
00436 #define         DSP_REG_BASE                    (HW_GC_REG_BASE + 0x05000)      
00438 #define         DSP_MAILBOX_IN_H                (DSP_REG_BASE + 0x00)           
00439 #define         DSP_MAILBOX_IN_L                (DSP_REG_BASE + 0x02)           
00440 #define         DSP_MAILBOX_OUT_H               (DSP_REG_BASE + 0x04)           
00441 #define         DSP_MAILBOX_OUT_L               (DSP_REG_BASE + 0x06)           
00443 #define         DSP_STATUS                      (DSP_REG_BASE + 0x0A)           
00444 #define         DSP_IRQ_CTRL                    (DSP_REG_BASE + 0x10)           
00446 /* DSP ARAM interface */
00447 #define         DSP_ARAM_SIZE                   (DSP_REG_BASE + 0x12)           
00448 #define         DSP_ARAM_MODE                   (DSP_REG_BASE + 0x16)           
00449 #define         DSP_ARAM_REFRESH                (DSP_REG_BASE + 0x1A)           
00450 #define         DSP_ARAM_DMA_MEMADDR_H          (DSP_REG_BASE + 0x20)           
00451 #define         DSP_ARAM_DMA_MEMADDR_L          (DSP_REG_BASE + 0x22)           
00452 #define         DSP_ARAM_DMA_ARAMADDR_H         (DSP_REG_BASE + 0x24)           
00453 #define         DSP_ARAM_DMA_ARAMADDR_L         (DSP_REG_BASE + 0x26)           
00454 #define         DSP_ARAM_DMA_SIZE_H             (DSP_REG_BASE + 0x28)           
00455 #define         DSP_ARAM_DMA_SIZE_L             (DSP_REG_BASE + 0x2A)           
00457 /* Audio buffer interface */
00458 #define         DSP_DMA_START_H                 (DSP_REG_BASE + 0x30)           
00459 #define         DSP_DMA_START_L                 (DSP_REG_BASE + 0x32)           
00460 #define         DSP_DMA_SIZE                    (DSP_REG_BASE + 0x36)           
00461 #define         DSP_DMA_LEFT                    (DSP_REG_BASE + 0x3A)           
00463 #endif
00464 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines
Generated by  doxygen 1.6.3