diff options
author | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-15 14:11:45 -0400 |
commit | ee3e542fec6e69bc9fb668698889a37d93950ddf (patch) | |
tree | e74ee766a4764769ef1d3d45d266b4dea64101d3 /arch/mips/include/asm/mach-bcm63xx | |
parent | fe2a801b50c0bb8039d627e5ae1fec249d10ff39 (diff) | |
parent | f1d6e17f540af37bb1891480143669ba7636c4cf (diff) |
Merge remote-tracking branch 'linus/master' into testing
Diffstat (limited to 'arch/mips/include/asm/mach-bcm63xx')
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h | 119 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h | 122 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | 1 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | 145 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h | 8 | ||||
-rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/ioremap.h | 4 |
6 files changed, 388 insertions, 11 deletions
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h index 336228990808..19f9134bfe2f 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_cpu.h | |||
@@ -9,6 +9,7 @@ | |||
9 | * compile time if only one CPU support is enabled (idea stolen from | 9 | * compile time if only one CPU support is enabled (idea stolen from |
10 | * arm mach-types) | 10 | * arm mach-types) |
11 | */ | 11 | */ |
12 | #define BCM3368_CPU_ID 0x3368 | ||
12 | #define BCM6328_CPU_ID 0x6328 | 13 | #define BCM6328_CPU_ID 0x6328 |
13 | #define BCM6338_CPU_ID 0x6338 | 14 | #define BCM6338_CPU_ID 0x6338 |
14 | #define BCM6345_CPU_ID 0x6345 | 15 | #define BCM6345_CPU_ID 0x6345 |
@@ -22,6 +23,19 @@ u16 __bcm63xx_get_cpu_id(void); | |||
22 | u8 bcm63xx_get_cpu_rev(void); | 23 | u8 bcm63xx_get_cpu_rev(void); |
23 | unsigned int bcm63xx_get_cpu_freq(void); | 24 | unsigned int bcm63xx_get_cpu_freq(void); |
24 | 25 | ||
26 | #ifdef CONFIG_BCM63XX_CPU_3368 | ||
27 | # ifdef bcm63xx_get_cpu_id | ||
28 | # undef bcm63xx_get_cpu_id | ||
29 | # define bcm63xx_get_cpu_id() __bcm63xx_get_cpu_id() | ||
30 | # define BCMCPU_RUNTIME_DETECT | ||
31 | # else | ||
32 | # define bcm63xx_get_cpu_id() BCM3368_CPU_ID | ||
33 | # endif | ||
34 | # define BCMCPU_IS_3368() (bcm63xx_get_cpu_id() == BCM3368_CPU_ID) | ||
35 | #else | ||
36 | # define BCMCPU_IS_3368() (0) | ||
37 | #endif | ||
38 | |||
25 | #ifdef CONFIG_BCM63XX_CPU_6328 | 39 | #ifdef CONFIG_BCM63XX_CPU_6328 |
26 | # ifdef bcm63xx_get_cpu_id | 40 | # ifdef bcm63xx_get_cpu_id |
27 | # undef bcm63xx_get_cpu_id | 41 | # undef bcm63xx_get_cpu_id |
@@ -173,7 +187,10 @@ enum bcm63xx_regs_set { | |||
173 | #define BCM_6358_RSET_SPI_SIZE 1804 | 187 | #define BCM_6358_RSET_SPI_SIZE 1804 |
174 | #define BCM_6368_RSET_SPI_SIZE 1804 | 188 | #define BCM_6368_RSET_SPI_SIZE 1804 |
175 | #define RSET_ENET_SIZE 2048 | 189 | #define RSET_ENET_SIZE 2048 |
176 | #define RSET_ENETDMA_SIZE 2048 | 190 | #define RSET_ENETDMA_SIZE 256 |
191 | #define RSET_6345_ENETDMA_SIZE 64 | ||
192 | #define RSET_ENETDMAC_SIZE(chans) (16 * (chans)) | ||
193 | #define RSET_ENETDMAS_SIZE(chans) (16 * (chans)) | ||
177 | #define RSET_ENETSW_SIZE 65536 | 194 | #define RSET_ENETSW_SIZE 65536 |
178 | #define RSET_UART_SIZE 24 | 195 | #define RSET_UART_SIZE 24 |
179 | #define RSET_UDC_SIZE 256 | 196 | #define RSET_UDC_SIZE 256 |
@@ -191,6 +208,53 @@ enum bcm63xx_regs_set { | |||
191 | #define RSET_RNG_SIZE 20 | 208 | #define RSET_RNG_SIZE 20 |
192 | 209 | ||
193 | /* | 210 | /* |
211 | * 3368 register sets base address | ||
212 | */ | ||
213 | #define BCM_3368_DSL_LMEM_BASE (0xdeadbeef) | ||
214 | #define BCM_3368_PERF_BASE (0xfff8c000) | ||
215 | #define BCM_3368_TIMER_BASE (0xfff8c040) | ||
216 | #define BCM_3368_WDT_BASE (0xfff8c080) | ||
217 | #define BCM_3368_UART0_BASE (0xfff8c100) | ||
218 | #define BCM_3368_UART1_BASE (0xfff8c120) | ||
219 | #define BCM_3368_GPIO_BASE (0xfff8c080) | ||
220 | #define BCM_3368_SPI_BASE (0xfff8c800) | ||
221 | #define BCM_3368_HSSPI_BASE (0xdeadbeef) | ||
222 | #define BCM_3368_UDC0_BASE (0xdeadbeef) | ||
223 | #define BCM_3368_USBDMA_BASE (0xdeadbeef) | ||
224 | #define BCM_3368_OHCI0_BASE (0xdeadbeef) | ||
225 | #define BCM_3368_OHCI_PRIV_BASE (0xdeadbeef) | ||
226 | #define BCM_3368_USBH_PRIV_BASE (0xdeadbeef) | ||
227 | #define BCM_3368_USBD_BASE (0xdeadbeef) | ||
228 | #define BCM_3368_MPI_BASE (0xfff80000) | ||
229 | #define BCM_3368_PCMCIA_BASE (0xfff80054) | ||
230 | #define BCM_3368_PCIE_BASE (0xdeadbeef) | ||
231 | #define BCM_3368_SDRAM_REGS_BASE (0xdeadbeef) | ||
232 | #define BCM_3368_DSL_BASE (0xdeadbeef) | ||
233 | #define BCM_3368_UBUS_BASE (0xdeadbeef) | ||
234 | #define BCM_3368_ENET0_BASE (0xfff98000) | ||
235 | #define BCM_3368_ENET1_BASE (0xfff98800) | ||
236 | #define BCM_3368_ENETDMA_BASE (0xfff99800) | ||
237 | #define BCM_3368_ENETDMAC_BASE (0xfff99900) | ||
238 | #define BCM_3368_ENETDMAS_BASE (0xfff99a00) | ||
239 | #define BCM_3368_ENETSW_BASE (0xdeadbeef) | ||
240 | #define BCM_3368_EHCI0_BASE (0xdeadbeef) | ||
241 | #define BCM_3368_SDRAM_BASE (0xdeadbeef) | ||
242 | #define BCM_3368_MEMC_BASE (0xfff84000) | ||
243 | #define BCM_3368_DDR_BASE (0xdeadbeef) | ||
244 | #define BCM_3368_M2M_BASE (0xdeadbeef) | ||
245 | #define BCM_3368_ATM_BASE (0xdeadbeef) | ||
246 | #define BCM_3368_XTM_BASE (0xdeadbeef) | ||
247 | #define BCM_3368_XTMDMA_BASE (0xdeadbeef) | ||
248 | #define BCM_3368_XTMDMAC_BASE (0xdeadbeef) | ||
249 | #define BCM_3368_XTMDMAS_BASE (0xdeadbeef) | ||
250 | #define BCM_3368_PCM_BASE (0xfff9c200) | ||
251 | #define BCM_3368_PCMDMA_BASE (0xdeadbeef) | ||
252 | #define BCM_3368_PCMDMAC_BASE (0xdeadbeef) | ||
253 | #define BCM_3368_PCMDMAS_BASE (0xdeadbeef) | ||
254 | #define BCM_3368_RNG_BASE (0xdeadbeef) | ||
255 | #define BCM_3368_MISC_BASE (0xdeadbeef) | ||
256 | |||
257 | /* | ||
194 | * 6328 register sets base address | 258 | * 6328 register sets base address |
195 | */ | 259 | */ |
196 | #define BCM_6328_DSL_LMEM_BASE (0xdeadbeef) | 260 | #define BCM_6328_DSL_LMEM_BASE (0xdeadbeef) |
@@ -235,6 +299,8 @@ enum bcm63xx_regs_set { | |||
235 | #define BCM_6328_PCMDMAS_BASE (0xdeadbeef) | 299 | #define BCM_6328_PCMDMAS_BASE (0xdeadbeef) |
236 | #define BCM_6328_RNG_BASE (0xdeadbeef) | 300 | #define BCM_6328_RNG_BASE (0xdeadbeef) |
237 | #define BCM_6328_MISC_BASE (0xb0001800) | 301 | #define BCM_6328_MISC_BASE (0xb0001800) |
302 | #define BCM_6328_OTP_BASE (0xb0000600) | ||
303 | |||
238 | /* | 304 | /* |
239 | * 6338 register sets base address | 305 | * 6338 register sets base address |
240 | */ | 306 | */ |
@@ -298,7 +364,7 @@ enum bcm63xx_regs_set { | |||
298 | #define BCM_6345_USBDMA_BASE (0xfffe2800) | 364 | #define BCM_6345_USBDMA_BASE (0xfffe2800) |
299 | #define BCM_6345_ENET0_BASE (0xfffe1800) | 365 | #define BCM_6345_ENET0_BASE (0xfffe1800) |
300 | #define BCM_6345_ENETDMA_BASE (0xfffe2800) | 366 | #define BCM_6345_ENETDMA_BASE (0xfffe2800) |
301 | #define BCM_6345_ENETDMAC_BASE (0xfffe2900) | 367 | #define BCM_6345_ENETDMAC_BASE (0xfffe2840) |
302 | #define BCM_6345_ENETDMAS_BASE (0xfffe2a00) | 368 | #define BCM_6345_ENETDMAS_BASE (0xfffe2a00) |
303 | #define BCM_6345_ENETSW_BASE (0xdeadbeef) | 369 | #define BCM_6345_ENETSW_BASE (0xdeadbeef) |
304 | #define BCM_6345_PCMCIA_BASE (0xfffe2028) | 370 | #define BCM_6345_PCMCIA_BASE (0xfffe2028) |
@@ -620,6 +686,9 @@ static inline unsigned long bcm63xx_regset_address(enum bcm63xx_regs_set set) | |||
620 | #ifdef BCMCPU_RUNTIME_DETECT | 686 | #ifdef BCMCPU_RUNTIME_DETECT |
621 | return bcm63xx_regs_base[set]; | 687 | return bcm63xx_regs_base[set]; |
622 | #else | 688 | #else |
689 | #ifdef CONFIG_BCM63XX_CPU_3368 | ||
690 | __GEN_RSET(3368) | ||
691 | #endif | ||
623 | #ifdef CONFIG_BCM63XX_CPU_6328 | 692 | #ifdef CONFIG_BCM63XX_CPU_6328 |
624 | __GEN_RSET(6328) | 693 | __GEN_RSET(6328) |
625 | #endif | 694 | #endif |
@@ -687,6 +756,52 @@ enum bcm63xx_irq { | |||
687 | }; | 756 | }; |
688 | 757 | ||
689 | /* | 758 | /* |
759 | * 3368 irqs | ||
760 | */ | ||
761 | #define BCM_3368_TIMER_IRQ (IRQ_INTERNAL_BASE + 0) | ||
762 | #define BCM_3368_SPI_IRQ (IRQ_INTERNAL_BASE + 1) | ||
763 | #define BCM_3368_UART0_IRQ (IRQ_INTERNAL_BASE + 2) | ||
764 | #define BCM_3368_UART1_IRQ (IRQ_INTERNAL_BASE + 3) | ||
765 | #define BCM_3368_DSL_IRQ 0 | ||
766 | #define BCM_3368_UDC0_IRQ 0 | ||
767 | #define BCM_3368_OHCI0_IRQ 0 | ||
768 | #define BCM_3368_ENET0_IRQ (IRQ_INTERNAL_BASE + 8) | ||
769 | #define BCM_3368_ENET1_IRQ (IRQ_INTERNAL_BASE + 6) | ||
770 | #define BCM_3368_ENET_PHY_IRQ (IRQ_INTERNAL_BASE + 9) | ||
771 | #define BCM_3368_ENET0_RXDMA_IRQ (IRQ_INTERNAL_BASE + 15) | ||
772 | #define BCM_3368_ENET0_TXDMA_IRQ (IRQ_INTERNAL_BASE + 16) | ||
773 | #define BCM_3368_HSSPI_IRQ 0 | ||
774 | #define BCM_3368_EHCI0_IRQ 0 | ||
775 | #define BCM_3368_USBD_IRQ 0 | ||
776 | #define BCM_3368_USBD_RXDMA0_IRQ 0 | ||
777 | #define BCM_3368_USBD_TXDMA0_IRQ 0 | ||
778 | #define BCM_3368_USBD_RXDMA1_IRQ 0 | ||
779 | #define BCM_3368_USBD_TXDMA1_IRQ 0 | ||
780 | #define BCM_3368_USBD_RXDMA2_IRQ 0 | ||
781 | #define BCM_3368_USBD_TXDMA2_IRQ 0 | ||
782 | #define BCM_3368_ENET1_RXDMA_IRQ (IRQ_INTERNAL_BASE + 17) | ||
783 | #define BCM_3368_ENET1_TXDMA_IRQ (IRQ_INTERNAL_BASE + 18) | ||
784 | #define BCM_3368_PCI_IRQ (IRQ_INTERNAL_BASE + 31) | ||
785 | #define BCM_3368_PCMCIA_IRQ 0 | ||
786 | #define BCM_3368_ATM_IRQ 0 | ||
787 | #define BCM_3368_ENETSW_RXDMA0_IRQ 0 | ||
788 | #define BCM_3368_ENETSW_RXDMA1_IRQ 0 | ||
789 | #define BCM_3368_ENETSW_RXDMA2_IRQ 0 | ||
790 | #define BCM_3368_ENETSW_RXDMA3_IRQ 0 | ||
791 | #define BCM_3368_ENETSW_TXDMA0_IRQ 0 | ||
792 | #define BCM_3368_ENETSW_TXDMA1_IRQ 0 | ||
793 | #define BCM_3368_ENETSW_TXDMA2_IRQ 0 | ||
794 | #define BCM_3368_ENETSW_TXDMA3_IRQ 0 | ||
795 | #define BCM_3368_XTM_IRQ 0 | ||
796 | #define BCM_3368_XTM_DMA0_IRQ 0 | ||
797 | |||
798 | #define BCM_3368_EXT_IRQ0 (IRQ_INTERNAL_BASE + 25) | ||
799 | #define BCM_3368_EXT_IRQ1 (IRQ_INTERNAL_BASE + 26) | ||
800 | #define BCM_3368_EXT_IRQ2 (IRQ_INTERNAL_BASE + 27) | ||
801 | #define BCM_3368_EXT_IRQ3 (IRQ_INTERNAL_BASE + 28) | ||
802 | |||
803 | |||
804 | /* | ||
690 | * 6328 irqs | 805 | * 6328 irqs |
691 | */ | 806 | */ |
692 | #define BCM_6328_HIGH_IRQ_BASE (IRQ_INTERNAL_BASE + 32) | 807 | #define BCM_6328_HIGH_IRQ_BASE (IRQ_INTERNAL_BASE + 32) |
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h index d53f611184b9..753953e86242 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_enet.h | |||
@@ -4,6 +4,8 @@ | |||
4 | #include <linux/if_ether.h> | 4 | #include <linux/if_ether.h> |
5 | #include <linux/init.h> | 5 | #include <linux/init.h> |
6 | 6 | ||
7 | #include <bcm63xx_regs.h> | ||
8 | |||
7 | /* | 9 | /* |
8 | * on board ethernet platform data | 10 | * on board ethernet platform data |
9 | */ | 11 | */ |
@@ -37,9 +39,129 @@ struct bcm63xx_enet_platform_data { | |||
37 | int phy_id, int reg), | 39 | int phy_id, int reg), |
38 | void (*mii_write)(struct net_device *dev, | 40 | void (*mii_write)(struct net_device *dev, |
39 | int phy_id, int reg, int val)); | 41 | int phy_id, int reg, int val)); |
42 | |||
43 | /* DMA channel enable mask */ | ||
44 | u32 dma_chan_en_mask; | ||
45 | |||
46 | /* DMA channel interrupt mask */ | ||
47 | u32 dma_chan_int_mask; | ||
48 | |||
49 | /* DMA engine has internal SRAM */ | ||
50 | bool dma_has_sram; | ||
51 | |||
52 | /* DMA channel register width */ | ||
53 | unsigned int dma_chan_width; | ||
54 | |||
55 | /* DMA descriptor shift */ | ||
56 | unsigned int dma_desc_shift; | ||
57 | }; | ||
58 | |||
59 | /* | ||
60 | * on board ethernet switch platform data | ||
61 | */ | ||
62 | #define ENETSW_MAX_PORT 8 | ||
63 | #define ENETSW_PORTS_6328 5 /* 4 FE PHY + 1 RGMII */ | ||
64 | #define ENETSW_PORTS_6368 6 /* 4 FE PHY + 2 RGMII */ | ||
65 | |||
66 | #define ENETSW_RGMII_PORT0 4 | ||
67 | |||
68 | struct bcm63xx_enetsw_port { | ||
69 | int used; | ||
70 | int phy_id; | ||
71 | |||
72 | int bypass_link; | ||
73 | int force_speed; | ||
74 | int force_duplex_full; | ||
75 | |||
76 | const char *name; | ||
77 | }; | ||
78 | |||
79 | struct bcm63xx_enetsw_platform_data { | ||
80 | char mac_addr[ETH_ALEN]; | ||
81 | int num_ports; | ||
82 | struct bcm63xx_enetsw_port used_ports[ENETSW_MAX_PORT]; | ||
83 | |||
84 | /* DMA channel enable mask */ | ||
85 | u32 dma_chan_en_mask; | ||
86 | |||
87 | /* DMA channel interrupt mask */ | ||
88 | u32 dma_chan_int_mask; | ||
89 | |||
90 | /* DMA channel register width */ | ||
91 | unsigned int dma_chan_width; | ||
92 | |||
93 | /* DMA engine has internal SRAM */ | ||
94 | bool dma_has_sram; | ||
40 | }; | 95 | }; |
41 | 96 | ||
42 | int __init bcm63xx_enet_register(int unit, | 97 | int __init bcm63xx_enet_register(int unit, |
43 | const struct bcm63xx_enet_platform_data *pd); | 98 | const struct bcm63xx_enet_platform_data *pd); |
44 | 99 | ||
100 | int bcm63xx_enetsw_register(const struct bcm63xx_enetsw_platform_data *pd); | ||
101 | |||
102 | enum bcm63xx_regs_enetdmac { | ||
103 | ENETDMAC_CHANCFG, | ||
104 | ENETDMAC_IR, | ||
105 | ENETDMAC_IRMASK, | ||
106 | ENETDMAC_MAXBURST, | ||
107 | ENETDMAC_BUFALLOC, | ||
108 | ENETDMAC_RSTART, | ||
109 | ENETDMAC_FC, | ||
110 | ENETDMAC_LEN, | ||
111 | }; | ||
112 | |||
113 | static inline unsigned long bcm63xx_enetdmacreg(enum bcm63xx_regs_enetdmac reg) | ||
114 | { | ||
115 | #ifdef BCMCPU_RUNTIME_DETECT | ||
116 | extern const unsigned long *bcm63xx_regs_enetdmac; | ||
117 | |||
118 | return bcm63xx_regs_enetdmac[reg]; | ||
119 | #else | ||
120 | #ifdef CONFIG_BCM63XX_CPU_6345 | ||
121 | switch (reg) { | ||
122 | case ENETDMAC_CHANCFG: | ||
123 | return ENETDMA_6345_CHANCFG_REG; | ||
124 | case ENETDMAC_IR: | ||
125 | return ENETDMA_6345_IR_REG; | ||
126 | case ENETDMAC_IRMASK: | ||
127 | return ENETDMA_6345_IRMASK_REG; | ||
128 | case ENETDMAC_MAXBURST: | ||
129 | return ENETDMA_6345_MAXBURST_REG; | ||
130 | case ENETDMAC_BUFALLOC: | ||
131 | return ENETDMA_6345_BUFALLOC_REG; | ||
132 | case ENETDMAC_RSTART: | ||
133 | return ENETDMA_6345_RSTART_REG; | ||
134 | case ENETDMAC_FC: | ||
135 | return ENETDMA_6345_FC_REG; | ||
136 | case ENETDMAC_LEN: | ||
137 | return ENETDMA_6345_LEN_REG; | ||
138 | } | ||
139 | #endif | ||
140 | #if defined(CONFIG_BCM63XX_CPU_6328) || \ | ||
141 | defined(CONFIG_BCM63XX_CPU_6338) || \ | ||
142 | defined(CONFIG_BCM63XX_CPU_6348) || \ | ||
143 | defined(CONFIG_BCM63XX_CPU_6358) || \ | ||
144 | defined(CONFIG_BCM63XX_CPU_6362) || \ | ||
145 | defined(CONFIG_BCM63XX_CPU_6368) | ||
146 | switch (reg) { | ||
147 | case ENETDMAC_CHANCFG: | ||
148 | return ENETDMAC_CHANCFG_REG; | ||
149 | case ENETDMAC_IR: | ||
150 | return ENETDMAC_IR_REG; | ||
151 | case ENETDMAC_IRMASK: | ||
152 | return ENETDMAC_IRMASK_REG; | ||
153 | case ENETDMAC_MAXBURST: | ||
154 | return ENETDMAC_MAXBURST_REG; | ||
155 | case ENETDMAC_BUFALLOC: | ||
156 | case ENETDMAC_RSTART: | ||
157 | case ENETDMAC_FC: | ||
158 | case ENETDMAC_LEN: | ||
159 | return 0; | ||
160 | } | ||
161 | #endif | ||
162 | #endif | ||
163 | return 0; | ||
164 | } | ||
165 | |||
166 | |||
45 | #endif /* ! BCM63XX_DEV_ENET_H_ */ | 167 | #endif /* ! BCM63XX_DEV_ENET_H_ */ |
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h index 35baa1a60a64..565ff36a1119 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_gpio.h | |||
@@ -11,6 +11,7 @@ static inline unsigned long bcm63xx_gpio_count(void) | |||
11 | switch (bcm63xx_get_cpu_id()) { | 11 | switch (bcm63xx_get_cpu_id()) { |
12 | case BCM6328_CPU_ID: | 12 | case BCM6328_CPU_ID: |
13 | return 32; | 13 | return 32; |
14 | case BCM3368_CPU_ID: | ||
14 | case BCM6358_CPU_ID: | 15 | case BCM6358_CPU_ID: |
15 | return 40; | 16 | return 40; |
16 | case BCM6338_CPU_ID: | 17 | case BCM6338_CPU_ID: |
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h index 3203fe49b34d..9875db31d883 100644 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_regs.h | |||
@@ -15,6 +15,39 @@ | |||
15 | /* Clock Control register */ | 15 | /* Clock Control register */ |
16 | #define PERF_CKCTL_REG 0x4 | 16 | #define PERF_CKCTL_REG 0x4 |
17 | 17 | ||
18 | #define CKCTL_3368_MAC_EN (1 << 3) | ||
19 | #define CKCTL_3368_TC_EN (1 << 5) | ||
20 | #define CKCTL_3368_US_TOP_EN (1 << 6) | ||
21 | #define CKCTL_3368_DS_TOP_EN (1 << 7) | ||
22 | #define CKCTL_3368_APM_EN (1 << 8) | ||
23 | #define CKCTL_3368_SPI_EN (1 << 9) | ||
24 | #define CKCTL_3368_USBS_EN (1 << 10) | ||
25 | #define CKCTL_3368_BMU_EN (1 << 11) | ||
26 | #define CKCTL_3368_PCM_EN (1 << 12) | ||
27 | #define CKCTL_3368_NTP_EN (1 << 13) | ||
28 | #define CKCTL_3368_ACP_B_EN (1 << 14) | ||
29 | #define CKCTL_3368_ACP_A_EN (1 << 15) | ||
30 | #define CKCTL_3368_EMUSB_EN (1 << 17) | ||
31 | #define CKCTL_3368_ENET0_EN (1 << 18) | ||
32 | #define CKCTL_3368_ENET1_EN (1 << 19) | ||
33 | #define CKCTL_3368_USBU_EN (1 << 20) | ||
34 | #define CKCTL_3368_EPHY_EN (1 << 21) | ||
35 | |||
36 | #define CKCTL_3368_ALL_SAFE_EN (CKCTL_3368_MAC_EN | \ | ||
37 | CKCTL_3368_TC_EN | \ | ||
38 | CKCTL_3368_US_TOP_EN | \ | ||
39 | CKCTL_3368_DS_TOP_EN | \ | ||
40 | CKCTL_3368_APM_EN | \ | ||
41 | CKCTL_3368_SPI_EN | \ | ||
42 | CKCTL_3368_USBS_EN | \ | ||
43 | CKCTL_3368_BMU_EN | \ | ||
44 | CKCTL_3368_PCM_EN | \ | ||
45 | CKCTL_3368_NTP_EN | \ | ||
46 | CKCTL_3368_ACP_B_EN | \ | ||
47 | CKCTL_3368_ACP_A_EN | \ | ||
48 | CKCTL_3368_EMUSB_EN | \ | ||
49 | CKCTL_3368_USBU_EN) | ||
50 | |||
18 | #define CKCTL_6328_PHYMIPS_EN (1 << 0) | 51 | #define CKCTL_6328_PHYMIPS_EN (1 << 0) |
19 | #define CKCTL_6328_ADSL_QPROC_EN (1 << 1) | 52 | #define CKCTL_6328_ADSL_QPROC_EN (1 << 1) |
20 | #define CKCTL_6328_ADSL_AFE_EN (1 << 2) | 53 | #define CKCTL_6328_ADSL_AFE_EN (1 << 2) |
@@ -181,6 +214,7 @@ | |||
181 | #define SYS_PLL_SOFT_RESET 0x1 | 214 | #define SYS_PLL_SOFT_RESET 0x1 |
182 | 215 | ||
183 | /* Interrupt Mask register */ | 216 | /* Interrupt Mask register */ |
217 | #define PERF_IRQMASK_3368_REG 0xc | ||
184 | #define PERF_IRQMASK_6328_REG 0x20 | 218 | #define PERF_IRQMASK_6328_REG 0x20 |
185 | #define PERF_IRQMASK_6338_REG 0xc | 219 | #define PERF_IRQMASK_6338_REG 0xc |
186 | #define PERF_IRQMASK_6345_REG 0xc | 220 | #define PERF_IRQMASK_6345_REG 0xc |
@@ -190,6 +224,7 @@ | |||
190 | #define PERF_IRQMASK_6368_REG 0x20 | 224 | #define PERF_IRQMASK_6368_REG 0x20 |
191 | 225 | ||
192 | /* Interrupt Status register */ | 226 | /* Interrupt Status register */ |
227 | #define PERF_IRQSTAT_3368_REG 0x10 | ||
193 | #define PERF_IRQSTAT_6328_REG 0x28 | 228 | #define PERF_IRQSTAT_6328_REG 0x28 |
194 | #define PERF_IRQSTAT_6338_REG 0x10 | 229 | #define PERF_IRQSTAT_6338_REG 0x10 |
195 | #define PERF_IRQSTAT_6345_REG 0x10 | 230 | #define PERF_IRQSTAT_6345_REG 0x10 |
@@ -199,6 +234,7 @@ | |||
199 | #define PERF_IRQSTAT_6368_REG 0x28 | 234 | #define PERF_IRQSTAT_6368_REG 0x28 |
200 | 235 | ||
201 | /* External Interrupt Configuration register */ | 236 | /* External Interrupt Configuration register */ |
237 | #define PERF_EXTIRQ_CFG_REG_3368 0x14 | ||
202 | #define PERF_EXTIRQ_CFG_REG_6328 0x18 | 238 | #define PERF_EXTIRQ_CFG_REG_6328 0x18 |
203 | #define PERF_EXTIRQ_CFG_REG_6338 0x14 | 239 | #define PERF_EXTIRQ_CFG_REG_6338 0x14 |
204 | #define PERF_EXTIRQ_CFG_REG_6345 0x14 | 240 | #define PERF_EXTIRQ_CFG_REG_6345 0x14 |
@@ -236,6 +272,13 @@ | |||
236 | #define PERF_SOFTRESET_6362_REG 0x10 | 272 | #define PERF_SOFTRESET_6362_REG 0x10 |
237 | #define PERF_SOFTRESET_6368_REG 0x10 | 273 | #define PERF_SOFTRESET_6368_REG 0x10 |
238 | 274 | ||
275 | #define SOFTRESET_3368_SPI_MASK (1 << 0) | ||
276 | #define SOFTRESET_3368_ENET_MASK (1 << 2) | ||
277 | #define SOFTRESET_3368_MPI_MASK (1 << 3) | ||
278 | #define SOFTRESET_3368_EPHY_MASK (1 << 6) | ||
279 | #define SOFTRESET_3368_USBS_MASK (1 << 11) | ||
280 | #define SOFTRESET_3368_PCM_MASK (1 << 13) | ||
281 | |||
239 | #define SOFTRESET_6328_SPI_MASK (1 << 0) | 282 | #define SOFTRESET_6328_SPI_MASK (1 << 0) |
240 | #define SOFTRESET_6328_EPHY_MASK (1 << 1) | 283 | #define SOFTRESET_6328_EPHY_MASK (1 << 1) |
241 | #define SOFTRESET_6328_SAR_MASK (1 << 2) | 284 | #define SOFTRESET_6328_SAR_MASK (1 << 2) |
@@ -727,6 +770,8 @@ | |||
727 | /************************************************************************* | 770 | /************************************************************************* |
728 | * _REG relative to RSET_ENETDMA | 771 | * _REG relative to RSET_ENETDMA |
729 | *************************************************************************/ | 772 | *************************************************************************/ |
773 | #define ENETDMA_CHAN_WIDTH 0x10 | ||
774 | #define ENETDMA_6345_CHAN_WIDTH 0x40 | ||
730 | 775 | ||
731 | /* Controller Configuration Register */ | 776 | /* Controller Configuration Register */ |
732 | #define ENETDMA_CFG_REG (0x0) | 777 | #define ENETDMA_CFG_REG (0x0) |
@@ -782,31 +827,56 @@ | |||
782 | /* State Ram Word 4 */ | 827 | /* State Ram Word 4 */ |
783 | #define ENETDMA_SRAM4_REG(x) (0x20c + (x) * 0x10) | 828 | #define ENETDMA_SRAM4_REG(x) (0x20c + (x) * 0x10) |
784 | 829 | ||
830 | /* Broadcom 6345 ENET DMA definitions */ | ||
831 | #define ENETDMA_6345_CHANCFG_REG (0x00) | ||
832 | |||
833 | #define ENETDMA_6345_MAXBURST_REG (0x40) | ||
834 | |||
835 | #define ENETDMA_6345_RSTART_REG (0x08) | ||
836 | |||
837 | #define ENETDMA_6345_LEN_REG (0x0C) | ||
838 | |||
839 | #define ENETDMA_6345_IR_REG (0x14) | ||
840 | |||
841 | #define ENETDMA_6345_IRMASK_REG (0x18) | ||
842 | |||
843 | #define ENETDMA_6345_FC_REG (0x1C) | ||
844 | |||
845 | #define ENETDMA_6345_BUFALLOC_REG (0x20) | ||
846 | |||
847 | /* Shift down for EOP, SOP and WRAP bits */ | ||
848 | #define ENETDMA_6345_DESC_SHIFT (3) | ||
785 | 849 | ||
786 | /************************************************************************* | 850 | /************************************************************************* |
787 | * _REG relative to RSET_ENETDMAC | 851 | * _REG relative to RSET_ENETDMAC |
788 | *************************************************************************/ | 852 | *************************************************************************/ |
789 | 853 | ||
790 | /* Channel Configuration register */ | 854 | /* Channel Configuration register */ |
791 | #define ENETDMAC_CHANCFG_REG(x) ((x) * 0x10) | 855 | #define ENETDMAC_CHANCFG_REG (0x0) |
792 | #define ENETDMAC_CHANCFG_EN_SHIFT 0 | 856 | #define ENETDMAC_CHANCFG_EN_SHIFT 0 |
793 | #define ENETDMAC_CHANCFG_EN_MASK (1 << ENETDMAC_CHANCFG_EN_SHIFT) | 857 | #define ENETDMAC_CHANCFG_EN_MASK (1 << ENETDMAC_CHANCFG_EN_SHIFT) |
794 | #define ENETDMAC_CHANCFG_PKTHALT_SHIFT 1 | 858 | #define ENETDMAC_CHANCFG_PKTHALT_SHIFT 1 |
795 | #define ENETDMAC_CHANCFG_PKTHALT_MASK (1 << ENETDMAC_CHANCFG_PKTHALT_SHIFT) | 859 | #define ENETDMAC_CHANCFG_PKTHALT_MASK (1 << ENETDMAC_CHANCFG_PKTHALT_SHIFT) |
796 | #define ENETDMAC_CHANCFG_BUFHALT_SHIFT 2 | 860 | #define ENETDMAC_CHANCFG_BUFHALT_SHIFT 2 |
797 | #define ENETDMAC_CHANCFG_BUFHALT_MASK (1 << ENETDMAC_CHANCFG_BUFHALT_SHIFT) | 861 | #define ENETDMAC_CHANCFG_BUFHALT_MASK (1 << ENETDMAC_CHANCFG_BUFHALT_SHIFT) |
862 | #define ENETDMAC_CHANCFG_CHAINING_SHIFT 2 | ||
863 | #define ENETDMAC_CHANCFG_CHAINING_MASK (1 << ENETDMAC_CHANCFG_CHAINING_SHIFT) | ||
864 | #define ENETDMAC_CHANCFG_WRAP_EN_SHIFT 3 | ||
865 | #define ENETDMAC_CHANCFG_WRAP_EN_MASK (1 << ENETDMAC_CHANCFG_WRAP_EN_SHIFT) | ||
866 | #define ENETDMAC_CHANCFG_FLOWC_EN_SHIFT 4 | ||
867 | #define ENETDMAC_CHANCFG_FLOWC_EN_MASK (1 << ENETDMAC_CHANCFG_FLOWC_EN_SHIFT) | ||
798 | 868 | ||
799 | /* Interrupt Control/Status register */ | 869 | /* Interrupt Control/Status register */ |
800 | #define ENETDMAC_IR_REG(x) (0x4 + (x) * 0x10) | 870 | #define ENETDMAC_IR_REG (0x4) |
801 | #define ENETDMAC_IR_BUFDONE_MASK (1 << 0) | 871 | #define ENETDMAC_IR_BUFDONE_MASK (1 << 0) |
802 | #define ENETDMAC_IR_PKTDONE_MASK (1 << 1) | 872 | #define ENETDMAC_IR_PKTDONE_MASK (1 << 1) |
803 | #define ENETDMAC_IR_NOTOWNER_MASK (1 << 2) | 873 | #define ENETDMAC_IR_NOTOWNER_MASK (1 << 2) |
804 | 874 | ||
805 | /* Interrupt Mask register */ | 875 | /* Interrupt Mask register */ |
806 | #define ENETDMAC_IRMASK_REG(x) (0x8 + (x) * 0x10) | 876 | #define ENETDMAC_IRMASK_REG (0x8) |
807 | 877 | ||
808 | /* Maximum Burst Length */ | 878 | /* Maximum Burst Length */ |
809 | #define ENETDMAC_MAXBURST_REG(x) (0xc + (x) * 0x10) | 879 | #define ENETDMAC_MAXBURST_REG (0xc) |
810 | 880 | ||
811 | 881 | ||
812 | /************************************************************************* | 882 | /************************************************************************* |
@@ -814,26 +884,76 @@ | |||
814 | *************************************************************************/ | 884 | *************************************************************************/ |
815 | 885 | ||
816 | /* Ring Start Address register */ | 886 | /* Ring Start Address register */ |
817 | #define ENETDMAS_RSTART_REG(x) ((x) * 0x10) | 887 | #define ENETDMAS_RSTART_REG (0x0) |
818 | 888 | ||
819 | /* State Ram Word 2 */ | 889 | /* State Ram Word 2 */ |
820 | #define ENETDMAS_SRAM2_REG(x) (0x4 + (x) * 0x10) | 890 | #define ENETDMAS_SRAM2_REG (0x4) |
821 | 891 | ||
822 | /* State Ram Word 3 */ | 892 | /* State Ram Word 3 */ |
823 | #define ENETDMAS_SRAM3_REG(x) (0x8 + (x) * 0x10) | 893 | #define ENETDMAS_SRAM3_REG (0x8) |
824 | 894 | ||
825 | /* State Ram Word 4 */ | 895 | /* State Ram Word 4 */ |
826 | #define ENETDMAS_SRAM4_REG(x) (0xc + (x) * 0x10) | 896 | #define ENETDMAS_SRAM4_REG (0xc) |
827 | 897 | ||
828 | 898 | ||
829 | /************************************************************************* | 899 | /************************************************************************* |
830 | * _REG relative to RSET_ENETSW | 900 | * _REG relative to RSET_ENETSW |
831 | *************************************************************************/ | 901 | *************************************************************************/ |
832 | 902 | ||
903 | /* Port traffic control */ | ||
904 | #define ENETSW_PTCTRL_REG(x) (0x0 + (x)) | ||
905 | #define ENETSW_PTCTRL_RXDIS_MASK (1 << 0) | ||
906 | #define ENETSW_PTCTRL_TXDIS_MASK (1 << 1) | ||
907 | |||
908 | /* Switch mode register */ | ||
909 | #define ENETSW_SWMODE_REG (0xb) | ||
910 | #define ENETSW_SWMODE_FWD_EN_MASK (1 << 1) | ||
911 | |||
912 | /* IMP override Register */ | ||
913 | #define ENETSW_IMPOV_REG (0xe) | ||
914 | #define ENETSW_IMPOV_FORCE_MASK (1 << 7) | ||
915 | #define ENETSW_IMPOV_TXFLOW_MASK (1 << 5) | ||
916 | #define ENETSW_IMPOV_RXFLOW_MASK (1 << 4) | ||
917 | #define ENETSW_IMPOV_1000_MASK (1 << 3) | ||
918 | #define ENETSW_IMPOV_100_MASK (1 << 2) | ||
919 | #define ENETSW_IMPOV_FDX_MASK (1 << 1) | ||
920 | #define ENETSW_IMPOV_LINKUP_MASK (1 << 0) | ||
921 | |||
922 | /* Port override Register */ | ||
923 | #define ENETSW_PORTOV_REG(x) (0x58 + (x)) | ||
924 | #define ENETSW_PORTOV_ENABLE_MASK (1 << 6) | ||
925 | #define ENETSW_PORTOV_TXFLOW_MASK (1 << 5) | ||
926 | #define ENETSW_PORTOV_RXFLOW_MASK (1 << 4) | ||
927 | #define ENETSW_PORTOV_1000_MASK (1 << 3) | ||
928 | #define ENETSW_PORTOV_100_MASK (1 << 2) | ||
929 | #define ENETSW_PORTOV_FDX_MASK (1 << 1) | ||
930 | #define ENETSW_PORTOV_LINKUP_MASK (1 << 0) | ||
931 | |||
932 | /* MDIO control register */ | ||
933 | #define ENETSW_MDIOC_REG (0xb0) | ||
934 | #define ENETSW_MDIOC_EXT_MASK (1 << 16) | ||
935 | #define ENETSW_MDIOC_REG_SHIFT 20 | ||
936 | #define ENETSW_MDIOC_PHYID_SHIFT 25 | ||
937 | #define ENETSW_MDIOC_RD_MASK (1 << 30) | ||
938 | #define ENETSW_MDIOC_WR_MASK (1 << 31) | ||
939 | |||
940 | /* MDIO data register */ | ||
941 | #define ENETSW_MDIOD_REG (0xb4) | ||
942 | |||
943 | /* Global Management Configuration Register */ | ||
944 | #define ENETSW_GMCR_REG (0x200) | ||
945 | #define ENETSW_GMCR_RST_MIB_MASK (1 << 0) | ||
946 | |||
833 | /* MIB register */ | 947 | /* MIB register */ |
834 | #define ENETSW_MIB_REG(x) (0x2800 + (x) * 4) | 948 | #define ENETSW_MIB_REG(x) (0x2800 + (x) * 4) |
835 | #define ENETSW_MIB_REG_COUNT 47 | 949 | #define ENETSW_MIB_REG_COUNT 47 |
836 | 950 | ||
951 | /* Jumbo control register port mask register */ | ||
952 | #define ENETSW_JMBCTL_PORT_REG (0x4004) | ||
953 | |||
954 | /* Jumbo control mib good frame register */ | ||
955 | #define ENETSW_JMBCTL_MAXSIZE_REG (0x4008) | ||
956 | |||
837 | 957 | ||
838 | /************************************************************************* | 958 | /************************************************************************* |
839 | * _REG relative to RSET_OHCI_PRIV | 959 | * _REG relative to RSET_OHCI_PRIV |
@@ -1293,7 +1413,7 @@ | |||
1293 | #define SPI_6348_RX_DATA 0x80 | 1413 | #define SPI_6348_RX_DATA 0x80 |
1294 | #define SPI_6348_RX_DATA_SIZE 0x3f | 1414 | #define SPI_6348_RX_DATA_SIZE 0x3f |
1295 | 1415 | ||
1296 | /* BCM 6358/6262/6368 SPI core */ | 1416 | /* BCM 3368/6358/6262/6368 SPI core */ |
1297 | #define SPI_6358_MSG_CTL 0x00 /* 16-bits register */ | 1417 | #define SPI_6358_MSG_CTL 0x00 /* 16-bits register */ |
1298 | #define SPI_6358_MSG_CTL_WIDTH 16 | 1418 | #define SPI_6358_MSG_CTL_WIDTH 16 |
1299 | #define SPI_6358_MSG_DATA 0x02 | 1419 | #define SPI_6358_MSG_DATA 0x02 |
@@ -1434,4 +1554,11 @@ | |||
1434 | 1554 | ||
1435 | #define PCIE_DEVICE_OFFSET 0x8000 | 1555 | #define PCIE_DEVICE_OFFSET 0x8000 |
1436 | 1556 | ||
1557 | /************************************************************************* | ||
1558 | * _REG relative to RSET_OTP | ||
1559 | *************************************************************************/ | ||
1560 | |||
1561 | #define OTP_USER_BITS_6328_REG(i) (0x20 + (i) * 4) | ||
1562 | #define OTP_6328_REG3_TP1_DISABLED BIT(9) | ||
1563 | |||
1437 | #endif /* BCM63XX_REGS_H_ */ | 1564 | #endif /* BCM63XX_REGS_H_ */ |
diff --git a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h index 682bcf3b492a..b86a0efba665 100644 --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h | |||
@@ -24,6 +24,7 @@ struct board_info { | |||
24 | /* enabled feature/device */ | 24 | /* enabled feature/device */ |
25 | unsigned int has_enet0:1; | 25 | unsigned int has_enet0:1; |
26 | unsigned int has_enet1:1; | 26 | unsigned int has_enet1:1; |
27 | unsigned int has_enetsw:1; | ||
27 | unsigned int has_pci:1; | 28 | unsigned int has_pci:1; |
28 | unsigned int has_pccard:1; | 29 | unsigned int has_pccard:1; |
29 | unsigned int has_ohci0:1; | 30 | unsigned int has_ohci0:1; |
@@ -36,6 +37,7 @@ struct board_info { | |||
36 | /* ethernet config */ | 37 | /* ethernet config */ |
37 | struct bcm63xx_enet_platform_data enet0; | 38 | struct bcm63xx_enet_platform_data enet0; |
38 | struct bcm63xx_enet_platform_data enet1; | 39 | struct bcm63xx_enet_platform_data enet1; |
40 | struct bcm63xx_enetsw_platform_data enetsw; | ||
39 | 41 | ||
40 | /* USB config */ | 42 | /* USB config */ |
41 | struct bcm63xx_usbd_platform_data usbd; | 43 | struct bcm63xx_usbd_platform_data usbd; |
@@ -45,6 +47,12 @@ struct board_info { | |||
45 | 47 | ||
46 | /* GPIO LEDs */ | 48 | /* GPIO LEDs */ |
47 | struct gpio_led leds[5]; | 49 | struct gpio_led leds[5]; |
50 | |||
51 | /* External PHY reset GPIO */ | ||
52 | unsigned int ephy_reset_gpio; | ||
53 | |||
54 | /* External PHY reset GPIO flags from gpio.h */ | ||
55 | unsigned long ephy_reset_gpio_flags; | ||
48 | }; | 56 | }; |
49 | 57 | ||
50 | #endif /* ! BOARD_BCM963XX_H_ */ | 58 | #endif /* ! BOARD_BCM963XX_H_ */ |
diff --git a/arch/mips/include/asm/mach-bcm63xx/ioremap.h b/arch/mips/include/asm/mach-bcm63xx/ioremap.h index 94e3011ba7df..ff15e3b14e7a 100644 --- a/arch/mips/include/asm/mach-bcm63xx/ioremap.h +++ b/arch/mips/include/asm/mach-bcm63xx/ioremap.h | |||
@@ -11,6 +11,10 @@ static inline phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size) | |||
11 | static inline int is_bcm63xx_internal_registers(phys_t offset) | 11 | static inline int is_bcm63xx_internal_registers(phys_t offset) |
12 | { | 12 | { |
13 | switch (bcm63xx_get_cpu_id()) { | 13 | switch (bcm63xx_get_cpu_id()) { |
14 | case BCM3368_CPU_ID: | ||
15 | if (offset >= 0xfff80000) | ||
16 | return 1; | ||
17 | break; | ||
14 | case BCM6338_CPU_ID: | 18 | case BCM6338_CPU_ID: |
15 | case BCM6345_CPU_ID: | 19 | case BCM6345_CPU_ID: |
16 | case BCM6348_CPU_ID: | 20 | case BCM6348_CPU_ID: |