Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: Alchemy: au1000.h move C-code after register definitions.

Move the C-code after all macros: A follow-on patch which
introduces helpers to access the SYS_* registers needs this to build.

Just code shuffling, no functional changes.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Cc: Linux-MIPS <linux-mips@linux-mips.org>
Patchwork: https://patchwork.linux-mips.org/patch/7461/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by

Manuel Lauss and committed by
Ralf Baechle
2ef1bb99 fb1a7602

+648 -644
+648 -644
arch/mips/include/asm/mach-au1x00/au1000.h
··· 34 34 #ifndef _AU1000_H_ 35 35 #define _AU1000_H_ 36 36 37 - 38 - #ifndef _LANGUAGE_ASSEMBLY 39 - 40 - #include <linux/delay.h> 41 - #include <linux/types.h> 42 - 43 - #include <linux/io.h> 44 - #include <linux/irq.h> 45 - 46 - #include <asm/cpu.h> 47 - 48 - /* cpu pipeline flush */ 49 - void static inline au_sync(void) 50 - { 51 - __asm__ volatile ("sync"); 52 - } 53 - 54 - void static inline au_sync_udelay(int us) 55 - { 56 - __asm__ volatile ("sync"); 57 - udelay(us); 58 - } 59 - 60 - void static inline au_sync_delay(int ms) 61 - { 62 - __asm__ volatile ("sync"); 63 - mdelay(ms); 64 - } 65 - 66 - void static inline au_writeb(u8 val, unsigned long reg) 67 - { 68 - *(volatile u8 *)reg = val; 69 - } 70 - 71 - void static inline au_writew(u16 val, unsigned long reg) 72 - { 73 - *(volatile u16 *)reg = val; 74 - } 75 - 76 - void static inline au_writel(u32 val, unsigned long reg) 77 - { 78 - *(volatile u32 *)reg = val; 79 - } 80 - 81 - static inline u8 au_readb(unsigned long reg) 82 - { 83 - return *(volatile u8 *)reg; 84 - } 85 - 86 - static inline u16 au_readw(unsigned long reg) 87 - { 88 - return *(volatile u16 *)reg; 89 - } 90 - 91 - static inline u32 au_readl(unsigned long reg) 92 - { 93 - return *(volatile u32 *)reg; 94 - } 95 - 96 - /* Early Au1000 have a write-only SYS_CPUPLL register. */ 97 - static inline int au1xxx_cpu_has_pll_wo(void) 98 - { 99 - switch (read_c0_prid()) { 100 - case 0x00030100: /* Au1000 DA */ 101 - case 0x00030201: /* Au1000 HA */ 102 - case 0x00030202: /* Au1000 HB */ 103 - return 1; 104 - } 105 - return 0; 106 - } 107 - 108 - /* does CPU need CONFIG[OD] set to fix tons of errata? */ 109 - static inline int au1xxx_cpu_needs_config_od(void) 110 - { 111 - /* 112 - * c0_config.od (bit 19) was write only (and read as 0) on the 113 - * early revisions of Alchemy SOCs. It disables the bus trans- 114 - * action overlapping and needs to be set to fix various errata. 115 - */ 116 - switch (read_c0_prid()) { 117 - case 0x00030100: /* Au1000 DA */ 118 - case 0x00030201: /* Au1000 HA */ 119 - case 0x00030202: /* Au1000 HB */ 120 - case 0x01030200: /* Au1500 AB */ 121 - /* 122 - * Au1100/Au1200 errata actually keep silence about this bit, 123 - * so we set it just in case for those revisions that require 124 - * it to be set according to the (now gone) cpu_table. 125 - */ 126 - case 0x02030200: /* Au1100 AB */ 127 - case 0x02030201: /* Au1100 BA */ 128 - case 0x02030202: /* Au1100 BC */ 129 - case 0x04030201: /* Au1200 AC */ 130 - return 1; 131 - } 132 - return 0; 133 - } 134 - 135 - #define ALCHEMY_CPU_UNKNOWN -1 136 - #define ALCHEMY_CPU_AU1000 0 137 - #define ALCHEMY_CPU_AU1500 1 138 - #define ALCHEMY_CPU_AU1100 2 139 - #define ALCHEMY_CPU_AU1550 3 140 - #define ALCHEMY_CPU_AU1200 4 141 - #define ALCHEMY_CPU_AU1300 5 142 - 143 - static inline int alchemy_get_cputype(void) 144 - { 145 - switch (read_c0_prid() & (PRID_OPT_MASK | PRID_COMP_MASK)) { 146 - case 0x00030000: 147 - return ALCHEMY_CPU_AU1000; 148 - break; 149 - case 0x01030000: 150 - return ALCHEMY_CPU_AU1500; 151 - break; 152 - case 0x02030000: 153 - return ALCHEMY_CPU_AU1100; 154 - break; 155 - case 0x03030000: 156 - return ALCHEMY_CPU_AU1550; 157 - break; 158 - case 0x04030000: 159 - case 0x05030000: 160 - return ALCHEMY_CPU_AU1200; 161 - break; 162 - case 0x800c0000: 163 - return ALCHEMY_CPU_AU1300; 164 - break; 165 - } 166 - 167 - return ALCHEMY_CPU_UNKNOWN; 168 - } 169 - 170 - /* return number of uarts on a given cputype */ 171 - static inline int alchemy_get_uarts(int type) 172 - { 173 - switch (type) { 174 - case ALCHEMY_CPU_AU1000: 175 - case ALCHEMY_CPU_AU1300: 176 - return 4; 177 - case ALCHEMY_CPU_AU1500: 178 - case ALCHEMY_CPU_AU1200: 179 - return 2; 180 - case ALCHEMY_CPU_AU1100: 181 - case ALCHEMY_CPU_AU1550: 182 - return 3; 183 - } 184 - return 0; 185 - } 186 - 187 - /* enable an UART block if it isn't already */ 188 - static inline void alchemy_uart_enable(u32 uart_phys) 189 - { 190 - void __iomem *addr = (void __iomem *)KSEG1ADDR(uart_phys); 191 - 192 - /* reset, enable clock, deassert reset */ 193 - if ((__raw_readl(addr + 0x100) & 3) != 3) { 194 - __raw_writel(0, addr + 0x100); 195 - wmb(); 196 - __raw_writel(1, addr + 0x100); 197 - wmb(); 198 - } 199 - __raw_writel(3, addr + 0x100); 200 - wmb(); 201 - } 202 - 203 - static inline void alchemy_uart_disable(u32 uart_phys) 204 - { 205 - void __iomem *addr = (void __iomem *)KSEG1ADDR(uart_phys); 206 - __raw_writel(0, addr + 0x100); /* UART_MOD_CNTRL */ 207 - wmb(); 208 - } 209 - 210 - static inline void alchemy_uart_putchar(u32 uart_phys, u8 c) 211 - { 212 - void __iomem *base = (void __iomem *)KSEG1ADDR(uart_phys); 213 - int timeout, i; 214 - 215 - /* check LSR TX_EMPTY bit */ 216 - timeout = 0xffffff; 217 - do { 218 - if (__raw_readl(base + 0x1c) & 0x20) 219 - break; 220 - /* slow down */ 221 - for (i = 10000; i; i--) 222 - asm volatile ("nop"); 223 - } while (--timeout); 224 - 225 - __raw_writel(c, base + 0x04); /* tx */ 226 - wmb(); 227 - } 228 - 229 - /* return number of ethernet MACs on a given cputype */ 230 - static inline int alchemy_get_macs(int type) 231 - { 232 - switch (type) { 233 - case ALCHEMY_CPU_AU1000: 234 - case ALCHEMY_CPU_AU1500: 235 - case ALCHEMY_CPU_AU1550: 236 - return 2; 237 - case ALCHEMY_CPU_AU1100: 238 - return 1; 239 - } 240 - return 0; 241 - } 242 - 243 - /* arch/mips/au1000/common/clocks.c */ 244 - extern void set_au1x00_speed(unsigned int new_freq); 245 - extern unsigned int get_au1x00_speed(void); 246 - extern void set_au1x00_uart_baud_base(unsigned long new_baud_base); 247 - extern unsigned long get_au1x00_uart_baud_base(void); 248 - extern unsigned long au1xxx_calc_clock(void); 249 - 250 - /* PM: arch/mips/alchemy/common/sleeper.S, power.c, irq.c */ 251 - void alchemy_sleep_au1000(void); 252 - void alchemy_sleep_au1550(void); 253 - void alchemy_sleep_au1300(void); 254 - void au_sleep(void); 255 - 256 - /* USB: drivers/usb/host/alchemy-common.c */ 257 - enum alchemy_usb_block { 258 - ALCHEMY_USB_OHCI0, 259 - ALCHEMY_USB_UDC0, 260 - ALCHEMY_USB_EHCI0, 261 - ALCHEMY_USB_OTG0, 262 - ALCHEMY_USB_OHCI1, 263 - }; 264 - int alchemy_usb_control(int block, int enable); 265 - 266 - /* PCI controller platform data */ 267 - struct alchemy_pci_platdata { 268 - int (*board_map_irq)(const struct pci_dev *d, u8 slot, u8 pin); 269 - int (*board_pci_idsel)(unsigned int devsel, int assert); 270 - /* bits to set/clear in PCI_CONFIG register */ 271 - unsigned long pci_cfg_set; 272 - unsigned long pci_cfg_clr; 273 - }; 274 - 275 - /* Multifunction pins: Each of these pins can either be assigned to the 276 - * GPIO controller or a on-chip peripheral. 277 - * Call "au1300_pinfunc_to_dev()" or "au1300_pinfunc_to_gpio()" to 278 - * assign one of these to either the GPIO controller or the device. 279 - */ 280 - enum au1300_multifunc_pins { 281 - /* wake-from-str pins 0-3 */ 282 - AU1300_PIN_WAKE0 = 0, AU1300_PIN_WAKE1, AU1300_PIN_WAKE2, 283 - AU1300_PIN_WAKE3, 284 - /* external clock sources for PSCs: 4-5 */ 285 - AU1300_PIN_EXTCLK0, AU1300_PIN_EXTCLK1, 286 - /* 8bit MMC interface on SD0: 6-9 */ 287 - AU1300_PIN_SD0DAT4, AU1300_PIN_SD0DAT5, AU1300_PIN_SD0DAT6, 288 - AU1300_PIN_SD0DAT7, 289 - /* aux clk input for freqgen 3: 10 */ 290 - AU1300_PIN_FG3AUX, 291 - /* UART1 pins: 11-18 */ 292 - AU1300_PIN_U1RI, AU1300_PIN_U1DCD, AU1300_PIN_U1DSR, 293 - AU1300_PIN_U1CTS, AU1300_PIN_U1RTS, AU1300_PIN_U1DTR, 294 - AU1300_PIN_U1RX, AU1300_PIN_U1TX, 295 - /* UART0 pins: 19-24 */ 296 - AU1300_PIN_U0RI, AU1300_PIN_U0DCD, AU1300_PIN_U0DSR, 297 - AU1300_PIN_U0CTS, AU1300_PIN_U0RTS, AU1300_PIN_U0DTR, 298 - /* UART2: 25-26 */ 299 - AU1300_PIN_U2RX, AU1300_PIN_U2TX, 300 - /* UART3: 27-28 */ 301 - AU1300_PIN_U3RX, AU1300_PIN_U3TX, 302 - /* LCD controller PWMs, ext pixclock: 29-31 */ 303 - AU1300_PIN_LCDPWM0, AU1300_PIN_LCDPWM1, AU1300_PIN_LCDCLKIN, 304 - /* SD1 interface: 32-37 */ 305 - AU1300_PIN_SD1DAT0, AU1300_PIN_SD1DAT1, AU1300_PIN_SD1DAT2, 306 - AU1300_PIN_SD1DAT3, AU1300_PIN_SD1CMD, AU1300_PIN_SD1CLK, 307 - /* SD2 interface: 38-43 */ 308 - AU1300_PIN_SD2DAT0, AU1300_PIN_SD2DAT1, AU1300_PIN_SD2DAT2, 309 - AU1300_PIN_SD2DAT3, AU1300_PIN_SD2CMD, AU1300_PIN_SD2CLK, 310 - /* PSC0/1 clocks: 44-45 */ 311 - AU1300_PIN_PSC0CLK, AU1300_PIN_PSC1CLK, 312 - /* PSCs: 46-49/50-53/54-57/58-61 */ 313 - AU1300_PIN_PSC0SYNC0, AU1300_PIN_PSC0SYNC1, AU1300_PIN_PSC0D0, 314 - AU1300_PIN_PSC0D1, 315 - AU1300_PIN_PSC1SYNC0, AU1300_PIN_PSC1SYNC1, AU1300_PIN_PSC1D0, 316 - AU1300_PIN_PSC1D1, 317 - AU1300_PIN_PSC2SYNC0, AU1300_PIN_PSC2SYNC1, AU1300_PIN_PSC2D0, 318 - AU1300_PIN_PSC2D1, 319 - AU1300_PIN_PSC3SYNC0, AU1300_PIN_PSC3SYNC1, AU1300_PIN_PSC3D0, 320 - AU1300_PIN_PSC3D1, 321 - /* PCMCIA interface: 62-70 */ 322 - AU1300_PIN_PCE2, AU1300_PIN_PCE1, AU1300_PIN_PIOS16, 323 - AU1300_PIN_PIOR, AU1300_PIN_PWE, AU1300_PIN_PWAIT, 324 - AU1300_PIN_PREG, AU1300_PIN_POE, AU1300_PIN_PIOW, 325 - /* camera interface H/V sync inputs: 71-72 */ 326 - AU1300_PIN_CIMLS, AU1300_PIN_CIMFS, 327 - /* PSC2/3 clocks: 73-74 */ 328 - AU1300_PIN_PSC2CLK, AU1300_PIN_PSC3CLK, 329 - }; 330 - 331 - /* GPIC (Au1300) pin management: arch/mips/alchemy/common/gpioint.c */ 332 - extern void au1300_pinfunc_to_gpio(enum au1300_multifunc_pins gpio); 333 - extern void au1300_pinfunc_to_dev(enum au1300_multifunc_pins gpio); 334 - extern void au1300_set_irq_priority(unsigned int irq, int p); 335 - extern void au1300_set_dbdma_gpio(int dchan, unsigned int gpio); 336 - 337 - /* Au1300 allows to disconnect certain blocks from internal power supply */ 338 - enum au1300_vss_block { 339 - AU1300_VSS_MPE = 0, 340 - AU1300_VSS_BSA, 341 - AU1300_VSS_GPE, 342 - AU1300_VSS_MGP, 343 - }; 344 - 345 - extern void au1300_vss_block_control(int block, int enable); 346 - 347 - 348 37 /* SOC Interrupt numbers */ 349 38 /* Au1000-style (IC0/1): 2 controllers with 32 sources each */ 350 39 #define AU1000_INTC0_INT_BASE (MIPS_CPU_IRQ_BASE + 8) ··· 47 358 #define ALCHEMY_GPIC_INT_NUM 128 48 359 #define ALCHEMY_GPIC_INT_LAST (ALCHEMY_GPIC_INT_BASE + ALCHEMY_GPIC_INT_NUM - 1) 49 360 50 - enum soc_au1000_ints { 51 - AU1000_FIRST_INT = AU1000_INTC0_INT_BASE, 52 - AU1000_UART0_INT = AU1000_FIRST_INT, 53 - AU1000_UART1_INT, 54 - AU1000_UART2_INT, 55 - AU1000_UART3_INT, 56 - AU1000_SSI0_INT, 57 - AU1000_SSI1_INT, 58 - AU1000_DMA_INT_BASE, 59 - 60 - AU1000_TOY_INT = AU1000_FIRST_INT + 14, 61 - AU1000_TOY_MATCH0_INT, 62 - AU1000_TOY_MATCH1_INT, 63 - AU1000_TOY_MATCH2_INT, 64 - AU1000_RTC_INT, 65 - AU1000_RTC_MATCH0_INT, 66 - AU1000_RTC_MATCH1_INT, 67 - AU1000_RTC_MATCH2_INT, 68 - AU1000_IRDA_TX_INT, 69 - AU1000_IRDA_RX_INT, 70 - AU1000_USB_DEV_REQ_INT, 71 - AU1000_USB_DEV_SUS_INT, 72 - AU1000_USB_HOST_INT, 73 - AU1000_ACSYNC_INT, 74 - AU1000_MAC0_DMA_INT, 75 - AU1000_MAC1_DMA_INT, 76 - AU1000_I2S_UO_INT, 77 - AU1000_AC97C_INT, 78 - AU1000_GPIO0_INT, 79 - AU1000_GPIO1_INT, 80 - AU1000_GPIO2_INT, 81 - AU1000_GPIO3_INT, 82 - AU1000_GPIO4_INT, 83 - AU1000_GPIO5_INT, 84 - AU1000_GPIO6_INT, 85 - AU1000_GPIO7_INT, 86 - AU1000_GPIO8_INT, 87 - AU1000_GPIO9_INT, 88 - AU1000_GPIO10_INT, 89 - AU1000_GPIO11_INT, 90 - AU1000_GPIO12_INT, 91 - AU1000_GPIO13_INT, 92 - AU1000_GPIO14_INT, 93 - AU1000_GPIO15_INT, 94 - AU1000_GPIO16_INT, 95 - AU1000_GPIO17_INT, 96 - AU1000_GPIO18_INT, 97 - AU1000_GPIO19_INT, 98 - AU1000_GPIO20_INT, 99 - AU1000_GPIO21_INT, 100 - AU1000_GPIO22_INT, 101 - AU1000_GPIO23_INT, 102 - AU1000_GPIO24_INT, 103 - AU1000_GPIO25_INT, 104 - AU1000_GPIO26_INT, 105 - AU1000_GPIO27_INT, 106 - AU1000_GPIO28_INT, 107 - AU1000_GPIO29_INT, 108 - AU1000_GPIO30_INT, 109 - AU1000_GPIO31_INT, 110 - }; 111 - 112 - enum soc_au1100_ints { 113 - AU1100_FIRST_INT = AU1000_INTC0_INT_BASE, 114 - AU1100_UART0_INT = AU1100_FIRST_INT, 115 - AU1100_UART1_INT, 116 - AU1100_SD_INT, 117 - AU1100_UART3_INT, 118 - AU1100_SSI0_INT, 119 - AU1100_SSI1_INT, 120 - AU1100_DMA_INT_BASE, 121 - 122 - AU1100_TOY_INT = AU1100_FIRST_INT + 14, 123 - AU1100_TOY_MATCH0_INT, 124 - AU1100_TOY_MATCH1_INT, 125 - AU1100_TOY_MATCH2_INT, 126 - AU1100_RTC_INT, 127 - AU1100_RTC_MATCH0_INT, 128 - AU1100_RTC_MATCH1_INT, 129 - AU1100_RTC_MATCH2_INT, 130 - AU1100_IRDA_TX_INT, 131 - AU1100_IRDA_RX_INT, 132 - AU1100_USB_DEV_REQ_INT, 133 - AU1100_USB_DEV_SUS_INT, 134 - AU1100_USB_HOST_INT, 135 - AU1100_ACSYNC_INT, 136 - AU1100_MAC0_DMA_INT, 137 - AU1100_GPIO208_215_INT, 138 - AU1100_LCD_INT, 139 - AU1100_AC97C_INT, 140 - AU1100_GPIO0_INT, 141 - AU1100_GPIO1_INT, 142 - AU1100_GPIO2_INT, 143 - AU1100_GPIO3_INT, 144 - AU1100_GPIO4_INT, 145 - AU1100_GPIO5_INT, 146 - AU1100_GPIO6_INT, 147 - AU1100_GPIO7_INT, 148 - AU1100_GPIO8_INT, 149 - AU1100_GPIO9_INT, 150 - AU1100_GPIO10_INT, 151 - AU1100_GPIO11_INT, 152 - AU1100_GPIO12_INT, 153 - AU1100_GPIO13_INT, 154 - AU1100_GPIO14_INT, 155 - AU1100_GPIO15_INT, 156 - AU1100_GPIO16_INT, 157 - AU1100_GPIO17_INT, 158 - AU1100_GPIO18_INT, 159 - AU1100_GPIO19_INT, 160 - AU1100_GPIO20_INT, 161 - AU1100_GPIO21_INT, 162 - AU1100_GPIO22_INT, 163 - AU1100_GPIO23_INT, 164 - AU1100_GPIO24_INT, 165 - AU1100_GPIO25_INT, 166 - AU1100_GPIO26_INT, 167 - AU1100_GPIO27_INT, 168 - AU1100_GPIO28_INT, 169 - AU1100_GPIO29_INT, 170 - AU1100_GPIO30_INT, 171 - AU1100_GPIO31_INT, 172 - }; 173 - 174 - enum soc_au1500_ints { 175 - AU1500_FIRST_INT = AU1000_INTC0_INT_BASE, 176 - AU1500_UART0_INT = AU1500_FIRST_INT, 177 - AU1500_PCI_INTA, 178 - AU1500_PCI_INTB, 179 - AU1500_UART3_INT, 180 - AU1500_PCI_INTC, 181 - AU1500_PCI_INTD, 182 - AU1500_DMA_INT_BASE, 183 - 184 - AU1500_TOY_INT = AU1500_FIRST_INT + 14, 185 - AU1500_TOY_MATCH0_INT, 186 - AU1500_TOY_MATCH1_INT, 187 - AU1500_TOY_MATCH2_INT, 188 - AU1500_RTC_INT, 189 - AU1500_RTC_MATCH0_INT, 190 - AU1500_RTC_MATCH1_INT, 191 - AU1500_RTC_MATCH2_INT, 192 - AU1500_PCI_ERR_INT, 193 - AU1500_RESERVED_INT, 194 - AU1500_USB_DEV_REQ_INT, 195 - AU1500_USB_DEV_SUS_INT, 196 - AU1500_USB_HOST_INT, 197 - AU1500_ACSYNC_INT, 198 - AU1500_MAC0_DMA_INT, 199 - AU1500_MAC1_DMA_INT, 200 - AU1500_AC97C_INT = AU1500_FIRST_INT + 31, 201 - AU1500_GPIO0_INT, 202 - AU1500_GPIO1_INT, 203 - AU1500_GPIO2_INT, 204 - AU1500_GPIO3_INT, 205 - AU1500_GPIO4_INT, 206 - AU1500_GPIO5_INT, 207 - AU1500_GPIO6_INT, 208 - AU1500_GPIO7_INT, 209 - AU1500_GPIO8_INT, 210 - AU1500_GPIO9_INT, 211 - AU1500_GPIO10_INT, 212 - AU1500_GPIO11_INT, 213 - AU1500_GPIO12_INT, 214 - AU1500_GPIO13_INT, 215 - AU1500_GPIO14_INT, 216 - AU1500_GPIO15_INT, 217 - AU1500_GPIO200_INT, 218 - AU1500_GPIO201_INT, 219 - AU1500_GPIO202_INT, 220 - AU1500_GPIO203_INT, 221 - AU1500_GPIO20_INT, 222 - AU1500_GPIO204_INT, 223 - AU1500_GPIO205_INT, 224 - AU1500_GPIO23_INT, 225 - AU1500_GPIO24_INT, 226 - AU1500_GPIO25_INT, 227 - AU1500_GPIO26_INT, 228 - AU1500_GPIO27_INT, 229 - AU1500_GPIO28_INT, 230 - AU1500_GPIO206_INT, 231 - AU1500_GPIO207_INT, 232 - AU1500_GPIO208_215_INT, 233 - }; 234 - 235 - enum soc_au1550_ints { 236 - AU1550_FIRST_INT = AU1000_INTC0_INT_BASE, 237 - AU1550_UART0_INT = AU1550_FIRST_INT, 238 - AU1550_PCI_INTA, 239 - AU1550_PCI_INTB, 240 - AU1550_DDMA_INT, 241 - AU1550_CRYPTO_INT, 242 - AU1550_PCI_INTC, 243 - AU1550_PCI_INTD, 244 - AU1550_PCI_RST_INT, 245 - AU1550_UART1_INT, 246 - AU1550_UART3_INT, 247 - AU1550_PSC0_INT, 248 - AU1550_PSC1_INT, 249 - AU1550_PSC2_INT, 250 - AU1550_PSC3_INT, 251 - AU1550_TOY_INT, 252 - AU1550_TOY_MATCH0_INT, 253 - AU1550_TOY_MATCH1_INT, 254 - AU1550_TOY_MATCH2_INT, 255 - AU1550_RTC_INT, 256 - AU1550_RTC_MATCH0_INT, 257 - AU1550_RTC_MATCH1_INT, 258 - AU1550_RTC_MATCH2_INT, 259 - 260 - AU1550_NAND_INT = AU1550_FIRST_INT + 23, 261 - AU1550_USB_DEV_REQ_INT, 262 - AU1550_USB_DEV_SUS_INT, 263 - AU1550_USB_HOST_INT, 264 - AU1550_MAC0_DMA_INT, 265 - AU1550_MAC1_DMA_INT, 266 - AU1550_GPIO0_INT = AU1550_FIRST_INT + 32, 267 - AU1550_GPIO1_INT, 268 - AU1550_GPIO2_INT, 269 - AU1550_GPIO3_INT, 270 - AU1550_GPIO4_INT, 271 - AU1550_GPIO5_INT, 272 - AU1550_GPIO6_INT, 273 - AU1550_GPIO7_INT, 274 - AU1550_GPIO8_INT, 275 - AU1550_GPIO9_INT, 276 - AU1550_GPIO10_INT, 277 - AU1550_GPIO11_INT, 278 - AU1550_GPIO12_INT, 279 - AU1550_GPIO13_INT, 280 - AU1550_GPIO14_INT, 281 - AU1550_GPIO15_INT, 282 - AU1550_GPIO200_INT, 283 - AU1550_GPIO201_205_INT, /* Logical or of GPIO201:205 */ 284 - AU1550_GPIO16_INT, 285 - AU1550_GPIO17_INT, 286 - AU1550_GPIO20_INT, 287 - AU1550_GPIO21_INT, 288 - AU1550_GPIO22_INT, 289 - AU1550_GPIO23_INT, 290 - AU1550_GPIO24_INT, 291 - AU1550_GPIO25_INT, 292 - AU1550_GPIO26_INT, 293 - AU1550_GPIO27_INT, 294 - AU1550_GPIO28_INT, 295 - AU1550_GPIO206_INT, 296 - AU1550_GPIO207_INT, 297 - AU1550_GPIO208_215_INT, /* Logical or of GPIO208:215 */ 298 - }; 299 - 300 - enum soc_au1200_ints { 301 - AU1200_FIRST_INT = AU1000_INTC0_INT_BASE, 302 - AU1200_UART0_INT = AU1200_FIRST_INT, 303 - AU1200_SWT_INT, 304 - AU1200_SD_INT, 305 - AU1200_DDMA_INT, 306 - AU1200_MAE_BE_INT, 307 - AU1200_GPIO200_INT, 308 - AU1200_GPIO201_INT, 309 - AU1200_GPIO202_INT, 310 - AU1200_UART1_INT, 311 - AU1200_MAE_FE_INT, 312 - AU1200_PSC0_INT, 313 - AU1200_PSC1_INT, 314 - AU1200_AES_INT, 315 - AU1200_CAMERA_INT, 316 - AU1200_TOY_INT, 317 - AU1200_TOY_MATCH0_INT, 318 - AU1200_TOY_MATCH1_INT, 319 - AU1200_TOY_MATCH2_INT, 320 - AU1200_RTC_INT, 321 - AU1200_RTC_MATCH0_INT, 322 - AU1200_RTC_MATCH1_INT, 323 - AU1200_RTC_MATCH2_INT, 324 - AU1200_GPIO203_INT, 325 - AU1200_NAND_INT, 326 - AU1200_GPIO204_INT, 327 - AU1200_GPIO205_INT, 328 - AU1200_GPIO206_INT, 329 - AU1200_GPIO207_INT, 330 - AU1200_GPIO208_215_INT, /* Logical OR of 208:215 */ 331 - AU1200_USB_INT, 332 - AU1200_LCD_INT, 333 - AU1200_MAE_BOTH_INT, 334 - AU1200_GPIO0_INT, 335 - AU1200_GPIO1_INT, 336 - AU1200_GPIO2_INT, 337 - AU1200_GPIO3_INT, 338 - AU1200_GPIO4_INT, 339 - AU1200_GPIO5_INT, 340 - AU1200_GPIO6_INT, 341 - AU1200_GPIO7_INT, 342 - AU1200_GPIO8_INT, 343 - AU1200_GPIO9_INT, 344 - AU1200_GPIO10_INT, 345 - AU1200_GPIO11_INT, 346 - AU1200_GPIO12_INT, 347 - AU1200_GPIO13_INT, 348 - AU1200_GPIO14_INT, 349 - AU1200_GPIO15_INT, 350 - AU1200_GPIO16_INT, 351 - AU1200_GPIO17_INT, 352 - AU1200_GPIO18_INT, 353 - AU1200_GPIO19_INT, 354 - AU1200_GPIO20_INT, 355 - AU1200_GPIO21_INT, 356 - AU1200_GPIO22_INT, 357 - AU1200_GPIO23_INT, 358 - AU1200_GPIO24_INT, 359 - AU1200_GPIO25_INT, 360 - AU1200_GPIO26_INT, 361 - AU1200_GPIO27_INT, 362 - AU1200_GPIO28_INT, 363 - AU1200_GPIO29_INT, 364 - AU1200_GPIO30_INT, 365 - AU1200_GPIO31_INT, 366 - }; 367 - 368 - #endif /* !defined (_LANGUAGE_ASSEMBLY) */ 369 361 370 362 /* Au1300 peripheral interrupt numbers */ 371 363 #define AU1300_FIRST_INT (ALCHEMY_GPIC_INT_BASE) ··· 374 1004 #define SYS_RTCREAD (SYS_BASE + 0x58) 375 1005 376 1006 377 - /* 378 - * The IrDA peripheral has an IRFIRSEL pin, but on the DB/PB boards it's not 379 - * used to select FIR/SIR mode on the transceiver but as a GPIO. Instead a 380 - * CPLD has to be told about the mode. 381 - */ 382 - #define AU1000_IRDA_PHY_MODE_OFF 0 383 - #define AU1000_IRDA_PHY_MODE_SIR 1 384 - #define AU1000_IRDA_PHY_MODE_FIR 2 385 - 386 - struct au1k_irda_platform_data { 387 - void(*set_phy_mode)(int mode); 388 - }; 389 - 390 - 391 1007 /* GPIO */ 392 1008 #define SYS_PINFUNC 0xB190002C 393 1009 # define SYS_PF_USB (1 << 15) /* 2nd USB device/host */ ··· 631 1275 #define PCI_PARAM_CLS(x) ((x) & 0xff) 632 1276 #define PCI_TIMEOUT_RETRIES(x) (((x) & 0xff) << 8) /* max retries */ 633 1277 #define PCI_TIMEOUT_TO(x) ((x) & 0xff) /* target ready timeout */ 1278 + 1279 + 1280 + /**********************************************************************/ 1281 + 1282 + 1283 + #ifndef _LANGUAGE_ASSEMBLY 1284 + 1285 + #include <linux/delay.h> 1286 + #include <linux/types.h> 1287 + 1288 + #include <linux/io.h> 1289 + #include <linux/irq.h> 1290 + 1291 + #include <asm/cpu.h> 1292 + 1293 + /* cpu pipeline flush */ 1294 + void static inline au_sync(void) 1295 + { 1296 + __asm__ volatile ("sync"); 1297 + } 1298 + 1299 + void static inline au_sync_udelay(int us) 1300 + { 1301 + __asm__ volatile ("sync"); 1302 + udelay(us); 1303 + } 1304 + 1305 + void static inline au_sync_delay(int ms) 1306 + { 1307 + __asm__ volatile ("sync"); 1308 + mdelay(ms); 1309 + } 1310 + 1311 + void static inline au_writeb(u8 val, unsigned long reg) 1312 + { 1313 + *(volatile u8 *)reg = val; 1314 + } 1315 + 1316 + void static inline au_writew(u16 val, unsigned long reg) 1317 + { 1318 + *(volatile u16 *)reg = val; 1319 + } 1320 + 1321 + void static inline au_writel(u32 val, unsigned long reg) 1322 + { 1323 + *(volatile u32 *)reg = val; 1324 + } 1325 + 1326 + static inline u8 au_readb(unsigned long reg) 1327 + { 1328 + return *(volatile u8 *)reg; 1329 + } 1330 + 1331 + static inline u16 au_readw(unsigned long reg) 1332 + { 1333 + return *(volatile u16 *)reg; 1334 + } 1335 + 1336 + static inline u32 au_readl(unsigned long reg) 1337 + { 1338 + return *(volatile u32 *)reg; 1339 + } 1340 + 1341 + /* Early Au1000 have a write-only SYS_CPUPLL register. */ 1342 + static inline int au1xxx_cpu_has_pll_wo(void) 1343 + { 1344 + switch (read_c0_prid()) { 1345 + case 0x00030100: /* Au1000 DA */ 1346 + case 0x00030201: /* Au1000 HA */ 1347 + case 0x00030202: /* Au1000 HB */ 1348 + return 1; 1349 + } 1350 + return 0; 1351 + } 1352 + 1353 + /* does CPU need CONFIG[OD] set to fix tons of errata? */ 1354 + static inline int au1xxx_cpu_needs_config_od(void) 1355 + { 1356 + /* 1357 + * c0_config.od (bit 19) was write only (and read as 0) on the 1358 + * early revisions of Alchemy SOCs. It disables the bus trans- 1359 + * action overlapping and needs to be set to fix various errata. 1360 + */ 1361 + switch (read_c0_prid()) { 1362 + case 0x00030100: /* Au1000 DA */ 1363 + case 0x00030201: /* Au1000 HA */ 1364 + case 0x00030202: /* Au1000 HB */ 1365 + case 0x01030200: /* Au1500 AB */ 1366 + /* 1367 + * Au1100/Au1200 errata actually keep silence about this bit, 1368 + * so we set it just in case for those revisions that require 1369 + * it to be set according to the (now gone) cpu_table. 1370 + */ 1371 + case 0x02030200: /* Au1100 AB */ 1372 + case 0x02030201: /* Au1100 BA */ 1373 + case 0x02030202: /* Au1100 BC */ 1374 + case 0x04030201: /* Au1200 AC */ 1375 + return 1; 1376 + } 1377 + return 0; 1378 + } 1379 + 1380 + #define ALCHEMY_CPU_UNKNOWN -1 1381 + #define ALCHEMY_CPU_AU1000 0 1382 + #define ALCHEMY_CPU_AU1500 1 1383 + #define ALCHEMY_CPU_AU1100 2 1384 + #define ALCHEMY_CPU_AU1550 3 1385 + #define ALCHEMY_CPU_AU1200 4 1386 + #define ALCHEMY_CPU_AU1300 5 1387 + 1388 + static inline int alchemy_get_cputype(void) 1389 + { 1390 + switch (read_c0_prid() & (PRID_OPT_MASK | PRID_COMP_MASK)) { 1391 + case 0x00030000: 1392 + return ALCHEMY_CPU_AU1000; 1393 + break; 1394 + case 0x01030000: 1395 + return ALCHEMY_CPU_AU1500; 1396 + break; 1397 + case 0x02030000: 1398 + return ALCHEMY_CPU_AU1100; 1399 + break; 1400 + case 0x03030000: 1401 + return ALCHEMY_CPU_AU1550; 1402 + break; 1403 + case 0x04030000: 1404 + case 0x05030000: 1405 + return ALCHEMY_CPU_AU1200; 1406 + break; 1407 + case 0x800c0000: 1408 + return ALCHEMY_CPU_AU1300; 1409 + break; 1410 + } 1411 + 1412 + return ALCHEMY_CPU_UNKNOWN; 1413 + } 1414 + 1415 + /* return number of uarts on a given cputype */ 1416 + static inline int alchemy_get_uarts(int type) 1417 + { 1418 + switch (type) { 1419 + case ALCHEMY_CPU_AU1000: 1420 + case ALCHEMY_CPU_AU1300: 1421 + return 4; 1422 + case ALCHEMY_CPU_AU1500: 1423 + case ALCHEMY_CPU_AU1200: 1424 + return 2; 1425 + case ALCHEMY_CPU_AU1100: 1426 + case ALCHEMY_CPU_AU1550: 1427 + return 3; 1428 + } 1429 + return 0; 1430 + } 1431 + 1432 + /* enable an UART block if it isn't already */ 1433 + static inline void alchemy_uart_enable(u32 uart_phys) 1434 + { 1435 + void __iomem *addr = (void __iomem *)KSEG1ADDR(uart_phys); 1436 + 1437 + /* reset, enable clock, deassert reset */ 1438 + if ((__raw_readl(addr + 0x100) & 3) != 3) { 1439 + __raw_writel(0, addr + 0x100); 1440 + wmb(); /* drain writebuffer */ 1441 + __raw_writel(1, addr + 0x100); 1442 + wmb(); /* drain writebuffer */ 1443 + } 1444 + __raw_writel(3, addr + 0x100); 1445 + wmb(); /* drain writebuffer */ 1446 + } 1447 + 1448 + static inline void alchemy_uart_disable(u32 uart_phys) 1449 + { 1450 + void __iomem *addr = (void __iomem *)KSEG1ADDR(uart_phys); 1451 + 1452 + __raw_writel(0, addr + 0x100); /* UART_MOD_CNTRL */ 1453 + wmb(); /* drain writebuffer */ 1454 + } 1455 + 1456 + static inline void alchemy_uart_putchar(u32 uart_phys, u8 c) 1457 + { 1458 + void __iomem *base = (void __iomem *)KSEG1ADDR(uart_phys); 1459 + int timeout, i; 1460 + 1461 + /* check LSR TX_EMPTY bit */ 1462 + timeout = 0xffffff; 1463 + do { 1464 + if (__raw_readl(base + 0x1c) & 0x20) 1465 + break; 1466 + /* slow down */ 1467 + for (i = 10000; i; i--) 1468 + asm volatile ("nop"); 1469 + } while (--timeout); 1470 + 1471 + __raw_writel(c, base + 0x04); /* tx */ 1472 + wmb(); /* drain writebuffer */ 1473 + } 1474 + 1475 + /* return number of ethernet MACs on a given cputype */ 1476 + static inline int alchemy_get_macs(int type) 1477 + { 1478 + switch (type) { 1479 + case ALCHEMY_CPU_AU1000: 1480 + case ALCHEMY_CPU_AU1500: 1481 + case ALCHEMY_CPU_AU1550: 1482 + return 2; 1483 + case ALCHEMY_CPU_AU1100: 1484 + return 1; 1485 + } 1486 + return 0; 1487 + } 1488 + 1489 + /* arch/mips/au1000/common/clocks.c */ 1490 + extern void set_au1x00_speed(unsigned int new_freq); 1491 + extern unsigned int get_au1x00_speed(void); 1492 + extern void set_au1x00_uart_baud_base(unsigned long new_baud_base); 1493 + extern unsigned long get_au1x00_uart_baud_base(void); 1494 + extern unsigned long au1xxx_calc_clock(void); 1495 + 1496 + /* PM: arch/mips/alchemy/common/sleeper.S, power.c, irq.c */ 1497 + void alchemy_sleep_au1000(void); 1498 + void alchemy_sleep_au1550(void); 1499 + void alchemy_sleep_au1300(void); 1500 + void au_sleep(void); 1501 + 1502 + /* USB: arch/mips/alchemy/common/usb.c */ 1503 + enum alchemy_usb_block { 1504 + ALCHEMY_USB_OHCI0, 1505 + ALCHEMY_USB_UDC0, 1506 + ALCHEMY_USB_EHCI0, 1507 + ALCHEMY_USB_OTG0, 1508 + ALCHEMY_USB_OHCI1, 1509 + }; 1510 + int alchemy_usb_control(int block, int enable); 1511 + 1512 + /* PCI controller platform data */ 1513 + struct alchemy_pci_platdata { 1514 + int (*board_map_irq)(const struct pci_dev *d, u8 slot, u8 pin); 1515 + int (*board_pci_idsel)(unsigned int devsel, int assert); 1516 + /* bits to set/clear in PCI_CONFIG register */ 1517 + unsigned long pci_cfg_set; 1518 + unsigned long pci_cfg_clr; 1519 + }; 1520 + 1521 + /* The IrDA peripheral has an IRFIRSEL pin, but on the DB/PB boards it's 1522 + * not used to select FIR/SIR mode on the transceiver but as a GPIO. 1523 + * Instead a CPLD has to be told about the mode. The driver calls the 1524 + * set_phy_mode() function in addition to driving the IRFIRSEL pin. 1525 + */ 1526 + #define AU1000_IRDA_PHY_MODE_OFF 0 1527 + #define AU1000_IRDA_PHY_MODE_SIR 1 1528 + #define AU1000_IRDA_PHY_MODE_FIR 2 1529 + 1530 + struct au1k_irda_platform_data { 1531 + void (*set_phy_mode)(int mode); 1532 + }; 1533 + 1534 + 1535 + /* Multifunction pins: Each of these pins can either be assigned to the 1536 + * GPIO controller or a on-chip peripheral. 1537 + * Call "au1300_pinfunc_to_dev()" or "au1300_pinfunc_to_gpio()" to 1538 + * assign one of these to either the GPIO controller or the device. 1539 + */ 1540 + enum au1300_multifunc_pins { 1541 + /* wake-from-str pins 0-3 */ 1542 + AU1300_PIN_WAKE0 = 0, AU1300_PIN_WAKE1, AU1300_PIN_WAKE2, 1543 + AU1300_PIN_WAKE3, 1544 + /* external clock sources for PSCs: 4-5 */ 1545 + AU1300_PIN_EXTCLK0, AU1300_PIN_EXTCLK1, 1546 + /* 8bit MMC interface on SD0: 6-9 */ 1547 + AU1300_PIN_SD0DAT4, AU1300_PIN_SD0DAT5, AU1300_PIN_SD0DAT6, 1548 + AU1300_PIN_SD0DAT7, 1549 + /* aux clk input for freqgen 3: 10 */ 1550 + AU1300_PIN_FG3AUX, 1551 + /* UART1 pins: 11-18 */ 1552 + AU1300_PIN_U1RI, AU1300_PIN_U1DCD, AU1300_PIN_U1DSR, 1553 + AU1300_PIN_U1CTS, AU1300_PIN_U1RTS, AU1300_PIN_U1DTR, 1554 + AU1300_PIN_U1RX, AU1300_PIN_U1TX, 1555 + /* UART0 pins: 19-24 */ 1556 + AU1300_PIN_U0RI, AU1300_PIN_U0DCD, AU1300_PIN_U0DSR, 1557 + AU1300_PIN_U0CTS, AU1300_PIN_U0RTS, AU1300_PIN_U0DTR, 1558 + /* UART2: 25-26 */ 1559 + AU1300_PIN_U2RX, AU1300_PIN_U2TX, 1560 + /* UART3: 27-28 */ 1561 + AU1300_PIN_U3RX, AU1300_PIN_U3TX, 1562 + /* LCD controller PWMs, ext pixclock: 29-31 */ 1563 + AU1300_PIN_LCDPWM0, AU1300_PIN_LCDPWM1, AU1300_PIN_LCDCLKIN, 1564 + /* SD1 interface: 32-37 */ 1565 + AU1300_PIN_SD1DAT0, AU1300_PIN_SD1DAT1, AU1300_PIN_SD1DAT2, 1566 + AU1300_PIN_SD1DAT3, AU1300_PIN_SD1CMD, AU1300_PIN_SD1CLK, 1567 + /* SD2 interface: 38-43 */ 1568 + AU1300_PIN_SD2DAT0, AU1300_PIN_SD2DAT1, AU1300_PIN_SD2DAT2, 1569 + AU1300_PIN_SD2DAT3, AU1300_PIN_SD2CMD, AU1300_PIN_SD2CLK, 1570 + /* PSC0/1 clocks: 44-45 */ 1571 + AU1300_PIN_PSC0CLK, AU1300_PIN_PSC1CLK, 1572 + /* PSCs: 46-49/50-53/54-57/58-61 */ 1573 + AU1300_PIN_PSC0SYNC0, AU1300_PIN_PSC0SYNC1, AU1300_PIN_PSC0D0, 1574 + AU1300_PIN_PSC0D1, 1575 + AU1300_PIN_PSC1SYNC0, AU1300_PIN_PSC1SYNC1, AU1300_PIN_PSC1D0, 1576 + AU1300_PIN_PSC1D1, 1577 + AU1300_PIN_PSC2SYNC0, AU1300_PIN_PSC2SYNC1, AU1300_PIN_PSC2D0, 1578 + AU1300_PIN_PSC2D1, 1579 + AU1300_PIN_PSC3SYNC0, AU1300_PIN_PSC3SYNC1, AU1300_PIN_PSC3D0, 1580 + AU1300_PIN_PSC3D1, 1581 + /* PCMCIA interface: 62-70 */ 1582 + AU1300_PIN_PCE2, AU1300_PIN_PCE1, AU1300_PIN_PIOS16, 1583 + AU1300_PIN_PIOR, AU1300_PIN_PWE, AU1300_PIN_PWAIT, 1584 + AU1300_PIN_PREG, AU1300_PIN_POE, AU1300_PIN_PIOW, 1585 + /* camera interface H/V sync inputs: 71-72 */ 1586 + AU1300_PIN_CIMLS, AU1300_PIN_CIMFS, 1587 + /* PSC2/3 clocks: 73-74 */ 1588 + AU1300_PIN_PSC2CLK, AU1300_PIN_PSC3CLK, 1589 + }; 1590 + 1591 + /* GPIC (Au1300) pin management: arch/mips/alchemy/common/gpioint.c */ 1592 + extern void au1300_pinfunc_to_gpio(enum au1300_multifunc_pins gpio); 1593 + extern void au1300_pinfunc_to_dev(enum au1300_multifunc_pins gpio); 1594 + extern void au1300_set_irq_priority(unsigned int irq, int p); 1595 + extern void au1300_set_dbdma_gpio(int dchan, unsigned int gpio); 1596 + 1597 + /* Au1300 allows to disconnect certain blocks from internal power supply */ 1598 + enum au1300_vss_block { 1599 + AU1300_VSS_MPE = 0, 1600 + AU1300_VSS_BSA, 1601 + AU1300_VSS_GPE, 1602 + AU1300_VSS_MGP, 1603 + }; 1604 + 1605 + extern void au1300_vss_block_control(int block, int enable); 1606 + 1607 + enum soc_au1000_ints { 1608 + AU1000_FIRST_INT = AU1000_INTC0_INT_BASE, 1609 + AU1000_UART0_INT = AU1000_FIRST_INT, 1610 + AU1000_UART1_INT, 1611 + AU1000_UART2_INT, 1612 + AU1000_UART3_INT, 1613 + AU1000_SSI0_INT, 1614 + AU1000_SSI1_INT, 1615 + AU1000_DMA_INT_BASE, 1616 + 1617 + AU1000_TOY_INT = AU1000_FIRST_INT + 14, 1618 + AU1000_TOY_MATCH0_INT, 1619 + AU1000_TOY_MATCH1_INT, 1620 + AU1000_TOY_MATCH2_INT, 1621 + AU1000_RTC_INT, 1622 + AU1000_RTC_MATCH0_INT, 1623 + AU1000_RTC_MATCH1_INT, 1624 + AU1000_RTC_MATCH2_INT, 1625 + AU1000_IRDA_TX_INT, 1626 + AU1000_IRDA_RX_INT, 1627 + AU1000_USB_DEV_REQ_INT, 1628 + AU1000_USB_DEV_SUS_INT, 1629 + AU1000_USB_HOST_INT, 1630 + AU1000_ACSYNC_INT, 1631 + AU1000_MAC0_DMA_INT, 1632 + AU1000_MAC1_DMA_INT, 1633 + AU1000_I2S_UO_INT, 1634 + AU1000_AC97C_INT, 1635 + AU1000_GPIO0_INT, 1636 + AU1000_GPIO1_INT, 1637 + AU1000_GPIO2_INT, 1638 + AU1000_GPIO3_INT, 1639 + AU1000_GPIO4_INT, 1640 + AU1000_GPIO5_INT, 1641 + AU1000_GPIO6_INT, 1642 + AU1000_GPIO7_INT, 1643 + AU1000_GPIO8_INT, 1644 + AU1000_GPIO9_INT, 1645 + AU1000_GPIO10_INT, 1646 + AU1000_GPIO11_INT, 1647 + AU1000_GPIO12_INT, 1648 + AU1000_GPIO13_INT, 1649 + AU1000_GPIO14_INT, 1650 + AU1000_GPIO15_INT, 1651 + AU1000_GPIO16_INT, 1652 + AU1000_GPIO17_INT, 1653 + AU1000_GPIO18_INT, 1654 + AU1000_GPIO19_INT, 1655 + AU1000_GPIO20_INT, 1656 + AU1000_GPIO21_INT, 1657 + AU1000_GPIO22_INT, 1658 + AU1000_GPIO23_INT, 1659 + AU1000_GPIO24_INT, 1660 + AU1000_GPIO25_INT, 1661 + AU1000_GPIO26_INT, 1662 + AU1000_GPIO27_INT, 1663 + AU1000_GPIO28_INT, 1664 + AU1000_GPIO29_INT, 1665 + AU1000_GPIO30_INT, 1666 + AU1000_GPIO31_INT, 1667 + }; 1668 + 1669 + enum soc_au1100_ints { 1670 + AU1100_FIRST_INT = AU1000_INTC0_INT_BASE, 1671 + AU1100_UART0_INT = AU1100_FIRST_INT, 1672 + AU1100_UART1_INT, 1673 + AU1100_SD_INT, 1674 + AU1100_UART3_INT, 1675 + AU1100_SSI0_INT, 1676 + AU1100_SSI1_INT, 1677 + AU1100_DMA_INT_BASE, 1678 + 1679 + AU1100_TOY_INT = AU1100_FIRST_INT + 14, 1680 + AU1100_TOY_MATCH0_INT, 1681 + AU1100_TOY_MATCH1_INT, 1682 + AU1100_TOY_MATCH2_INT, 1683 + AU1100_RTC_INT, 1684 + AU1100_RTC_MATCH0_INT, 1685 + AU1100_RTC_MATCH1_INT, 1686 + AU1100_RTC_MATCH2_INT, 1687 + AU1100_IRDA_TX_INT, 1688 + AU1100_IRDA_RX_INT, 1689 + AU1100_USB_DEV_REQ_INT, 1690 + AU1100_USB_DEV_SUS_INT, 1691 + AU1100_USB_HOST_INT, 1692 + AU1100_ACSYNC_INT, 1693 + AU1100_MAC0_DMA_INT, 1694 + AU1100_GPIO208_215_INT, 1695 + AU1100_LCD_INT, 1696 + AU1100_AC97C_INT, 1697 + AU1100_GPIO0_INT, 1698 + AU1100_GPIO1_INT, 1699 + AU1100_GPIO2_INT, 1700 + AU1100_GPIO3_INT, 1701 + AU1100_GPIO4_INT, 1702 + AU1100_GPIO5_INT, 1703 + AU1100_GPIO6_INT, 1704 + AU1100_GPIO7_INT, 1705 + AU1100_GPIO8_INT, 1706 + AU1100_GPIO9_INT, 1707 + AU1100_GPIO10_INT, 1708 + AU1100_GPIO11_INT, 1709 + AU1100_GPIO12_INT, 1710 + AU1100_GPIO13_INT, 1711 + AU1100_GPIO14_INT, 1712 + AU1100_GPIO15_INT, 1713 + AU1100_GPIO16_INT, 1714 + AU1100_GPIO17_INT, 1715 + AU1100_GPIO18_INT, 1716 + AU1100_GPIO19_INT, 1717 + AU1100_GPIO20_INT, 1718 + AU1100_GPIO21_INT, 1719 + AU1100_GPIO22_INT, 1720 + AU1100_GPIO23_INT, 1721 + AU1100_GPIO24_INT, 1722 + AU1100_GPIO25_INT, 1723 + AU1100_GPIO26_INT, 1724 + AU1100_GPIO27_INT, 1725 + AU1100_GPIO28_INT, 1726 + AU1100_GPIO29_INT, 1727 + AU1100_GPIO30_INT, 1728 + AU1100_GPIO31_INT, 1729 + }; 1730 + 1731 + enum soc_au1500_ints { 1732 + AU1500_FIRST_INT = AU1000_INTC0_INT_BASE, 1733 + AU1500_UART0_INT = AU1500_FIRST_INT, 1734 + AU1500_PCI_INTA, 1735 + AU1500_PCI_INTB, 1736 + AU1500_UART3_INT, 1737 + AU1500_PCI_INTC, 1738 + AU1500_PCI_INTD, 1739 + AU1500_DMA_INT_BASE, 1740 + 1741 + AU1500_TOY_INT = AU1500_FIRST_INT + 14, 1742 + AU1500_TOY_MATCH0_INT, 1743 + AU1500_TOY_MATCH1_INT, 1744 + AU1500_TOY_MATCH2_INT, 1745 + AU1500_RTC_INT, 1746 + AU1500_RTC_MATCH0_INT, 1747 + AU1500_RTC_MATCH1_INT, 1748 + AU1500_RTC_MATCH2_INT, 1749 + AU1500_PCI_ERR_INT, 1750 + AU1500_RESERVED_INT, 1751 + AU1500_USB_DEV_REQ_INT, 1752 + AU1500_USB_DEV_SUS_INT, 1753 + AU1500_USB_HOST_INT, 1754 + AU1500_ACSYNC_INT, 1755 + AU1500_MAC0_DMA_INT, 1756 + AU1500_MAC1_DMA_INT, 1757 + AU1500_AC97C_INT = AU1500_FIRST_INT + 31, 1758 + AU1500_GPIO0_INT, 1759 + AU1500_GPIO1_INT, 1760 + AU1500_GPIO2_INT, 1761 + AU1500_GPIO3_INT, 1762 + AU1500_GPIO4_INT, 1763 + AU1500_GPIO5_INT, 1764 + AU1500_GPIO6_INT, 1765 + AU1500_GPIO7_INT, 1766 + AU1500_GPIO8_INT, 1767 + AU1500_GPIO9_INT, 1768 + AU1500_GPIO10_INT, 1769 + AU1500_GPIO11_INT, 1770 + AU1500_GPIO12_INT, 1771 + AU1500_GPIO13_INT, 1772 + AU1500_GPIO14_INT, 1773 + AU1500_GPIO15_INT, 1774 + AU1500_GPIO200_INT, 1775 + AU1500_GPIO201_INT, 1776 + AU1500_GPIO202_INT, 1777 + AU1500_GPIO203_INT, 1778 + AU1500_GPIO20_INT, 1779 + AU1500_GPIO204_INT, 1780 + AU1500_GPIO205_INT, 1781 + AU1500_GPIO23_INT, 1782 + AU1500_GPIO24_INT, 1783 + AU1500_GPIO25_INT, 1784 + AU1500_GPIO26_INT, 1785 + AU1500_GPIO27_INT, 1786 + AU1500_GPIO28_INT, 1787 + AU1500_GPIO206_INT, 1788 + AU1500_GPIO207_INT, 1789 + AU1500_GPIO208_215_INT, 1790 + }; 1791 + 1792 + enum soc_au1550_ints { 1793 + AU1550_FIRST_INT = AU1000_INTC0_INT_BASE, 1794 + AU1550_UART0_INT = AU1550_FIRST_INT, 1795 + AU1550_PCI_INTA, 1796 + AU1550_PCI_INTB, 1797 + AU1550_DDMA_INT, 1798 + AU1550_CRYPTO_INT, 1799 + AU1550_PCI_INTC, 1800 + AU1550_PCI_INTD, 1801 + AU1550_PCI_RST_INT, 1802 + AU1550_UART1_INT, 1803 + AU1550_UART3_INT, 1804 + AU1550_PSC0_INT, 1805 + AU1550_PSC1_INT, 1806 + AU1550_PSC2_INT, 1807 + AU1550_PSC3_INT, 1808 + AU1550_TOY_INT, 1809 + AU1550_TOY_MATCH0_INT, 1810 + AU1550_TOY_MATCH1_INT, 1811 + AU1550_TOY_MATCH2_INT, 1812 + AU1550_RTC_INT, 1813 + AU1550_RTC_MATCH0_INT, 1814 + AU1550_RTC_MATCH1_INT, 1815 + AU1550_RTC_MATCH2_INT, 1816 + 1817 + AU1550_NAND_INT = AU1550_FIRST_INT + 23, 1818 + AU1550_USB_DEV_REQ_INT, 1819 + AU1550_USB_DEV_SUS_INT, 1820 + AU1550_USB_HOST_INT, 1821 + AU1550_MAC0_DMA_INT, 1822 + AU1550_MAC1_DMA_INT, 1823 + AU1550_GPIO0_INT = AU1550_FIRST_INT + 32, 1824 + AU1550_GPIO1_INT, 1825 + AU1550_GPIO2_INT, 1826 + AU1550_GPIO3_INT, 1827 + AU1550_GPIO4_INT, 1828 + AU1550_GPIO5_INT, 1829 + AU1550_GPIO6_INT, 1830 + AU1550_GPIO7_INT, 1831 + AU1550_GPIO8_INT, 1832 + AU1550_GPIO9_INT, 1833 + AU1550_GPIO10_INT, 1834 + AU1550_GPIO11_INT, 1835 + AU1550_GPIO12_INT, 1836 + AU1550_GPIO13_INT, 1837 + AU1550_GPIO14_INT, 1838 + AU1550_GPIO15_INT, 1839 + AU1550_GPIO200_INT, 1840 + AU1550_GPIO201_205_INT, /* Logical or of GPIO201:205 */ 1841 + AU1550_GPIO16_INT, 1842 + AU1550_GPIO17_INT, 1843 + AU1550_GPIO20_INT, 1844 + AU1550_GPIO21_INT, 1845 + AU1550_GPIO22_INT, 1846 + AU1550_GPIO23_INT, 1847 + AU1550_GPIO24_INT, 1848 + AU1550_GPIO25_INT, 1849 + AU1550_GPIO26_INT, 1850 + AU1550_GPIO27_INT, 1851 + AU1550_GPIO28_INT, 1852 + AU1550_GPIO206_INT, 1853 + AU1550_GPIO207_INT, 1854 + AU1550_GPIO208_215_INT, /* Logical or of GPIO208:215 */ 1855 + }; 1856 + 1857 + enum soc_au1200_ints { 1858 + AU1200_FIRST_INT = AU1000_INTC0_INT_BASE, 1859 + AU1200_UART0_INT = AU1200_FIRST_INT, 1860 + AU1200_SWT_INT, 1861 + AU1200_SD_INT, 1862 + AU1200_DDMA_INT, 1863 + AU1200_MAE_BE_INT, 1864 + AU1200_GPIO200_INT, 1865 + AU1200_GPIO201_INT, 1866 + AU1200_GPIO202_INT, 1867 + AU1200_UART1_INT, 1868 + AU1200_MAE_FE_INT, 1869 + AU1200_PSC0_INT, 1870 + AU1200_PSC1_INT, 1871 + AU1200_AES_INT, 1872 + AU1200_CAMERA_INT, 1873 + AU1200_TOY_INT, 1874 + AU1200_TOY_MATCH0_INT, 1875 + AU1200_TOY_MATCH1_INT, 1876 + AU1200_TOY_MATCH2_INT, 1877 + AU1200_RTC_INT, 1878 + AU1200_RTC_MATCH0_INT, 1879 + AU1200_RTC_MATCH1_INT, 1880 + AU1200_RTC_MATCH2_INT, 1881 + AU1200_GPIO203_INT, 1882 + AU1200_NAND_INT, 1883 + AU1200_GPIO204_INT, 1884 + AU1200_GPIO205_INT, 1885 + AU1200_GPIO206_INT, 1886 + AU1200_GPIO207_INT, 1887 + AU1200_GPIO208_215_INT, /* Logical OR of 208:215 */ 1888 + AU1200_USB_INT, 1889 + AU1200_LCD_INT, 1890 + AU1200_MAE_BOTH_INT, 1891 + AU1200_GPIO0_INT, 1892 + AU1200_GPIO1_INT, 1893 + AU1200_GPIO2_INT, 1894 + AU1200_GPIO3_INT, 1895 + AU1200_GPIO4_INT, 1896 + AU1200_GPIO5_INT, 1897 + AU1200_GPIO6_INT, 1898 + AU1200_GPIO7_INT, 1899 + AU1200_GPIO8_INT, 1900 + AU1200_GPIO9_INT, 1901 + AU1200_GPIO10_INT, 1902 + AU1200_GPIO11_INT, 1903 + AU1200_GPIO12_INT, 1904 + AU1200_GPIO13_INT, 1905 + AU1200_GPIO14_INT, 1906 + AU1200_GPIO15_INT, 1907 + AU1200_GPIO16_INT, 1908 + AU1200_GPIO17_INT, 1909 + AU1200_GPIO18_INT, 1910 + AU1200_GPIO19_INT, 1911 + AU1200_GPIO20_INT, 1912 + AU1200_GPIO21_INT, 1913 + AU1200_GPIO22_INT, 1914 + AU1200_GPIO23_INT, 1915 + AU1200_GPIO24_INT, 1916 + AU1200_GPIO25_INT, 1917 + AU1200_GPIO26_INT, 1918 + AU1200_GPIO27_INT, 1919 + AU1200_GPIO28_INT, 1920 + AU1200_GPIO29_INT, 1921 + AU1200_GPIO30_INT, 1922 + AU1200_GPIO31_INT, 1923 + }; 1924 + 1925 + #endif /* !defined (_LANGUAGE_ASSEMBLY) */ 634 1926 635 1927 #endif