diff options
| -rw-r--r-- | arch/mips/au1000/pb1200/Makefile | 2 | ||||
| -rw-r--r-- | arch/mips/au1000/pb1200/board_setup.c | 139 | ||||
| -rw-r--r-- | arch/mips/au1000/pb1200/init.c | 18 | ||||
| -rw-r--r-- | arch/mips/au1000/pb1200/irqmap.c | 66 | ||||
| -rw-r--r-- | include/asm-mips/mach-db1x00/db1200.h | 73 | ||||
| -rw-r--r-- | include/asm-mips/mach-pb1x00/pb1200.h | 93 |
6 files changed, 186 insertions, 205 deletions
diff --git a/arch/mips/au1000/pb1200/Makefile b/arch/mips/au1000/pb1200/Makefile index 4fe02ea65a60..d678adf7ce85 100644 --- a/arch/mips/au1000/pb1200/Makefile +++ b/arch/mips/au1000/pb1200/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | # | 1 | # |
| 2 | # Makefile for the Alchemy Semiconductor PB1200 board. | 2 | # Makefile for the Alchemy Semiconductor Pb1200/DBAu1200 boards. |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | lib-y := init.o board_setup.o irqmap.o | 5 | lib-y := init.o board_setup.o irqmap.o |
diff --git a/arch/mips/au1000/pb1200/board_setup.c b/arch/mips/au1000/pb1200/board_setup.c index 4493a792cc4c..6cb2115059ad 100644 --- a/arch/mips/au1000/pb1200/board_setup.c +++ b/arch/mips/au1000/pb1200/board_setup.c | |||
| @@ -27,16 +27,8 @@ | |||
| 27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
| 28 | #include <linux/sched.h> | 28 | #include <linux/sched.h> |
| 29 | 29 | ||
| 30 | #include <au1000.h> | ||
| 31 | #include <prom.h> | 30 | #include <prom.h> |
| 32 | 31 | #include <au1xxx.h> | |
| 33 | #ifdef CONFIG_MIPS_PB1200 | ||
| 34 | #include <asm/mach-pb1x00/pb1200.h> | ||
| 35 | #endif | ||
| 36 | |||
| 37 | #ifdef CONFIG_MIPS_DB1200 | ||
| 38 | #include <asm/mach-db1x00/db1200.h> | ||
| 39 | #endif | ||
| 40 | 32 | ||
| 41 | extern void _board_init_irq(void); | 33 | extern void _board_init_irq(void); |
| 42 | extern void (*board_init_irq)(void); | 34 | extern void (*board_init_irq)(void); |
| @@ -53,56 +45,57 @@ void __init board_setup(void) | |||
| 53 | 45 | ||
| 54 | #if 0 | 46 | #if 0 |
| 55 | { | 47 | { |
| 56 | u32 pin_func; | 48 | u32 pin_func; |
| 57 | 49 | ||
| 58 | /* Enable PSC1 SYNC for AC97. Normaly done in audio driver, | 50 | /* |
| 59 | * but it is board specific code, so put it here. | 51 | * Enable PSC1 SYNC for AC97. Normaly done in audio driver, |
| 60 | */ | 52 | * but it is board specific code, so put it here. |
| 61 | pin_func = au_readl(SYS_PINFUNC); | 53 | */ |
| 62 | au_sync(); | 54 | pin_func = au_readl(SYS_PINFUNC); |
| 63 | pin_func |= SYS_PF_MUST_BE_SET | SYS_PF_PSC1_S1; | 55 | au_sync(); |
| 64 | au_writel(pin_func, SYS_PINFUNC); | 56 | pin_func |= SYS_PF_MUST_BE_SET | SYS_PF_PSC1_S1; |
| 65 | 57 | au_writel(pin_func, SYS_PINFUNC); | |
| 66 | au_writel(0, (u32)bcsr|0x10); /* turn off pcmcia power */ | 58 | |
| 67 | au_sync(); | 59 | au_writel(0, (u32)bcsr | 0x10); /* turn off PCMCIA power */ |
| 60 | au_sync(); | ||
| 68 | } | 61 | } |
| 69 | #endif | 62 | #endif |
| 70 | 63 | ||
| 71 | #if defined(CONFIG_I2C_AU1550) | 64 | #if defined(CONFIG_I2C_AU1550) |
| 72 | { | 65 | { |
| 73 | u32 freq0, clksrc; | 66 | u32 freq0, clksrc; |
| 74 | u32 pin_func; | 67 | u32 pin_func; |
| 75 | 68 | ||
| 76 | /* Select SMBUS in CPLD */ | 69 | /* Select SMBus in CPLD */ |
| 77 | bcsr->resets &= ~(BCSR_RESETS_PCS0MUX); | 70 | bcsr->resets &= ~BCSR_RESETS_PCS0MUX; |
| 78 | 71 | ||
| 79 | pin_func = au_readl(SYS_PINFUNC); | 72 | pin_func = au_readl(SYS_PINFUNC); |
| 80 | au_sync(); | 73 | au_sync(); |
| 81 | pin_func &= ~(3<<17 | 1<<4); | 74 | pin_func &= ~(SYS_PINFUNC_P0A | SYS_PINFUNC_P0B); |
| 82 | /* Set GPIOs correctly */ | 75 | /* Set GPIOs correctly */ |
| 83 | pin_func |= 2<<17; | 76 | pin_func |= 2 << 17; |
| 84 | au_writel(pin_func, SYS_PINFUNC); | 77 | au_writel(pin_func, SYS_PINFUNC); |
| 85 | au_sync(); | 78 | au_sync(); |
| 86 | 79 | ||
| 87 | /* The i2c driver depends on 50Mhz clock */ | 80 | /* The I2C driver depends on 50 MHz clock */ |
| 88 | freq0 = au_readl(SYS_FREQCTRL0); | 81 | freq0 = au_readl(SYS_FREQCTRL0); |
| 89 | au_sync(); | 82 | au_sync(); |
| 90 | freq0 &= ~(SYS_FC_FRDIV1_MASK | SYS_FC_FS1 | SYS_FC_FE1); | 83 | freq0 &= ~(SYS_FC_FRDIV1_MASK | SYS_FC_FS1 | SYS_FC_FE1); |
| 91 | freq0 |= (3<<SYS_FC_FRDIV1_BIT); | 84 | freq0 |= 3 << SYS_FC_FRDIV1_BIT; |
| 92 | /* 396Mhz / (3+1)*2 == 49.5Mhz */ | 85 | /* 396 MHz / (3 + 1) * 2 == 49.5 MHz */ |
| 93 | au_writel(freq0, SYS_FREQCTRL0); | 86 | au_writel(freq0, SYS_FREQCTRL0); |
| 94 | au_sync(); | 87 | au_sync(); |
| 95 | freq0 |= SYS_FC_FE1; | 88 | freq0 |= SYS_FC_FE1; |
| 96 | au_writel(freq0, SYS_FREQCTRL0); | 89 | au_writel(freq0, SYS_FREQCTRL0); |
| 97 | au_sync(); | 90 | au_sync(); |
| 98 | 91 | ||
| 99 | clksrc = au_readl(SYS_CLKSRC); | 92 | clksrc = au_readl(SYS_CLKSRC); |
| 100 | au_sync(); | 93 | au_sync(); |
| 101 | clksrc &= ~0x01f00000; | 94 | clksrc &= ~(SYS_CS_CE0 | SYS_CS_DE0 | SYS_CS_ME0_MASK); |
| 102 | /* bit 22 is EXTCLK0 for PSC0 */ | 95 | /* Bit 22 is EXTCLK0 for PSC0 */ |
| 103 | clksrc |= (0x3 << 22); | 96 | clksrc |= SYS_CS_MUX_FQ1 << SYS_CS_ME0_BIT; |
| 104 | au_writel(clksrc, SYS_CLKSRC); | 97 | au_writel(clksrc, SYS_CLKSRC); |
| 105 | au_sync(); | 98 | au_sync(); |
| 106 | } | 99 | } |
| 107 | #endif | 100 | #endif |
| 108 | 101 | ||
| @@ -116,27 +109,27 @@ void __init board_setup(void) | |||
| 116 | #endif | 109 | #endif |
| 117 | #endif | 110 | #endif |
| 118 | 111 | ||
| 119 | /* The Pb1200 development board uses external MUX for PSC0 to | 112 | /* |
| 120 | support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI | 113 | * The Pb1200 development board uses external MUX for PSC0 to |
| 121 | */ | 114 | * support SMB/SPI. bcsr->resets bit 12: 0=SMB 1=SPI |
| 115 | */ | ||
| 122 | #ifdef CONFIG_I2C_AU1550 | 116 | #ifdef CONFIG_I2C_AU1550 |
| 123 | bcsr->resets &= (~BCSR_RESETS_PCS0MUX); | 117 | bcsr->resets &= ~BCSR_RESETS_PCS0MUX; |
| 124 | #endif | 118 | #endif |
| 125 | au_sync(); | 119 | au_sync(); |
| 126 | 120 | ||
| 127 | #ifdef CONFIG_MIPS_PB1200 | 121 | #ifdef CONFIG_MIPS_PB1200 |
| 128 | printk("AMD Alchemy Pb1200 Board\n"); | 122 | printk(KERN_INFO "AMD Alchemy Pb1200 Board\n"); |
| 129 | #endif | 123 | #endif |
| 130 | #ifdef CONFIG_MIPS_DB1200 | 124 | #ifdef CONFIG_MIPS_DB1200 |
| 131 | printk("AMD Alchemy Db1200 Board\n"); | 125 | printk(KERN_INFO "AMD Alchemy Db1200 Board\n"); |
| 132 | #endif | 126 | #endif |
| 133 | 127 | ||
| 134 | /* Setup Pb1200 External Interrupt Controller */ | 128 | /* Setup Pb1200 External Interrupt Controller */ |
| 135 | board_init_irq = _board_init_irq; | 129 | board_init_irq = _board_init_irq; |
| 136 | } | 130 | } |
| 137 | 131 | ||
| 138 | int | 132 | int board_au1200fb_panel(void) |
| 139 | board_au1200fb_panel(void) | ||
| 140 | { | 133 | { |
| 141 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; | 134 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; |
| 142 | int p; | 135 | int p; |
| @@ -147,23 +140,23 @@ board_au1200fb_panel(void) | |||
| 147 | return p; | 140 | return p; |
| 148 | } | 141 | } |
| 149 | 142 | ||
| 150 | int | 143 | int board_au1200fb_panel_init(void) |
| 151 | board_au1200fb_panel_init(void) | ||
| 152 | { | 144 | { |
| 153 | /* Apply power */ | 145 | /* Apply power */ |
| 154 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; | 146 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; |
| 155 | bcsr->board |= (BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL); | 147 | |
| 156 | /*printk("board_au1200fb_panel_init()\n"); */ | 148 | bcsr->board |= BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL; |
| 149 | /* printk(KERN_DEBUG "board_au1200fb_panel_init()\n"); */ | ||
| 157 | return 0; | 150 | return 0; |
| 158 | } | 151 | } |
| 159 | 152 | ||
| 160 | int | 153 | int board_au1200fb_panel_shutdown(void) |
| 161 | board_au1200fb_panel_shutdown(void) | ||
| 162 | { | 154 | { |
| 163 | /* Remove power */ | 155 | /* Remove power */ |
| 164 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; | 156 | BCSR *bcsr = (BCSR *)BCSR_KSEG1_ADDR; |
| 165 | bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | BCSR_BOARD_LCDBL); | 157 | |
| 166 | /*printk("board_au1200fb_panel_shutdown()\n"); */ | 158 | bcsr->board &= ~(BCSR_BOARD_LCDVEE | BCSR_BOARD_LCDVDD | |
| 159 | BCSR_BOARD_LCDBL); | ||
| 160 | /* printk(KERN_DEBUG "board_au1200fb_panel_shutdown()\n"); */ | ||
| 167 | return 0; | 161 | return 0; |
| 168 | } | 162 | } |
| 169 | |||
diff --git a/arch/mips/au1000/pb1200/init.c b/arch/mips/au1000/pb1200/init.c index 72af5500660b..09fd63b86062 100644 --- a/arch/mips/au1000/pb1200/init.c +++ b/arch/mips/au1000/pb1200/init.c | |||
| @@ -3,9 +3,8 @@ | |||
| 3 | * BRIEF MODULE DESCRIPTION | 3 | * BRIEF MODULE DESCRIPTION |
| 4 | * PB1200 board setup | 4 | * PB1200 board setup |
| 5 | * | 5 | * |
| 6 | * Copyright 2001 MontaVista Software Inc. | 6 | * Copyright 2001, 2008 MontaVista Software Inc. |
| 7 | * Author: MontaVista Software, Inc. | 7 | * Author: MontaVista Software, Inc. <source@mvista.com> |
| 8 | * ppopov@mvista.com or source@mvista.com | ||
| 9 | * | 8 | * |
| 10 | * This program is free software; you can redistribute it and/or modify it | 9 | * This program is free software; you can redistribute it and/or modify it |
| 11 | * under the terms of the GNU General Public License as published by the | 10 | * under the terms of the GNU General Public License as published by the |
| @@ -45,16 +44,15 @@ void __init prom_init(void) | |||
| 45 | unsigned char *memsize_str; | 44 | unsigned char *memsize_str; |
| 46 | unsigned long memsize; | 45 | unsigned long memsize; |
| 47 | 46 | ||
| 48 | prom_argc = (int) fw_arg0; | 47 | prom_argc = (int)fw_arg0; |
| 49 | prom_argv = (char **) fw_arg1; | 48 | prom_argv = (char **)fw_arg1; |
| 50 | prom_envp = (char **) fw_arg2; | 49 | prom_envp = (char **)fw_arg2; |
| 51 | 50 | ||
| 52 | prom_init_cmdline(); | 51 | prom_init_cmdline(); |
| 53 | memsize_str = prom_getenv("memsize"); | 52 | memsize_str = prom_getenv("memsize"); |
| 54 | if (!memsize_str) { | 53 | if (!memsize_str) |
| 55 | memsize = 0x08000000; | 54 | memsize = 0x08000000; |
| 56 | } else { | 55 | else |
| 57 | memsize = simple_strtol(memsize_str, NULL, 0); | 56 | memsize = strict_strtol(memsize_str, 0, NULL); |
| 58 | } | ||
| 59 | add_memory_region(0, memsize, BOOT_MEM_RAM); | 57 | add_memory_region(0, memsize, BOOT_MEM_RAM); |
| 60 | } | 58 | } |
diff --git a/arch/mips/au1000/pb1200/irqmap.c b/arch/mips/au1000/pb1200/irqmap.c index e61eb8e0b76b..2a505ad8715b 100644 --- a/arch/mips/au1000/pb1200/irqmap.c +++ b/arch/mips/au1000/pb1200/irqmap.c | |||
| @@ -39,25 +39,25 @@ | |||
| 39 | #endif | 39 | #endif |
| 40 | 40 | ||
| 41 | struct au1xxx_irqmap __initdata au1xxx_irq_map[] = { | 41 | struct au1xxx_irqmap __initdata au1xxx_irq_map[] = { |
| 42 | { AU1000_GPIO_7, INTC_INT_LOW_LEVEL, 0 }, // This is exteranl interrupt cascade | 42 | /* This is external interrupt cascade */ |
| 43 | { AU1000_GPIO_7, INTC_INT_LOW_LEVEL, 0 }, | ||
| 43 | }; | 44 | }; |
| 44 | 45 | ||
| 45 | int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map); | 46 | int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map); |
| 46 | 47 | ||
| 47 | /* | 48 | /* |
| 48 | * Support for External interrupts on the PbAu1200 Development platform. | 49 | * Support for External interrupts on the Pb1200 Development platform. |
| 49 | */ | 50 | */ |
| 50 | static volatile int pb1200_cascade_en=0; | 51 | static volatile int pb1200_cascade_en; |
| 51 | 52 | ||
| 52 | irqreturn_t pb1200_cascade_handler( int irq, void *dev_id) | 53 | irqreturn_t pb1200_cascade_handler(int irq, void *dev_id) |
| 53 | { | 54 | { |
| 54 | unsigned short bisr = bcsr->int_status; | 55 | unsigned short bisr = bcsr->int_status; |
| 55 | int extirq_nr = 0; | 56 | int extirq_nr = 0; |
| 56 | 57 | ||
| 57 | /* Clear all the edge interrupts. This has no effect on level */ | 58 | /* Clear all the edge interrupts. This has no effect on level. */ |
| 58 | bcsr->int_status = bisr; | 59 | bcsr->int_status = bisr; |
| 59 | for( ; bisr; bisr &= (bisr-1) ) | 60 | for ( ; bisr; bisr &= bisr - 1) { |
| 60 | { | ||
| 61 | extirq_nr = PB1200_INT_BEGIN + __ffs(bisr); | 61 | extirq_nr = PB1200_INT_BEGIN + __ffs(bisr); |
| 62 | /* Ack and dispatch IRQ */ | 62 | /* Ack and dispatch IRQ */ |
| 63 | do_IRQ(extirq_nr); | 63 | do_IRQ(extirq_nr); |
| @@ -68,26 +68,20 @@ irqreturn_t pb1200_cascade_handler( int irq, void *dev_id) | |||
| 68 | 68 | ||
| 69 | inline void pb1200_enable_irq(unsigned int irq_nr) | 69 | inline void pb1200_enable_irq(unsigned int irq_nr) |
| 70 | { | 70 | { |
| 71 | bcsr->intset_mask = 1<<(irq_nr - PB1200_INT_BEGIN); | 71 | bcsr->intset_mask = 1 << (irq_nr - PB1200_INT_BEGIN); |
| 72 | bcsr->intset = 1<<(irq_nr - PB1200_INT_BEGIN); | 72 | bcsr->intset = 1 << (irq_nr - PB1200_INT_BEGIN); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | inline void pb1200_disable_irq(unsigned int irq_nr) | 75 | inline void pb1200_disable_irq(unsigned int irq_nr) |
| 76 | { | 76 | { |
| 77 | bcsr->intclr_mask = 1<<(irq_nr - PB1200_INT_BEGIN); | 77 | bcsr->intclr_mask = 1 << (irq_nr - PB1200_INT_BEGIN); |
| 78 | bcsr->intclr = 1<<(irq_nr - PB1200_INT_BEGIN); | 78 | bcsr->intclr = 1 << (irq_nr - PB1200_INT_BEGIN); |
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | static unsigned int pb1200_setup_cascade(void) | 81 | static unsigned int pb1200_setup_cascade(void) |
| 82 | { | 82 | { |
| 83 | int err; | 83 | return request_irq(AU1000_GPIO_7, &pb1200_cascade_handler, |
| 84 | 84 | 0, "Pb1200 Cascade", &pb1200_cascade_handler); | |
| 85 | err = request_irq(AU1000_GPIO_7, &pb1200_cascade_handler, | ||
| 86 | 0, "Pb1200 Cascade", &pb1200_cascade_handler); | ||
| 87 | if (err) | ||
| 88 | return err; | ||
| 89 | |||
| 90 | return 0; | ||
| 91 | } | 85 | } |
| 92 | 86 | ||
| 93 | static unsigned int pb1200_startup_irq(unsigned int irq) | 87 | static unsigned int pb1200_startup_irq(unsigned int irq) |
| @@ -132,23 +126,23 @@ void _board_init_irq(void) | |||
| 132 | unsigned int irq; | 126 | unsigned int irq; |
| 133 | 127 | ||
| 134 | #ifdef CONFIG_MIPS_PB1200 | 128 | #ifdef CONFIG_MIPS_PB1200 |
| 135 | /* We have a problem with CPLD rev3. Enable a workaround */ | 129 | /* We have a problem with CPLD rev 3. */ |
| 136 | if (((bcsr->whoami & BCSR_WHOAMI_CPLD) >> 4) <= 3) { | 130 | if (((bcsr->whoami & BCSR_WHOAMI_CPLD) >> 4) <= 3) { |
| 137 | printk("\nWARNING!!!\n"); | 131 | printk(KERN_ERR "WARNING!!!\n"); |
| 138 | printk("\nWARNING!!!\n"); | 132 | printk(KERN_ERR "WARNING!!!\n"); |
| 139 | printk("\nWARNING!!!\n"); | 133 | printk(KERN_ERR "WARNING!!!\n"); |
| 140 | printk("\nWARNING!!!\n"); | 134 | printk(KERN_ERR "WARNING!!!\n"); |
| 141 | printk("\nWARNING!!!\n"); | 135 | printk(KERN_ERR "WARNING!!!\n"); |
| 142 | printk("\nWARNING!!!\n"); | 136 | printk(KERN_ERR "WARNING!!!\n"); |
| 143 | printk("Pb1200 must be at CPLD rev4. Please have Pb1200\n"); | 137 | printk(KERN_ERR "Pb1200 must be at CPLD rev 4. Please have Pb1200\n"); |
| 144 | printk("updated to latest revision. This software will not\n"); | 138 | printk(KERN_ERR "updated to latest revision. This software will\n"); |
| 145 | printk("work on anything less than CPLD rev4\n"); | 139 | printk(KERN_ERR "not work on anything less than CPLD rev 4.\n"); |
| 146 | printk("\nWARNING!!!\n"); | 140 | printk(KERN_ERR "WARNING!!!\n"); |
| 147 | printk("\nWARNING!!!\n"); | 141 | printk(KERN_ERR "WARNING!!!\n"); |
| 148 | printk("\nWARNING!!!\n"); | 142 | printk(KERN_ERR "WARNING!!!\n"); |
| 149 | printk("\nWARNING!!!\n"); | 143 | printk(KERN_ERR "WARNING!!!\n"); |
| 150 | printk("\nWARNING!!!\n"); | 144 | printk(KERN_ERR "WARNING!!!\n"); |
| 151 | printk("\nWARNING!!!\n"); | 145 | printk(KERN_ERR "WARNING!!!\n"); |
| 152 | panic("Game over. Your score is 0."); | 146 | panic("Game over. Your score is 0."); |
| 153 | } | 147 | } |
| 154 | #endif | 148 | #endif |
| @@ -161,6 +155,6 @@ void _board_init_irq(void) | |||
| 161 | 155 | ||
| 162 | /* | 156 | /* |
| 163 | * GPIO_7 can not be hooked here, so it is hooked upon first | 157 | * GPIO_7 can not be hooked here, so it is hooked upon first |
| 164 | * request of any source attached to the cascade | 158 | * request of any source attached to the cascade. |
| 165 | */ | 159 | */ |
| 166 | } | 160 | } |
diff --git a/include/asm-mips/mach-db1x00/db1200.h b/include/asm-mips/mach-db1x00/db1200.h index eedd048a7261..27f26102b1bb 100644 --- a/include/asm-mips/mach-db1x00/db1200.h +++ b/include/asm-mips/mach-db1x00/db1200.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * AMD Alchemy DB1200 Referrence Board | 2 | * AMD Alchemy DBAu1200 Reference Board |
| 3 | * Board Registers defines. | 3 | * Board register defines. |
| 4 | * | 4 | * |
| 5 | * ######################################################################## | 5 | * ######################################################################## |
| 6 | * | 6 | * |
| @@ -27,26 +27,25 @@ | |||
| 27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
| 28 | #include <asm/mach-au1x00/au1xxx_psc.h> | 28 | #include <asm/mach-au1x00/au1xxx_psc.h> |
| 29 | 29 | ||
| 30 | // This is defined in au1000.h with bogus value | 30 | #define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX |
| 31 | #undef AU1X00_EXTERNAL_INT | 31 | #define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX |
| 32 | #define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX | ||
| 33 | #define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX | ||
| 32 | 34 | ||
| 33 | #define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX | 35 | /* |
| 34 | #define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX | 36 | * SPI and SMB are muxed on the DBAu1200 board. |
| 35 | #define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX | 37 | * Refer to board documentation. |
| 36 | #define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX | ||
| 37 | |||
| 38 | /* SPI and SMB are muxed on the Pb1200 board. | ||
| 39 | Refer to board documentation. | ||
| 40 | */ | 38 | */ |
| 41 | #define SPI_PSC_BASE PSC0_BASE_ADDR | 39 | #define SPI_PSC_BASE PSC0_BASE_ADDR |
| 42 | #define SMBUS_PSC_BASE PSC0_BASE_ADDR | 40 | #define SMBUS_PSC_BASE PSC0_BASE_ADDR |
| 43 | /* AC97 and I2S are muxed on the Pb1200 board. | 41 | /* |
| 44 | Refer to board documentation. | 42 | * AC'97 and I2S are muxed on the DBAu1200 board. |
| 43 | * Refer to board documentation. | ||
| 45 | */ | 44 | */ |
| 46 | #define AC97_PSC_BASE PSC1_BASE_ADDR | 45 | #define AC97_PSC_BASE PSC1_BASE_ADDR |
| 47 | #define I2S_PSC_BASE PSC1_BASE_ADDR | 46 | #define I2S_PSC_BASE PSC1_BASE_ADDR |
| 48 | 47 | ||
| 49 | #define BCSR_KSEG1_ADDR 0xB9800000 | 48 | #define BCSR_KSEG1_ADDR 0xB9800000 |
| 50 | 49 | ||
| 51 | typedef volatile struct | 50 | typedef volatile struct |
| 52 | { | 51 | { |
| @@ -102,9 +101,9 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 102 | #define BCSR_STATUS_SWAPBOOT 0x0040 | 101 | #define BCSR_STATUS_SWAPBOOT 0x0040 |
| 103 | #define BCSR_STATUS_FLASHBUSY 0x0100 | 102 | #define BCSR_STATUS_FLASHBUSY 0x0100 |
| 104 | #define BCSR_STATUS_IDECBLID 0x0200 | 103 | #define BCSR_STATUS_IDECBLID 0x0200 |
| 105 | #define BCSR_STATUS_SD0WP 0x0400 | 104 | #define BCSR_STATUS_SD0WP 0x0400 |
| 106 | #define BCSR_STATUS_U0RXD 0x1000 | 105 | #define BCSR_STATUS_U0RXD 0x1000 |
| 107 | #define BCSR_STATUS_U1RXD 0x2000 | 106 | #define BCSR_STATUS_U1RXD 0x2000 |
| 108 | 107 | ||
| 109 | #define BCSR_SWITCHES_OCTAL 0x00FF | 108 | #define BCSR_SWITCHES_OCTAL 0x00FF |
| 110 | #define BCSR_SWITCHES_DIP_1 0x0080 | 109 | #define BCSR_SWITCHES_DIP_1 0x0080 |
| @@ -122,8 +121,8 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 122 | #define BCSR_RESETS_DC 0x0004 | 121 | #define BCSR_RESETS_DC 0x0004 |
| 123 | #define BCSR_RESETS_IDE 0x0008 | 122 | #define BCSR_RESETS_IDE 0x0008 |
| 124 | #define BCSR_RESETS_TV 0x0010 | 123 | #define BCSR_RESETS_TV 0x0010 |
| 125 | /* not resets but in the same register */ | 124 | /* Not resets but in the same register */ |
| 126 | #define BCSR_RESETS_PWMR1mUX 0x0800 | 125 | #define BCSR_RESETS_PWMR1MUX 0x0800 |
| 127 | #define BCSR_RESETS_PCS0MUX 0x1000 | 126 | #define BCSR_RESETS_PCS0MUX 0x1000 |
| 128 | #define BCSR_RESETS_PCS1MUX 0x2000 | 127 | #define BCSR_RESETS_PCS1MUX 0x2000 |
| 129 | #define BCSR_RESETS_SPISEL 0x4000 | 128 | #define BCSR_RESETS_SPISEL 0x4000 |
| @@ -160,7 +159,7 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 160 | #define BCSR_INT_PC0STSCHG 0x0008 | 159 | #define BCSR_INT_PC0STSCHG 0x0008 |
| 161 | #define BCSR_INT_PC1 0x0010 | 160 | #define BCSR_INT_PC1 0x0010 |
| 162 | #define BCSR_INT_PC1STSCHG 0x0020 | 161 | #define BCSR_INT_PC1STSCHG 0x0020 |
| 163 | #define BCSR_INT_DC 0x0040 | 162 | #define BCSR_INT_DC 0x0040 |
| 164 | #define BCSR_INT_FLASHBUSY 0x0080 | 163 | #define BCSR_INT_FLASHBUSY 0x0080 |
| 165 | #define BCSR_INT_PC0INSERT 0x0100 | 164 | #define BCSR_INT_PC0INSERT 0x0100 |
| 166 | #define BCSR_INT_PC0EJECT 0x0200 | 165 | #define BCSR_INT_PC0EJECT 0x0200 |
| @@ -179,10 +178,10 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 179 | #define IDE_DDMA_REQ DSCR_CMD0_DMA_REQ1 | 178 | #define IDE_DDMA_REQ DSCR_CMD0_DMA_REQ1 |
| 180 | #define IDE_RQSIZE 128 | 179 | #define IDE_RQSIZE 128 |
| 181 | 180 | ||
| 182 | #define NAND_PHYS_ADDR 0x20000000 | 181 | #define NAND_PHYS_ADDR 0x20000000 |
| 183 | 182 | ||
| 184 | /* | 183 | /* |
| 185 | * External Interrupts for Pb1200 as of 8/6/2004. | 184 | * External Interrupts for DBAu1200 as of 8/6/2004. |
| 186 | * Bit positions in the CPLD registers can be calculated by taking | 185 | * Bit positions in the CPLD registers can be calculated by taking |
| 187 | * the interrupt define and subtracting the DB1200_INT_BEGIN value. | 186 | * the interrupt define and subtracting the DB1200_INT_BEGIN value. |
| 188 | * | 187 | * |
| @@ -211,23 +210,21 @@ enum external_pb1200_ints { | |||
| 211 | }; | 210 | }; |
| 212 | 211 | ||
| 213 | 212 | ||
| 214 | /* For drivers/pcmcia/au1000_db1x00.c */ | 213 | /* |
| 215 | 214 | * DBAu1200 specific PCMCIA defines for drivers/pcmcia/au1000_db1x00.c | |
| 216 | /* PCMCIA Db1x00 specific defines */ | 215 | */ |
| 217 | 216 | #define PCMCIA_MAX_SOCK 1 | |
| 218 | #define PCMCIA_MAX_SOCK 1 | 217 | #define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK + 1) |
| 219 | #define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1) | ||
| 220 | 218 | ||
| 221 | /* VPP/VCC */ | 219 | /* VPP/VCC */ |
| 222 | #define SET_VCC_VPP(VCC, VPP, SLOT)\ | 220 | #define SET_VCC_VPP(VCC, VPP, SLOT) \ |
| 223 | ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8)) | 221 | ((((VCC) << 2) | ((VPP) << 0)) << ((SLOT) * 8)) |
| 224 | 222 | ||
| 225 | #define BOARD_PC0_INT DB1200_PC0_INT | 223 | #define BOARD_PC0_INT DB1200_PC0_INT |
| 226 | #define BOARD_PC1_INT DB1200_PC1_INT | 224 | #define BOARD_PC1_INT DB1200_PC1_INT |
| 227 | #define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1<<(8+(2*SOCKET))) | 225 | #define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1 << (8 + (2 * SOCKET))) |
| 228 | 226 | ||
| 229 | /* Nand chip select */ | 227 | /* NAND chip select */ |
| 230 | #define NAND_CS 1 | 228 | #define NAND_CS 1 |
| 231 | 229 | ||
| 232 | #endif /* __ASM_DB1200_H */ | 230 | #endif /* __ASM_DB1200_H */ |
| 233 | |||
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index e2c6bcac3b42..c8618df88cb5 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * AMD Alchemy PB1200 Referrence Board | 2 | * AMD Alchemy Pb1200 Referrence Board |
| 3 | * Board Registers defines. | 3 | * Board Registers defines. |
| 4 | * | 4 | * |
| 5 | * ######################################################################## | 5 | * ######################################################################## |
| @@ -27,21 +27,20 @@ | |||
| 27 | #include <linux/types.h> | 27 | #include <linux/types.h> |
| 28 | #include <asm/mach-au1x00/au1xxx_psc.h> | 28 | #include <asm/mach-au1x00/au1xxx_psc.h> |
| 29 | 29 | ||
| 30 | // This is defined in au1000.h with bogus value | 30 | #define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX |
| 31 | #undef AU1X00_EXTERNAL_INT | 31 | #define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX |
| 32 | #define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX | ||
| 33 | #define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX | ||
| 32 | 34 | ||
| 33 | #define DBDMA_AC97_TX_CHAN DSCR_CMD0_PSC1_TX | 35 | /* |
| 34 | #define DBDMA_AC97_RX_CHAN DSCR_CMD0_PSC1_RX | 36 | * SPI and SMB are muxed on the Pb1200 board. |
| 35 | #define DBDMA_I2S_TX_CHAN DSCR_CMD0_PSC1_TX | 37 | * Refer to board documentation. |
| 36 | #define DBDMA_I2S_RX_CHAN DSCR_CMD0_PSC1_RX | ||
| 37 | |||
| 38 | /* SPI and SMB are muxed on the Pb1200 board. | ||
| 39 | Refer to board documentation. | ||
| 40 | */ | 38 | */ |
| 41 | #define SPI_PSC_BASE PSC0_BASE_ADDR | 39 | #define SPI_PSC_BASE PSC0_BASE_ADDR |
| 42 | #define SMBUS_PSC_BASE PSC0_BASE_ADDR | 40 | #define SMBUS_PSC_BASE PSC0_BASE_ADDR |
| 43 | /* AC97 and I2S are muxed on the Pb1200 board. | 41 | /* |
| 44 | Refer to board documentation. | 42 | * AC97 and I2S are muxed on the Pb1200 board. |
| 43 | * Refer to board documentation. | ||
| 45 | */ | 44 | */ |
| 46 | #define AC97_PSC_BASE PSC1_BASE_ADDR | 45 | #define AC97_PSC_BASE PSC1_BASE_ADDR |
| 47 | #define I2S_PSC_BASE PSC1_BASE_ADDR | 46 | #define I2S_PSC_BASE PSC1_BASE_ADDR |
| @@ -102,10 +101,10 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 102 | #define BCSR_STATUS_SWAPBOOT 0x0040 | 101 | #define BCSR_STATUS_SWAPBOOT 0x0040 |
| 103 | #define BCSR_STATUS_FLASHBUSY 0x0100 | 102 | #define BCSR_STATUS_FLASHBUSY 0x0100 |
| 104 | #define BCSR_STATUS_IDECBLID 0x0200 | 103 | #define BCSR_STATUS_IDECBLID 0x0200 |
| 105 | #define BCSR_STATUS_SD0WP 0x0400 | 104 | #define BCSR_STATUS_SD0WP 0x0400 |
| 106 | #define BCSR_STATUS_SD1WP 0x0800 | 105 | #define BCSR_STATUS_SD1WP 0x0800 |
| 107 | #define BCSR_STATUS_U0RXD 0x1000 | 106 | #define BCSR_STATUS_U0RXD 0x1000 |
| 108 | #define BCSR_STATUS_U1RXD 0x2000 | 107 | #define BCSR_STATUS_U1RXD 0x2000 |
| 109 | 108 | ||
| 110 | #define BCSR_SWITCHES_OCTAL 0x00FF | 109 | #define BCSR_SWITCHES_OCTAL 0x00FF |
| 111 | #define BCSR_SWITCHES_DIP_1 0x0080 | 110 | #define BCSR_SWITCHES_DIP_1 0x0080 |
| @@ -123,11 +122,11 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 123 | #define BCSR_RESETS_DC 0x0004 | 122 | #define BCSR_RESETS_DC 0x0004 |
| 124 | #define BCSR_RESETS_IDE 0x0008 | 123 | #define BCSR_RESETS_IDE 0x0008 |
| 125 | /* not resets but in the same register */ | 124 | /* not resets but in the same register */ |
| 126 | #define BCSR_RESETS_WSCFSM 0x0800 | 125 | #define BCSR_RESETS_WSCFSM 0x0800 |
| 127 | #define BCSR_RESETS_PCS0MUX 0x1000 | 126 | #define BCSR_RESETS_PCS0MUX 0x1000 |
| 128 | #define BCSR_RESETS_PCS1MUX 0x2000 | 127 | #define BCSR_RESETS_PCS1MUX 0x2000 |
| 129 | #define BCSR_RESETS_SPISEL 0x4000 | 128 | #define BCSR_RESETS_SPISEL 0x4000 |
| 130 | #define BCSR_RESETS_SD1MUX 0x8000 | 129 | #define BCSR_RESETS_SD1MUX 0x8000 |
| 131 | 130 | ||
| 132 | #define BCSR_PCMCIA_PC0VPP 0x0003 | 131 | #define BCSR_PCMCIA_PC0VPP 0x0003 |
| 133 | #define BCSR_PCMCIA_PC0VCC 0x000C | 132 | #define BCSR_PCMCIA_PC0VCC 0x000C |
| @@ -163,7 +162,7 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 163 | #define BCSR_INT_PC0STSCHG 0x0008 | 162 | #define BCSR_INT_PC0STSCHG 0x0008 |
| 164 | #define BCSR_INT_PC1 0x0010 | 163 | #define BCSR_INT_PC1 0x0010 |
| 165 | #define BCSR_INT_PC1STSCHG 0x0020 | 164 | #define BCSR_INT_PC1STSCHG 0x0020 |
| 166 | #define BCSR_INT_DC 0x0040 | 165 | #define BCSR_INT_DC 0x0040 |
| 167 | #define BCSR_INT_FLASHBUSY 0x0080 | 166 | #define BCSR_INT_FLASHBUSY 0x0080 |
| 168 | #define BCSR_INT_PC0INSERT 0x0100 | 167 | #define BCSR_INT_PC0INSERT 0x0100 |
| 169 | #define BCSR_INT_PC0EJECT 0x0200 | 168 | #define BCSR_INT_PC0EJECT 0x0200 |
| @@ -174,14 +173,6 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 174 | #define BCSR_INT_SD1INSERT 0x4000 | 173 | #define BCSR_INT_SD1INSERT 0x4000 |
| 175 | #define BCSR_INT_SD1EJECT 0x8000 | 174 | #define BCSR_INT_SD1EJECT 0x8000 |
| 176 | 175 | ||
| 177 | /* PCMCIA Db1x00 specific defines */ | ||
| 178 | #define PCMCIA_MAX_SOCK 1 | ||
| 179 | #define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK+1) | ||
| 180 | |||
| 181 | /* VPP/VCC */ | ||
| 182 | #define SET_VCC_VPP(VCC, VPP, SLOT)\ | ||
| 183 | ((((VCC)<<2) | ((VPP)<<0)) << ((SLOT)*8)) | ||
| 184 | |||
| 185 | #define SMC91C111_PHYS_ADDR 0x0D000300 | 176 | #define SMC91C111_PHYS_ADDR 0x0D000300 |
| 186 | #define SMC91C111_INT PB1200_ETH_INT | 177 | #define SMC91C111_INT PB1200_ETH_INT |
| 187 | 178 | ||
| @@ -192,18 +183,19 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 192 | #define IDE_DDMA_REQ DSCR_CMD0_DMA_REQ1 | 183 | #define IDE_DDMA_REQ DSCR_CMD0_DMA_REQ1 |
| 193 | #define IDE_RQSIZE 128 | 184 | #define IDE_RQSIZE 128 |
| 194 | 185 | ||
| 195 | #define NAND_PHYS_ADDR 0x1C000000 | 186 | #define NAND_PHYS_ADDR 0x1C000000 |
| 196 | 187 | ||
| 197 | /* Timing values as described in databook, * ns value stripped of | 188 | /* |
| 189 | * Timing values as described in databook, * ns value stripped of | ||
| 198 | * lower 2 bits. | 190 | * lower 2 bits. |
| 199 | * These defines are here rather than an SOC1200 generic file because | 191 | * These defines are here rather than an Au1200 generic file because |
| 200 | * the parts chosen on another board may be different and may require | 192 | * the parts chosen on another board may be different and may require |
| 201 | * different timings. | 193 | * different timings. |
| 202 | */ | 194 | */ |
| 203 | #define NAND_T_H (18 >> 2) | 195 | #define NAND_T_H (18 >> 2) |
| 204 | #define NAND_T_PUL (30 >> 2) | 196 | #define NAND_T_PUL (30 >> 2) |
| 205 | #define NAND_T_SU (30 >> 2) | 197 | #define NAND_T_SU (30 >> 2) |
| 206 | #define NAND_T_WH (30 >> 2) | 198 | #define NAND_T_WH (30 >> 2) |
| 207 | 199 | ||
| 208 | /* Bitfield shift amounts */ | 200 | /* Bitfield shift amounts */ |
| 209 | #define NAND_T_H_SHIFT 0 | 201 | #define NAND_T_H_SHIFT 0 |
| @@ -211,11 +203,10 @@ static BCSR * const bcsr = (BCSR *)BCSR_KSEG1_ADDR; | |||
| 211 | #define NAND_T_SU_SHIFT 8 | 203 | #define NAND_T_SU_SHIFT 8 |
| 212 | #define NAND_T_WH_SHIFT 12 | 204 | #define NAND_T_WH_SHIFT 12 |
| 213 | 205 | ||
| 214 | #define NAND_TIMING ((NAND_T_H & 0xF) << NAND_T_H_SHIFT) | \ | 206 | #define NAND_TIMING (((NAND_T_H & 0xF) << NAND_T_H_SHIFT) | \ |
| 215 | ((NAND_T_PUL & 0xF) << NAND_T_PUL_SHIFT) | \ | 207 | ((NAND_T_PUL & 0xF) << NAND_T_PUL_SHIFT) | \ |
| 216 | ((NAND_T_SU & 0xF) << NAND_T_SU_SHIFT) | \ | 208 | ((NAND_T_SU & 0xF) << NAND_T_SU_SHIFT) | \ |
| 217 | ((NAND_T_WH & 0xF) << NAND_T_WH_SHIFT) | 209 | ((NAND_T_WH & 0xF) << NAND_T_WH_SHIFT)) |
| 218 | |||
| 219 | 210 | ||
| 220 | /* | 211 | /* |
| 221 | * External Interrupts for Pb1200 as of 8/6/2004. | 212 | * External Interrupts for Pb1200 as of 8/6/2004. |
| @@ -248,13 +239,21 @@ enum external_pb1200_ints { | |||
| 248 | PB1200_INT_END = PB1200_INT_BEGIN + 15 | 239 | PB1200_INT_END = PB1200_INT_BEGIN + 15 |
| 249 | }; | 240 | }; |
| 250 | 241 | ||
| 251 | /* For drivers/pcmcia/au1000_db1x00.c */ | 242 | /* |
| 252 | #define BOARD_PC0_INT PB1200_PC0_INT | 243 | * Pb1200 specific PCMCIA defines for drivers/pcmcia/au1000_db1x00.c |
| 253 | #define BOARD_PC1_INT PB1200_PC1_INT | 244 | */ |
| 254 | #define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1<<(8+(2*SOCKET))) | 245 | #define PCMCIA_MAX_SOCK 1 |
| 246 | #define PCMCIA_NUM_SOCKS (PCMCIA_MAX_SOCK + 1) | ||
| 255 | 247 | ||
| 256 | /* Nand chip select */ | 248 | /* VPP/VCC */ |
| 249 | #define SET_VCC_VPP(VCC, VPP, SLOT) \ | ||
| 250 | ((((VCC) << 2) | ((VPP) << 0)) << ((SLOT) * 8)) | ||
| 251 | |||
| 252 | #define BOARD_PC0_INT PB1200_PC0_INT | ||
| 253 | #define BOARD_PC1_INT PB1200_PC1_INT | ||
| 254 | #define BOARD_CARD_INSERTED(SOCKET) bcsr->sig_status & (1 << (8 + (2 * SOCKET))) | ||
| 255 | |||
| 256 | /* NAND chip select */ | ||
| 257 | #define NAND_CS 1 | 257 | #define NAND_CS 1 |
| 258 | 258 | ||
| 259 | #endif /* __ASM_PB1200_H */ | 259 | #endif /* __ASM_PB1200_H */ |
| 260 | |||
