aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-25 07:25:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-25 07:25:22 -0400
commit8a9ea3237e7eb5c25f09e429ad242ae5a3d5ea22 (patch)
treea0a63398a9983667d52cbbbf4e2405b4f22b1d83 /arch
parent1be025d3cb40cd295123af2c394f7229ef9b30ca (diff)
parent8b3408f8ee994973869d8ba32c5bf482bc4ddca4 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1745 commits) dp83640: free packet queues on remove dp83640: use proper function to free transmit time stamping packets ipv6: Do not use routes from locally generated RAs |PATCH net-next] tg3: add tx_dropped counter be2net: don't create multiple RX/TX rings in multi channel mode be2net: don't create multiple TXQs in BE2 be2net: refactor VF setup/teardown code into be_vf_setup/clear() be2net: add vlan/rx-mode/flow-control config to be_setup() net_sched: cls_flow: use skb_header_pointer() ipv4: avoid useless call of the function check_peer_pmtu TCP: remove TCP_DEBUG net: Fix driver name for mdio-gpio.c ipv4: tcp: fix TOS value in ACK messages sent from TIME_WAIT rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces ipv4: fix ipsec forward performance regression jme: fix irq storm after suspend/resume route: fix ICMP redirect validation net: hold sock reference while processing tx timestamps tcp: md5: add more const attributes Add ethtool -g support to virtio_net ... Fix up conflicts in: - drivers/net/Kconfig: The split-up generated a trivial conflict with removal of a stale reference to Documentation/networking/net-modules.txt. Remove it from the new location instead. - fs/sysfs/dir.c: Fairly nasty conflicts with the sysfs rb-tree usage, conflicting with Eric Biederman's changes for tagged directories.
Diffstat (limited to 'arch')
-rw-r--r--arch/cris/arch-v10/drivers/Kconfig1
-rw-r--r--arch/cris/arch-v32/drivers/Kconfig1
-rw-r--r--arch/ia64/hp/sim/simeth.c2
-rw-r--r--arch/mips/Kconfig8
-rw-r--r--arch/mips/bcm47xx/Kconfig31
-rw-r--r--arch/mips/bcm47xx/Makefile3
-rw-r--r--arch/mips/bcm47xx/gpio.c82
-rw-r--r--arch/mips/bcm47xx/irq.c12
-rw-r--r--arch/mips/bcm47xx/nvram.c29
-rw-r--r--arch/mips/bcm47xx/serial.c46
-rw-r--r--arch/mips/bcm47xx/setup.c90
-rw-r--r--arch/mips/bcm47xx/time.c16
-rw-r--r--arch/mips/bcm47xx/wgt634u.c14
-rw-r--r--arch/mips/include/asm/mach-bcm47xx/bcm47xx.h26
-rw-r--r--arch/mips/include/asm/mach-bcm47xx/gpio.h108
-rw-r--r--arch/mips/pci/pci-bcm47xx.c6
-rw-r--r--arch/mips/txx9/generic/setup_tx4939.c2
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/boot/dts/p1010rdb.dts10
-rw-r--r--arch/powerpc/boot/dts/p1010si.dtsi10
-rw-r--r--arch/powerpc/configs/40x/acadia_defconfig11
-rw-r--r--arch/powerpc/configs/40x/ep405_defconfig5
-rw-r--r--arch/powerpc/configs/40x/hcu4_defconfig5
-rw-r--r--arch/powerpc/configs/40x/kilauea_defconfig9
-rw-r--r--arch/powerpc/configs/40x/makalu_defconfig9
-rw-r--r--arch/powerpc/configs/40x/walnut_defconfig5
-rw-r--r--arch/powerpc/configs/44x/arches_defconfig9
-rw-r--r--arch/powerpc/configs/44x/bamboo_defconfig5
-rw-r--r--arch/powerpc/configs/44x/bluestone_defconfig9
-rw-r--r--arch/powerpc/configs/44x/canyonlands_defconfig9
-rw-r--r--arch/powerpc/configs/44x/ebony_defconfig5
-rw-r--r--arch/powerpc/configs/44x/eiger_defconfig9
-rw-r--r--arch/powerpc/configs/44x/icon_defconfig5
-rw-r--r--arch/powerpc/configs/44x/katmai_defconfig5
-rw-r--r--arch/powerpc/configs/44x/redwood_defconfig11
-rw-r--r--arch/powerpc/configs/44x/sam440ep_defconfig5
-rw-r--r--arch/powerpc/configs/44x/sequoia_defconfig5
-rw-r--r--arch/powerpc/configs/44x/taishan_defconfig5
-rw-r--r--arch/powerpc/configs/44x/warp_defconfig5
-rw-r--r--arch/powerpc/configs/ppc40x_defconfig5
-rw-r--r--arch/powerpc/configs/ppc44x_defconfig5
-rw-r--r--arch/powerpc/platforms/40x/Kconfig12
-rw-r--r--arch/powerpc/platforms/44x/Kconfig54
-rw-r--r--arch/powerpc/platforms/cell/Kconfig8
-rw-r--r--arch/s390/include/asm/qdio.h78
-rw-r--r--arch/sh/include/asm/sh_eth.h25
-rw-r--r--arch/um/drivers/net_kern.c2
-rw-r--r--arch/xtensa/platforms/iss/network.c2
48 files changed, 612 insertions, 209 deletions
diff --git a/arch/cris/arch-v10/drivers/Kconfig b/arch/cris/arch-v10/drivers/Kconfig
index 0d7221779923..32d90867a984 100644
--- a/arch/cris/arch-v10/drivers/Kconfig
+++ b/arch/cris/arch-v10/drivers/Kconfig
@@ -4,6 +4,7 @@ config ETRAX_ETHERNET
4 bool "Ethernet support" 4 bool "Ethernet support"
5 depends on ETRAX_ARCH_V10 5 depends on ETRAX_ARCH_V10
6 select NET_ETHERNET 6 select NET_ETHERNET
7 select NET_CORE
7 select MII 8 select MII
8 help 9 help
9 This option enables the ETRAX 100LX built-in 10/100Mbit Ethernet 10 This option enables the ETRAX 100LX built-in 10/100Mbit Ethernet
diff --git a/arch/cris/arch-v32/drivers/Kconfig b/arch/cris/arch-v32/drivers/Kconfig
index 41a2732e8b9c..e47e9c3401b0 100644
--- a/arch/cris/arch-v32/drivers/Kconfig
+++ b/arch/cris/arch-v32/drivers/Kconfig
@@ -4,6 +4,7 @@ config ETRAX_ETHERNET
4 bool "Ethernet support" 4 bool "Ethernet support"
5 depends on ETRAX_ARCH_V32 5 depends on ETRAX_ARCH_V32
6 select NET_ETHERNET 6 select NET_ETHERNET
7 select NET_CORE
7 select MII 8 select MII
8 help 9 help
9 This option enables the ETRAX FS built-in 10/100Mbit Ethernet 10 This option enables the ETRAX FS built-in 10/100Mbit Ethernet
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c
index 7e81966ce481..47afcc61f6e5 100644
--- a/arch/ia64/hp/sim/simeth.c
+++ b/arch/ia64/hp/sim/simeth.c
@@ -172,7 +172,7 @@ static const struct net_device_ops simeth_netdev_ops = {
172 .ndo_stop = simeth_close, 172 .ndo_stop = simeth_close,
173 .ndo_start_xmit = simeth_tx, 173 .ndo_start_xmit = simeth_tx,
174 .ndo_get_stats = simeth_get_stats, 174 .ndo_get_stats = simeth_get_stats,
175 .ndo_set_multicast_list = set_multicast_list, /* not yet used */ 175 .ndo_set_rx_mode = set_multicast_list, /* not yet used */
176 176
177}; 177};
178 178
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index b122adc8bdbb..4cbc6d8de210 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -92,15 +92,8 @@ config BCM47XX
92 select DMA_NONCOHERENT 92 select DMA_NONCOHERENT
93 select HW_HAS_PCI 93 select HW_HAS_PCI
94 select IRQ_CPU 94 select IRQ_CPU
95 select SYS_HAS_CPU_MIPS32_R1
96 select SYS_SUPPORTS_32BIT_KERNEL 95 select SYS_SUPPORTS_32BIT_KERNEL
97 select SYS_SUPPORTS_LITTLE_ENDIAN 96 select SYS_SUPPORTS_LITTLE_ENDIAN
98 select SSB
99 select SSB_DRIVER_MIPS
100 select SSB_DRIVER_EXTIF
101 select SSB_EMBEDDED
102 select SSB_B43_PCI_BRIDGE if PCI
103 select SSB_PCICORE_HOSTMODE if PCI
104 select GENERIC_GPIO 97 select GENERIC_GPIO
105 select SYS_HAS_EARLY_PRINTK 98 select SYS_HAS_EARLY_PRINTK
106 select CFE 99 select CFE
@@ -791,6 +784,7 @@ endchoice
791 784
792source "arch/mips/alchemy/Kconfig" 785source "arch/mips/alchemy/Kconfig"
793source "arch/mips/ath79/Kconfig" 786source "arch/mips/ath79/Kconfig"
787source "arch/mips/bcm47xx/Kconfig"
794source "arch/mips/bcm63xx/Kconfig" 788source "arch/mips/bcm63xx/Kconfig"
795source "arch/mips/jazz/Kconfig" 789source "arch/mips/jazz/Kconfig"
796source "arch/mips/jz4740/Kconfig" 790source "arch/mips/jz4740/Kconfig"
diff --git a/arch/mips/bcm47xx/Kconfig b/arch/mips/bcm47xx/Kconfig
new file mode 100644
index 000000000000..6210b8d84109
--- /dev/null
+++ b/arch/mips/bcm47xx/Kconfig
@@ -0,0 +1,31 @@
1if BCM47XX
2
3config BCM47XX_SSB
4 bool "SSB Support for Broadcom BCM47XX"
5 select SYS_HAS_CPU_MIPS32_R1
6 select SSB
7 select SSB_DRIVER_MIPS
8 select SSB_DRIVER_EXTIF
9 select SSB_EMBEDDED
10 select SSB_B43_PCI_BRIDGE if PCI
11 select SSB_PCICORE_HOSTMODE if PCI
12 default y
13 help
14 Add support for old Broadcom BCM47xx boards with Sonics Silicon Backplane support.
15
16 This will generate an image with support for SSB and MIPS32 R1 instruction set.
17
18config BCM47XX_BCMA
19 bool "BCMA Support for Broadcom BCM47XX"
20 select SYS_HAS_CPU_MIPS32_R2
21 select BCMA
22 select BCMA_HOST_SOC
23 select BCMA_DRIVER_MIPS
24 select BCMA_DRIVER_PCI_HOSTMODE if PCI
25 default y
26 help
27 Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus.
28
29 This will generate an image with support for BCMA and MIPS32 R2 instruction set.
30
31endif
diff --git a/arch/mips/bcm47xx/Makefile b/arch/mips/bcm47xx/Makefile
index 7465e8a72d9a..4add17349ff9 100644
--- a/arch/mips/bcm47xx/Makefile
+++ b/arch/mips/bcm47xx/Makefile
@@ -3,4 +3,5 @@
3# under Linux. 3# under Linux.
4# 4#
5 5
6obj-y := gpio.o irq.o nvram.o prom.o serial.o setup.o time.o wgt634u.o 6obj-y += gpio.o irq.o nvram.o prom.o serial.o setup.o time.o
7obj-$(CONFIG_BCM47XX_SSB) += wgt634u.o
diff --git a/arch/mips/bcm47xx/gpio.c b/arch/mips/bcm47xx/gpio.c
index e4a5ee9c9721..57b425fd4d41 100644
--- a/arch/mips/bcm47xx/gpio.c
+++ b/arch/mips/bcm47xx/gpio.c
@@ -20,42 +20,82 @@ static DECLARE_BITMAP(gpio_in_use, BCM47XX_EXTIF_GPIO_LINES);
20 20
21int gpio_request(unsigned gpio, const char *tag) 21int gpio_request(unsigned gpio, const char *tag)
22{ 22{
23 if (ssb_chipco_available(&ssb_bcm47xx.chipco) && 23 switch (bcm47xx_bus_type) {
24 ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES)) 24#ifdef CONFIG_BCM47XX_SSB
25 return -EINVAL; 25 case BCM47XX_BUS_TYPE_SSB:
26 if (ssb_chipco_available(&bcm47xx_bus.ssb.chipco) &&
27 ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES))
28 return -EINVAL;
26 29
27 if (ssb_extif_available(&ssb_bcm47xx.extif) && 30 if (ssb_extif_available(&bcm47xx_bus.ssb.extif) &&
28 ((unsigned)gpio >= BCM47XX_EXTIF_GPIO_LINES)) 31 ((unsigned)gpio >= BCM47XX_EXTIF_GPIO_LINES))
29 return -EINVAL; 32 return -EINVAL;
30 33
31 if (test_and_set_bit(gpio, gpio_in_use)) 34 if (test_and_set_bit(gpio, gpio_in_use))
32 return -EBUSY; 35 return -EBUSY;
33 36
34 return 0; 37 return 0;
38#endif
39#ifdef CONFIG_BCM47XX_BCMA
40 case BCM47XX_BUS_TYPE_BCMA:
41 if (gpio >= BCM47XX_CHIPCO_GPIO_LINES)
42 return -EINVAL;
43
44 if (test_and_set_bit(gpio, gpio_in_use))
45 return -EBUSY;
46
47 return 0;
48#endif
49 }
50 return -EINVAL;
35} 51}
36EXPORT_SYMBOL(gpio_request); 52EXPORT_SYMBOL(gpio_request);
37 53
38void gpio_free(unsigned gpio) 54void gpio_free(unsigned gpio)
39{ 55{
40 if (ssb_chipco_available(&ssb_bcm47xx.chipco) && 56 switch (bcm47xx_bus_type) {
41 ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES)) 57#ifdef CONFIG_BCM47XX_SSB
42 return; 58 case BCM47XX_BUS_TYPE_SSB:
59 if (ssb_chipco_available(&bcm47xx_bus.ssb.chipco) &&
60 ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES))
61 return;
62
63 if (ssb_extif_available(&bcm47xx_bus.ssb.extif) &&
64 ((unsigned)gpio >= BCM47XX_EXTIF_GPIO_LINES))
65 return;
43 66
44 if (ssb_extif_available(&ssb_bcm47xx.extif) && 67 clear_bit(gpio, gpio_in_use);
45 ((unsigned)gpio >= BCM47XX_EXTIF_GPIO_LINES))
46 return; 68 return;
69#endif
70#ifdef CONFIG_BCM47XX_BCMA
71 case BCM47XX_BUS_TYPE_BCMA:
72 if (gpio >= BCM47XX_CHIPCO_GPIO_LINES)
73 return;
47 74
48 clear_bit(gpio, gpio_in_use); 75 clear_bit(gpio, gpio_in_use);
76 return;
77#endif
78 }
49} 79}
50EXPORT_SYMBOL(gpio_free); 80EXPORT_SYMBOL(gpio_free);
51 81
52int gpio_to_irq(unsigned gpio) 82int gpio_to_irq(unsigned gpio)
53{ 83{
54 if (ssb_chipco_available(&ssb_bcm47xx.chipco)) 84 switch (bcm47xx_bus_type) {
55 return ssb_mips_irq(ssb_bcm47xx.chipco.dev) + 2; 85#ifdef CONFIG_BCM47XX_SSB
56 else if (ssb_extif_available(&ssb_bcm47xx.extif)) 86 case BCM47XX_BUS_TYPE_SSB:
57 return ssb_mips_irq(ssb_bcm47xx.extif.dev) + 2; 87 if (ssb_chipco_available(&bcm47xx_bus.ssb.chipco))
58 else 88 return ssb_mips_irq(bcm47xx_bus.ssb.chipco.dev) + 2;
59 return -EINVAL; 89 else if (ssb_extif_available(&bcm47xx_bus.ssb.extif))
90 return ssb_mips_irq(bcm47xx_bus.ssb.extif.dev) + 2;
91 else
92 return -EINVAL;
93#endif
94#ifdef CONFIG_BCM47XX_BCMA
95 case BCM47XX_BUS_TYPE_BCMA:
96 return bcma_core_mips_irq(bcm47xx_bus.bcma.bus.drv_cc.core) + 2;
97#endif
98 }
99 return -EINVAL;
60} 100}
61EXPORT_SYMBOL_GPL(gpio_to_irq); 101EXPORT_SYMBOL_GPL(gpio_to_irq);
diff --git a/arch/mips/bcm47xx/irq.c b/arch/mips/bcm47xx/irq.c
index 325757acd020..8cf3833b2d29 100644
--- a/arch/mips/bcm47xx/irq.c
+++ b/arch/mips/bcm47xx/irq.c
@@ -26,6 +26,7 @@
26#include <linux/interrupt.h> 26#include <linux/interrupt.h>
27#include <linux/irq.h> 27#include <linux/irq.h>
28#include <asm/irq_cpu.h> 28#include <asm/irq_cpu.h>
29#include <bcm47xx.h>
29 30
30void plat_irq_dispatch(void) 31void plat_irq_dispatch(void)
31{ 32{
@@ -51,5 +52,16 @@ void plat_irq_dispatch(void)
51 52
52void __init arch_init_irq(void) 53void __init arch_init_irq(void)
53{ 54{
55#ifdef CONFIG_BCM47XX_BCMA
56 if (bcm47xx_bus_type == BCM47XX_BUS_TYPE_BCMA) {
57 bcma_write32(bcm47xx_bus.bcma.bus.drv_mips.core,
58 BCMA_MIPS_MIPS74K_INTMASK(5), 1 << 31);
59 /*
60 * the kernel reads the timer irq from some register and thinks
61 * it's #5, but we offset it by 2 and route to #7
62 */
63 cp0_compare_irq = 7;
64 }
65#endif
54 mips_cpu_irq_init(); 66 mips_cpu_irq_init();
55} 67}
diff --git a/arch/mips/bcm47xx/nvram.c b/arch/mips/bcm47xx/nvram.c
index 54db815bc86c..a84e3bb7387f 100644
--- a/arch/mips/bcm47xx/nvram.c
+++ b/arch/mips/bcm47xx/nvram.c
@@ -26,14 +26,35 @@ static char nvram_buf[NVRAM_SPACE];
26/* Probe for NVRAM header */ 26/* Probe for NVRAM header */
27static void early_nvram_init(void) 27static void early_nvram_init(void)
28{ 28{
29 struct ssb_mipscore *mcore = &ssb_bcm47xx.mipscore; 29#ifdef CONFIG_BCM47XX_SSB
30 struct ssb_mipscore *mcore_ssb;
31#endif
32#ifdef CONFIG_BCM47XX_BCMA
33 struct bcma_drv_cc *bcma_cc;
34#endif
30 struct nvram_header *header; 35 struct nvram_header *header;
31 int i; 36 int i;
32 u32 base, lim, off; 37 u32 base = 0;
38 u32 lim = 0;
39 u32 off;
33 u32 *src, *dst; 40 u32 *src, *dst;
34 41
35 base = mcore->flash_window; 42 switch (bcm47xx_bus_type) {
36 lim = mcore->flash_window_size; 43#ifdef CONFIG_BCM47XX_SSB
44 case BCM47XX_BUS_TYPE_SSB:
45 mcore_ssb = &bcm47xx_bus.ssb.mipscore;
46 base = mcore_ssb->flash_window;
47 lim = mcore_ssb->flash_window_size;
48 break;
49#endif
50#ifdef CONFIG_BCM47XX_BCMA
51 case BCM47XX_BUS_TYPE_BCMA:
52 bcma_cc = &bcm47xx_bus.bcma.bus.drv_cc;
53 base = bcma_cc->pflash.window;
54 lim = bcma_cc->pflash.window_size;
55 break;
56#endif
57 }
37 58
38 off = FLASH_MIN; 59 off = FLASH_MIN;
39 while (off <= lim) { 60 while (off <= lim) {
diff --git a/arch/mips/bcm47xx/serial.c b/arch/mips/bcm47xx/serial.c
index 59c11afdb2ab..57981e4fe2bc 100644
--- a/arch/mips/bcm47xx/serial.c
+++ b/arch/mips/bcm47xx/serial.c
@@ -23,10 +23,11 @@ static struct platform_device uart8250_device = {
23 }, 23 },
24}; 24};
25 25
26static int __init uart8250_init(void) 26#ifdef CONFIG_BCM47XX_SSB
27static int __init uart8250_init_ssb(void)
27{ 28{
28 int i; 29 int i;
29 struct ssb_mipscore *mcore = &(ssb_bcm47xx.mipscore); 30 struct ssb_mipscore *mcore = &(bcm47xx_bus.ssb.mipscore);
30 31
31 memset(&uart8250_data, 0, sizeof(uart8250_data)); 32 memset(&uart8250_data, 0, sizeof(uart8250_data));
32 33
@@ -44,6 +45,47 @@ static int __init uart8250_init(void)
44 } 45 }
45 return platform_device_register(&uart8250_device); 46 return platform_device_register(&uart8250_device);
46} 47}
48#endif
49
50#ifdef CONFIG_BCM47XX_BCMA
51static int __init uart8250_init_bcma(void)
52{
53 int i;
54 struct bcma_drv_cc *cc = &(bcm47xx_bus.bcma.bus.drv_cc);
55
56 memset(&uart8250_data, 0, sizeof(uart8250_data));
57
58 for (i = 0; i < cc->nr_serial_ports; i++) {
59 struct plat_serial8250_port *p = &(uart8250_data[i]);
60 struct bcma_serial_port *bcma_port;
61 bcma_port = &(cc->serial_ports[i]);
62
63 p->mapbase = (unsigned int) bcma_port->regs;
64 p->membase = (void *) bcma_port->regs;
65 p->irq = bcma_port->irq + 2;
66 p->uartclk = bcma_port->baud_base;
67 p->regshift = bcma_port->reg_shift;
68 p->iotype = UPIO_MEM;
69 p->flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
70 }
71 return platform_device_register(&uart8250_device);
72}
73#endif
74
75static int __init uart8250_init(void)
76{
77 switch (bcm47xx_bus_type) {
78#ifdef CONFIG_BCM47XX_SSB
79 case BCM47XX_BUS_TYPE_SSB:
80 return uart8250_init_ssb();
81#endif
82#ifdef CONFIG_BCM47XX_BCMA
83 case BCM47XX_BUS_TYPE_BCMA:
84 return uart8250_init_bcma();
85#endif
86 }
87 return -EINVAL;
88}
47 89
48module_init(uart8250_init); 90module_init(uart8250_init);
49 91
diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c
index cfae81571ded..17c3d14d7c49 100644
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
@@ -29,21 +29,36 @@
29#include <linux/types.h> 29#include <linux/types.h>
30#include <linux/ssb/ssb.h> 30#include <linux/ssb/ssb.h>
31#include <linux/ssb/ssb_embedded.h> 31#include <linux/ssb/ssb_embedded.h>
32#include <linux/bcma/bcma_soc.h>
32#include <asm/bootinfo.h> 33#include <asm/bootinfo.h>
33#include <asm/reboot.h> 34#include <asm/reboot.h>
34#include <asm/time.h> 35#include <asm/time.h>
35#include <bcm47xx.h> 36#include <bcm47xx.h>
36#include <asm/mach-bcm47xx/nvram.h> 37#include <asm/mach-bcm47xx/nvram.h>
37 38
38struct ssb_bus ssb_bcm47xx; 39union bcm47xx_bus bcm47xx_bus;
39EXPORT_SYMBOL(ssb_bcm47xx); 40EXPORT_SYMBOL(bcm47xx_bus);
41
42enum bcm47xx_bus_type bcm47xx_bus_type;
43EXPORT_SYMBOL(bcm47xx_bus_type);
40 44
41static void bcm47xx_machine_restart(char *command) 45static void bcm47xx_machine_restart(char *command)
42{ 46{
43 printk(KERN_ALERT "Please stand by while rebooting the system...\n"); 47 printk(KERN_ALERT "Please stand by while rebooting the system...\n");
44 local_irq_disable(); 48 local_irq_disable();
45 /* Set the watchdog timer to reset immediately */ 49 /* Set the watchdog timer to reset immediately */
46 ssb_watchdog_timer_set(&ssb_bcm47xx, 1); 50 switch (bcm47xx_bus_type) {
51#ifdef CONFIG_BCM47XX_SSB
52 case BCM47XX_BUS_TYPE_SSB:
53 ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 1);
54 break;
55#endif
56#ifdef CONFIG_BCM47XX_BCMA
57 case BCM47XX_BUS_TYPE_BCMA:
58 bcma_chipco_watchdog_timer_set(&bcm47xx_bus.bcma.bus.drv_cc, 1);
59 break;
60#endif
61 }
47 while (1) 62 while (1)
48 cpu_relax(); 63 cpu_relax();
49} 64}
@@ -52,11 +67,23 @@ static void bcm47xx_machine_halt(void)
52{ 67{
53 /* Disable interrupts and watchdog and spin forever */ 68 /* Disable interrupts and watchdog and spin forever */
54 local_irq_disable(); 69 local_irq_disable();
55 ssb_watchdog_timer_set(&ssb_bcm47xx, 0); 70 switch (bcm47xx_bus_type) {
71#ifdef CONFIG_BCM47XX_SSB
72 case BCM47XX_BUS_TYPE_SSB:
73 ssb_watchdog_timer_set(&bcm47xx_bus.ssb, 0);
74 break;
75#endif
76#ifdef CONFIG_BCM47XX_BCMA
77 case BCM47XX_BUS_TYPE_BCMA:
78 bcma_chipco_watchdog_timer_set(&bcm47xx_bus.bcma.bus.drv_cc, 0);
79 break;
80#endif
81 }
56 while (1) 82 while (1)
57 cpu_relax(); 83 cpu_relax();
58} 84}
59 85
86#ifdef CONFIG_BCM47XX_SSB
60#define READ_FROM_NVRAM(_outvar, name, buf) \ 87#define READ_FROM_NVRAM(_outvar, name, buf) \
61 if (nvram_getprefix(prefix, name, buf, sizeof(buf)) >= 0)\ 88 if (nvram_getprefix(prefix, name, buf, sizeof(buf)) >= 0)\
62 sprom->_outvar = simple_strtoul(buf, NULL, 0); 89 sprom->_outvar = simple_strtoul(buf, NULL, 0);
@@ -247,7 +274,7 @@ static int bcm47xx_get_invariants(struct ssb_bus *bus,
247 return 0; 274 return 0;
248} 275}
249 276
250void __init plat_mem_setup(void) 277static void __init bcm47xx_register_ssb(void)
251{ 278{
252 int err; 279 int err;
253 char buf[100]; 280 char buf[100];
@@ -258,12 +285,12 @@ void __init plat_mem_setup(void)
258 printk(KERN_WARNING "bcm47xx: someone else already registered" 285 printk(KERN_WARNING "bcm47xx: someone else already registered"
259 " a ssb SPROM callback handler (err %d)\n", err); 286 " a ssb SPROM callback handler (err %d)\n", err);
260 287
261 err = ssb_bus_ssbbus_register(&ssb_bcm47xx, SSB_ENUM_BASE, 288 err = ssb_bus_ssbbus_register(&(bcm47xx_bus.ssb), SSB_ENUM_BASE,
262 bcm47xx_get_invariants); 289 bcm47xx_get_invariants);
263 if (err) 290 if (err)
264 panic("Failed to initialize SSB bus (err %d)\n", err); 291 panic("Failed to initialize SSB bus (err %d)\n", err);
265 292
266 mcore = &ssb_bcm47xx.mipscore; 293 mcore = &bcm47xx_bus.ssb.mipscore;
267 if (nvram_getenv("kernel_args", buf, sizeof(buf)) >= 0) { 294 if (nvram_getenv("kernel_args", buf, sizeof(buf)) >= 0) {
268 if (strstr(buf, "console=ttyS1")) { 295 if (strstr(buf, "console=ttyS1")) {
269 struct ssb_serial_port port; 296 struct ssb_serial_port port;
@@ -276,8 +303,57 @@ void __init plat_mem_setup(void)
276 memcpy(&mcore->serial_ports[1], &port, sizeof(port)); 303 memcpy(&mcore->serial_ports[1], &port, sizeof(port));
277 } 304 }
278 } 305 }
306}
307#endif
308
309#ifdef CONFIG_BCM47XX_BCMA
310static void __init bcm47xx_register_bcma(void)
311{
312 int err;
313
314 err = bcma_host_soc_register(&bcm47xx_bus.bcma);
315 if (err)
316 panic("Failed to initialize BCMA bus (err %d)\n", err);
317}
318#endif
319
320void __init plat_mem_setup(void)
321{
322 struct cpuinfo_mips *c = &current_cpu_data;
323
324 if (c->cputype == CPU_74K) {
325 printk(KERN_INFO "bcm47xx: using bcma bus\n");
326#ifdef CONFIG_BCM47XX_BCMA
327 bcm47xx_bus_type = BCM47XX_BUS_TYPE_BCMA;
328 bcm47xx_register_bcma();
329#endif
330 } else {
331 printk(KERN_INFO "bcm47xx: using ssb bus\n");
332#ifdef CONFIG_BCM47XX_SSB
333 bcm47xx_bus_type = BCM47XX_BUS_TYPE_SSB;
334 bcm47xx_register_ssb();
335#endif
336 }
279 337
280 _machine_restart = bcm47xx_machine_restart; 338 _machine_restart = bcm47xx_machine_restart;
281 _machine_halt = bcm47xx_machine_halt; 339 _machine_halt = bcm47xx_machine_halt;
282 pm_power_off = bcm47xx_machine_halt; 340 pm_power_off = bcm47xx_machine_halt;
283} 341}
342
343static int __init bcm47xx_register_bus_complete(void)
344{
345 switch (bcm47xx_bus_type) {
346#ifdef CONFIG_BCM47XX_SSB
347 case BCM47XX_BUS_TYPE_SSB:
348 /* Nothing to do */
349 break;
350#endif
351#ifdef CONFIG_BCM47XX_BCMA
352 case BCM47XX_BUS_TYPE_BCMA:
353 bcma_bus_register(&bcm47xx_bus.bcma.bus);
354 break;
355#endif
356 }
357 return 0;
358}
359device_initcall(bcm47xx_register_bus_complete);
diff --git a/arch/mips/bcm47xx/time.c b/arch/mips/bcm47xx/time.c
index 0c6f47b3fd94..536374dcba78 100644
--- a/arch/mips/bcm47xx/time.c
+++ b/arch/mips/bcm47xx/time.c
@@ -30,7 +30,7 @@
30 30
31void __init plat_time_init(void) 31void __init plat_time_init(void)
32{ 32{
33 unsigned long hz; 33 unsigned long hz = 0;
34 34
35 /* 35 /*
36 * Use deterministic values for initial counter interrupt 36 * Use deterministic values for initial counter interrupt
@@ -39,7 +39,19 @@ void __init plat_time_init(void)
39 write_c0_count(0); 39 write_c0_count(0);
40 write_c0_compare(0xffff); 40 write_c0_compare(0xffff);
41 41
42 hz = ssb_cpu_clock(&ssb_bcm47xx.mipscore) / 2; 42 switch (bcm47xx_bus_type) {
43#ifdef CONFIG_BCM47XX_SSB
44 case BCM47XX_BUS_TYPE_SSB:
45 hz = ssb_cpu_clock(&bcm47xx_bus.ssb.mipscore) / 2;
46 break;
47#endif
48#ifdef CONFIG_BCM47XX_BCMA
49 case BCM47XX_BUS_TYPE_BCMA:
50 hz = bcma_cpu_clock(&bcm47xx_bus.bcma.bus.drv_mips) / 2;
51 break;
52#endif
53 }
54
43 if (!hz) 55 if (!hz)
44 hz = 100000000; 56 hz = 100000000;
45 57
diff --git a/arch/mips/bcm47xx/wgt634u.c b/arch/mips/bcm47xx/wgt634u.c
index 74d06965326f..e9f9ec8d443b 100644
--- a/arch/mips/bcm47xx/wgt634u.c
+++ b/arch/mips/bcm47xx/wgt634u.c
@@ -108,7 +108,7 @@ static irqreturn_t gpio_interrupt(int irq, void *ignored)
108 108
109 /* Interrupts are shared, check if the current one is 109 /* Interrupts are shared, check if the current one is
110 a GPIO interrupt. */ 110 a GPIO interrupt. */
111 if (!ssb_chipco_irq_status(&ssb_bcm47xx.chipco, 111 if (!ssb_chipco_irq_status(&bcm47xx_bus.ssb.chipco,
112 SSB_CHIPCO_IRQ_GPIO)) 112 SSB_CHIPCO_IRQ_GPIO))
113 return IRQ_NONE; 113 return IRQ_NONE;
114 114
@@ -132,22 +132,26 @@ static int __init wgt634u_init(void)
132 * machine. Use the MAC address as an heuristic. Netgear Inc. has 132 * machine. Use the MAC address as an heuristic. Netgear Inc. has
133 * been allocated ranges 00:09:5b:xx:xx:xx and 00:0f:b5:xx:xx:xx. 133 * been allocated ranges 00:09:5b:xx:xx:xx and 00:0f:b5:xx:xx:xx.
134 */ 134 */
135 u8 *et0mac;
135 136
136 u8 *et0mac = ssb_bcm47xx.sprom.et0mac; 137 if (bcm47xx_bus_type != BCM47XX_BUS_TYPE_SSB)
138 return -ENODEV;
139
140 et0mac = bcm47xx_bus.ssb.sprom.et0mac;
137 141
138 if (et0mac[0] == 0x00 && 142 if (et0mac[0] == 0x00 &&
139 ((et0mac[1] == 0x09 && et0mac[2] == 0x5b) || 143 ((et0mac[1] == 0x09 && et0mac[2] == 0x5b) ||
140 (et0mac[1] == 0x0f && et0mac[2] == 0xb5))) { 144 (et0mac[1] == 0x0f && et0mac[2] == 0xb5))) {
141 struct ssb_mipscore *mcore = &ssb_bcm47xx.mipscore; 145 struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore;
142 146
143 printk(KERN_INFO "WGT634U machine detected.\n"); 147 printk(KERN_INFO "WGT634U machine detected.\n");
144 148
145 if (!request_irq(gpio_to_irq(WGT634U_GPIO_RESET), 149 if (!request_irq(gpio_to_irq(WGT634U_GPIO_RESET),
146 gpio_interrupt, IRQF_SHARED, 150 gpio_interrupt, IRQF_SHARED,
147 "WGT634U GPIO", &ssb_bcm47xx.chipco)) { 151 "WGT634U GPIO", &bcm47xx_bus.ssb.chipco)) {
148 gpio_direction_input(WGT634U_GPIO_RESET); 152 gpio_direction_input(WGT634U_GPIO_RESET);
149 gpio_intmask(WGT634U_GPIO_RESET, 1); 153 gpio_intmask(WGT634U_GPIO_RESET, 1);
150 ssb_chipco_irq_mask(&ssb_bcm47xx.chipco, 154 ssb_chipco_irq_mask(&bcm47xx_bus.ssb.chipco,
151 SSB_CHIPCO_IRQ_GPIO, 155 SSB_CHIPCO_IRQ_GPIO,
152 SSB_CHIPCO_IRQ_GPIO); 156 SSB_CHIPCO_IRQ_GPIO);
153 } 157 }
diff --git a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
index d008f47a28bd..de95e0723e2b 100644
--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
+++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
@@ -19,7 +19,29 @@
19#ifndef __ASM_BCM47XX_H 19#ifndef __ASM_BCM47XX_H
20#define __ASM_BCM47XX_H 20#define __ASM_BCM47XX_H
21 21
22/* SSB bus */ 22#include <linux/ssb/ssb.h>
23extern struct ssb_bus ssb_bcm47xx; 23#include <linux/bcma/bcma.h>
24#include <linux/bcma/bcma_soc.h>
25
26enum bcm47xx_bus_type {
27#ifdef CONFIG_BCM47XX_SSB
28 BCM47XX_BUS_TYPE_SSB,
29#endif
30#ifdef CONFIG_BCM47XX_BCMA
31 BCM47XX_BUS_TYPE_BCMA,
32#endif
33};
34
35union bcm47xx_bus {
36#ifdef CONFIG_BCM47XX_SSB
37 struct ssb_bus ssb;
38#endif
39#ifdef CONFIG_BCM47XX_BCMA
40 struct bcma_soc bcma;
41#endif
42};
43
44extern union bcm47xx_bus bcm47xx_bus;
45extern enum bcm47xx_bus_type bcm47xx_bus_type;
24 46
25#endif /* __ASM_BCM47XX_H */ 47#endif /* __ASM_BCM47XX_H */
diff --git a/arch/mips/include/asm/mach-bcm47xx/gpio.h b/arch/mips/include/asm/mach-bcm47xx/gpio.h
index 98504142124e..76961cabeedf 100644
--- a/arch/mips/include/asm/mach-bcm47xx/gpio.h
+++ b/arch/mips/include/asm/mach-bcm47xx/gpio.h
@@ -10,6 +10,7 @@
10#define __BCM47XX_GPIO_H 10#define __BCM47XX_GPIO_H
11 11
12#include <linux/ssb/ssb_embedded.h> 12#include <linux/ssb/ssb_embedded.h>
13#include <linux/bcma/bcma.h>
13#include <asm/mach-bcm47xx/bcm47xx.h> 14#include <asm/mach-bcm47xx/bcm47xx.h>
14 15
15#define BCM47XX_EXTIF_GPIO_LINES 5 16#define BCM47XX_EXTIF_GPIO_LINES 5
@@ -21,41 +22,118 @@ extern int gpio_to_irq(unsigned gpio);
21 22
22static inline int gpio_get_value(unsigned gpio) 23static inline int gpio_get_value(unsigned gpio)
23{ 24{
24 return ssb_gpio_in(&ssb_bcm47xx, 1 << gpio); 25 switch (bcm47xx_bus_type) {
26#ifdef CONFIG_BCM47XX_SSB
27 case BCM47XX_BUS_TYPE_SSB:
28 return ssb_gpio_in(&bcm47xx_bus.ssb, 1 << gpio);
29#endif
30#ifdef CONFIG_BCM47XX_BCMA
31 case BCM47XX_BUS_TYPE_BCMA:
32 return bcma_chipco_gpio_in(&bcm47xx_bus.bcma.bus.drv_cc,
33 1 << gpio);
34#endif
35 }
36 return -EINVAL;
25} 37}
26 38
27static inline void gpio_set_value(unsigned gpio, int value) 39static inline void gpio_set_value(unsigned gpio, int value)
28{ 40{
29 ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); 41 switch (bcm47xx_bus_type) {
42#ifdef CONFIG_BCM47XX_SSB
43 case BCM47XX_BUS_TYPE_SSB:
44 ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio,
45 value ? 1 << gpio : 0);
46 return;
47#endif
48#ifdef CONFIG_BCM47XX_BCMA
49 case BCM47XX_BUS_TYPE_BCMA:
50 bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
51 value ? 1 << gpio : 0);
52 return;
53#endif
54 }
30} 55}
31 56
32static inline int gpio_direction_input(unsigned gpio) 57static inline int gpio_direction_input(unsigned gpio)
33{ 58{
34 ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 0); 59 switch (bcm47xx_bus_type) {
35 return 0; 60#ifdef CONFIG_BCM47XX_SSB
61 case BCM47XX_BUS_TYPE_SSB:
62 ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 0);
63 return 0;
64#endif
65#ifdef CONFIG_BCM47XX_BCMA
66 case BCM47XX_BUS_TYPE_BCMA:
67 bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
68 0);
69 return 0;
70#endif
71 }
72 return -EINVAL;
36} 73}
37 74
38static inline int gpio_direction_output(unsigned gpio, int value) 75static inline int gpio_direction_output(unsigned gpio, int value)
39{ 76{
40 /* first set the gpio out value */ 77 switch (bcm47xx_bus_type) {
41 ssb_gpio_out(&ssb_bcm47xx, 1 << gpio, value ? 1 << gpio : 0); 78#ifdef CONFIG_BCM47XX_SSB
42 /* then set the gpio mode */ 79 case BCM47XX_BUS_TYPE_SSB:
43 ssb_gpio_outen(&ssb_bcm47xx, 1 << gpio, 1 << gpio); 80 /* first set the gpio out value */
44 return 0; 81 ssb_gpio_out(&bcm47xx_bus.ssb, 1 << gpio,
82 value ? 1 << gpio : 0);
83 /* then set the gpio mode */
84 ssb_gpio_outen(&bcm47xx_bus.ssb, 1 << gpio, 1 << gpio);
85 return 0;
86#endif
87#ifdef CONFIG_BCM47XX_BCMA
88 case BCM47XX_BUS_TYPE_BCMA:
89 /* first set the gpio out value */
90 bcma_chipco_gpio_out(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
91 value ? 1 << gpio : 0);
92 /* then set the gpio mode */
93 bcma_chipco_gpio_outen(&bcm47xx_bus.bcma.bus.drv_cc, 1 << gpio,
94 1 << gpio);
95 return 0;
96#endif
97 }
98 return -EINVAL;
45} 99}
46 100
47static inline int gpio_intmask(unsigned gpio, int value) 101static inline int gpio_intmask(unsigned gpio, int value)
48{ 102{
49 ssb_gpio_intmask(&ssb_bcm47xx, 1 << gpio, 103 switch (bcm47xx_bus_type) {
50 value ? 1 << gpio : 0); 104#ifdef CONFIG_BCM47XX_SSB
51 return 0; 105 case BCM47XX_BUS_TYPE_SSB:
106 ssb_gpio_intmask(&bcm47xx_bus.ssb, 1 << gpio,
107 value ? 1 << gpio : 0);
108 return 0;
109#endif
110#ifdef CONFIG_BCM47XX_BCMA
111 case BCM47XX_BUS_TYPE_BCMA:
112 bcma_chipco_gpio_intmask(&bcm47xx_bus.bcma.bus.drv_cc,
113 1 << gpio, value ? 1 << gpio : 0);
114 return 0;
115#endif
116 }
117 return -EINVAL;
52} 118}
53 119
54static inline int gpio_polarity(unsigned gpio, int value) 120static inline int gpio_polarity(unsigned gpio, int value)
55{ 121{
56 ssb_gpio_polarity(&ssb_bcm47xx, 1 << gpio, 122 switch (bcm47xx_bus_type) {
57 value ? 1 << gpio : 0); 123#ifdef CONFIG_BCM47XX_SSB
58 return 0; 124 case BCM47XX_BUS_TYPE_SSB:
125 ssb_gpio_polarity(&bcm47xx_bus.ssb, 1 << gpio,
126 value ? 1 << gpio : 0);
127 return 0;
128#endif
129#ifdef CONFIG_BCM47XX_BCMA
130 case BCM47XX_BUS_TYPE_BCMA:
131 bcma_chipco_gpio_polarity(&bcm47xx_bus.bcma.bus.drv_cc,
132 1 << gpio, value ? 1 << gpio : 0);
133 return 0;
134#endif
135 }
136 return -EINVAL;
59} 137}
60 138
61 139
diff --git a/arch/mips/pci/pci-bcm47xx.c b/arch/mips/pci/pci-bcm47xx.c
index 455f8e50a007..400535a955d0 100644
--- a/arch/mips/pci/pci-bcm47xx.c
+++ b/arch/mips/pci/pci-bcm47xx.c
@@ -25,6 +25,7 @@
25#include <linux/types.h> 25#include <linux/types.h>
26#include <linux/pci.h> 26#include <linux/pci.h>
27#include <linux/ssb/ssb.h> 27#include <linux/ssb/ssb.h>
28#include <bcm47xx.h>
28 29
29int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) 30int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
30{ 31{
@@ -33,9 +34,13 @@ int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
33 34
34int pcibios_plat_dev_init(struct pci_dev *dev) 35int pcibios_plat_dev_init(struct pci_dev *dev)
35{ 36{
37#ifdef CONFIG_BCM47XX_SSB
36 int res; 38 int res;
37 u8 slot, pin; 39 u8 slot, pin;
38 40
41 if (bcm47xx_bus_type != BCM47XX_BUS_TYPE_SSB)
42 return 0;
43
39 res = ssb_pcibios_plat_dev_init(dev); 44 res = ssb_pcibios_plat_dev_init(dev);
40 if (res < 0) { 45 if (res < 0) {
41 printk(KERN_ALERT "PCI: Failed to init device %s\n", 46 printk(KERN_ALERT "PCI: Failed to init device %s\n",
@@ -55,5 +60,6 @@ int pcibios_plat_dev_init(struct pci_dev *dev)
55 } 60 }
56 61
57 dev->irq = res; 62 dev->irq = res;
63#endif
58 return 0; 64 return 0;
59} 65}
diff --git a/arch/mips/txx9/generic/setup_tx4939.c b/arch/mips/txx9/generic/setup_tx4939.c
index e9f95dcde379..ba3cec3155df 100644
--- a/arch/mips/txx9/generic/setup_tx4939.c
+++ b/arch/mips/txx9/generic/setup_tx4939.c
@@ -321,7 +321,7 @@ void __init tx4939_sio_init(unsigned int sclk, unsigned int cts_mask)
321static u32 tx4939_get_eth_speed(struct net_device *dev) 321static u32 tx4939_get_eth_speed(struct net_device *dev)
322{ 322{
323 struct ethtool_cmd cmd; 323 struct ethtool_cmd cmd;
324 if (dev_ethtool_get_settings(dev, &cmd)) 324 if (__ethtool_get_settings(dev, &cmd))
325 return 100; /* default 100Mbps */ 325 return 100; /* default 100Mbps */
326 326
327 return ethtool_cmd_speed(&cmd); 327 return ethtool_cmd_speed(&cmd);
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 6926b61acfea..47682b67fd36 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -656,6 +656,8 @@ config SBUS
656 656
657config FSL_SOC 657config FSL_SOC
658 bool 658 bool
659 select HAVE_CAN_FLEXCAN if NET && CAN
660 select PPC_CLOCK if CAN_FLEXCAN
659 661
660config FSL_PCI 662config FSL_PCI
661 bool 663 bool
diff --git a/arch/powerpc/boot/dts/p1010rdb.dts b/arch/powerpc/boot/dts/p1010rdb.dts
index 6b33b73a5ba0..d6c669c888e9 100644
--- a/arch/powerpc/boot/dts/p1010rdb.dts
+++ b/arch/powerpc/boot/dts/p1010rdb.dts
@@ -23,6 +23,8 @@
23 ethernet2 = &enet2; 23 ethernet2 = &enet2;
24 pci0 = &pci0; 24 pci0 = &pci0;
25 pci1 = &pci1; 25 pci1 = &pci1;
26 can0 = &can0;
27 can1 = &can1;
26 }; 28 };
27 29
28 memory { 30 memory {
@@ -169,14 +171,6 @@
169 }; 171 };
170 }; 172 };
171 173
172 can0@1c000 {
173 fsl,flexcan-clock-source = "platform";
174 };
175
176 can1@1d000 {
177 fsl,flexcan-clock-source = "platform";
178 };
179
180 usb@22000 { 174 usb@22000 {
181 phy_type = "utmi"; 175 phy_type = "utmi";
182 }; 176 };
diff --git a/arch/powerpc/boot/dts/p1010si.dtsi b/arch/powerpc/boot/dts/p1010si.dtsi
index 7f51104f2e36..cabe0a453ae6 100644
--- a/arch/powerpc/boot/dts/p1010si.dtsi
+++ b/arch/powerpc/boot/dts/p1010si.dtsi
@@ -140,20 +140,18 @@
140 interrupt-parent = <&mpic>; 140 interrupt-parent = <&mpic>;
141 }; 141 };
142 142
143 can0@1c000 { 143 can0: can@1c000 {
144 compatible = "fsl,flexcan-v1.0"; 144 compatible = "fsl,p1010-flexcan";
145 reg = <0x1c000 0x1000>; 145 reg = <0x1c000 0x1000>;
146 interrupts = <48 0x2>; 146 interrupts = <48 0x2>;
147 interrupt-parent = <&mpic>; 147 interrupt-parent = <&mpic>;
148 fsl,flexcan-clock-divider = <2>;
149 }; 148 };
150 149
151 can1@1d000 { 150 can1: can@1d000 {
152 compatible = "fsl,flexcan-v1.0"; 151 compatible = "fsl,p1010-flexcan";
153 reg = <0x1d000 0x1000>; 152 reg = <0x1d000 0x1000>;
154 interrupts = <61 0x2>; 153 interrupts = <61 0x2>;
155 interrupt-parent = <&mpic>; 154 interrupt-parent = <&mpic>;
156 fsl,flexcan-clock-divider = <2>;
157 }; 155 };
158 156
159 L2: l2-cache-controller@20000 { 157 L2: l2-cache-controller@20000 {
diff --git a/arch/powerpc/configs/40x/acadia_defconfig b/arch/powerpc/configs/40x/acadia_defconfig
index 4182c772340b..ed3bab72a834 100644
--- a/arch/powerpc/configs/40x/acadia_defconfig
+++ b/arch/powerpc/configs/40x/acadia_defconfig
@@ -44,12 +44,13 @@ CONFIG_BLK_DEV_RAM=y
44CONFIG_BLK_DEV_RAM_SIZE=35000 44CONFIG_BLK_DEV_RAM_SIZE=35000
45# CONFIG_MISC_DEVICES is not set 45# CONFIG_MISC_DEVICES is not set
46CONFIG_NETDEVICES=y 46CONFIG_NETDEVICES=y
47CONFIG_NET_ETHERNET=y 47CONFIG_ETHERNET=y
48CONFIG_NET_VENDOR_IBM=y
48CONFIG_MII=y 49CONFIG_MII=y
49CONFIG_IBM_NEW_EMAC=y 50CONFIG_IBM_EMAC=y
50CONFIG_IBM_NEW_EMAC_RXB=256 51CONFIG_IBM_EMAC_RXB=256
51CONFIG_IBM_NEW_EMAC_TXB=256 52CONFIG_IBM_EMAC_TXB=256
52CONFIG_IBM_NEW_EMAC_DEBUG=y 53CONFIG_IBM_EMAC_DEBUG=y
53# CONFIG_NETDEV_1000 is not set 54# CONFIG_NETDEV_1000 is not set
54# CONFIG_NETDEV_10000 is not set 55# CONFIG_NETDEV_10000 is not set
55# CONFIG_INPUT is not set 56# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/40x/ep405_defconfig b/arch/powerpc/configs/40x/ep405_defconfig
index 2dbb293163f5..17582a3420fb 100644
--- a/arch/powerpc/configs/40x/ep405_defconfig
+++ b/arch/powerpc/configs/40x/ep405_defconfig
@@ -42,8 +42,9 @@ CONFIG_PROC_DEVICETREE=y
42CONFIG_BLK_DEV_RAM=y 42CONFIG_BLK_DEV_RAM=y
43CONFIG_BLK_DEV_RAM_SIZE=35000 43CONFIG_BLK_DEV_RAM_SIZE=35000
44CONFIG_NETDEVICES=y 44CONFIG_NETDEVICES=y
45CONFIG_NET_ETHERNET=y 45CONFIG_ETHERNET=y
46CONFIG_IBM_NEW_EMAC=y 46CONFIG_NET_VENDOR_IBM=y
47CONFIG_IBM_EMAC=y
47# CONFIG_INPUT is not set 48# CONFIG_INPUT is not set
48# CONFIG_SERIO is not set 49# CONFIG_SERIO is not set
49# CONFIG_VT is not set 50# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/40x/hcu4_defconfig b/arch/powerpc/configs/40x/hcu4_defconfig
index ebeb4accad65..dba263c1d3a2 100644
--- a/arch/powerpc/configs/40x/hcu4_defconfig
+++ b/arch/powerpc/configs/40x/hcu4_defconfig
@@ -43,8 +43,9 @@ CONFIG_PROC_DEVICETREE=y
43CONFIG_BLK_DEV_RAM=y 43CONFIG_BLK_DEV_RAM=y
44CONFIG_BLK_DEV_RAM_SIZE=35000 44CONFIG_BLK_DEV_RAM_SIZE=35000
45CONFIG_NETDEVICES=y 45CONFIG_NETDEVICES=y
46CONFIG_NET_ETHERNET=y 46CONFIG_ETHERNET=y
47CONFIG_IBM_NEW_EMAC=y 47CONFIG_NET_VENDOR_IBM=y
48CONFIG_IBM_EMAC=y
48# CONFIG_INPUT is not set 49# CONFIG_INPUT is not set
49# CONFIG_SERIO is not set 50# CONFIG_SERIO is not set
50# CONFIG_VT is not set 51# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/40x/kilauea_defconfig b/arch/powerpc/configs/40x/kilauea_defconfig
index 532ea9d93a15..f2d4be936e08 100644
--- a/arch/powerpc/configs/40x/kilauea_defconfig
+++ b/arch/powerpc/configs/40x/kilauea_defconfig
@@ -51,10 +51,11 @@ CONFIG_BLK_DEV_RAM=y
51CONFIG_BLK_DEV_RAM_SIZE=35000 51CONFIG_BLK_DEV_RAM_SIZE=35000
52# CONFIG_MISC_DEVICES is not set 52# CONFIG_MISC_DEVICES is not set
53CONFIG_NETDEVICES=y 53CONFIG_NETDEVICES=y
54CONFIG_NET_ETHERNET=y 54CONFIG_ETHERNET=y
55CONFIG_IBM_NEW_EMAC=y 55CONFIG_NET_VENDOR_IBM=y
56CONFIG_IBM_NEW_EMAC_RXB=256 56CONFIG_IBM_EMAC=y
57CONFIG_IBM_NEW_EMAC_TXB=256 57CONFIG_IBM_EMAC_RXB=256
58CONFIG_IBM_EMAC_TXB=256
58# CONFIG_NETDEV_1000 is not set 59# CONFIG_NETDEV_1000 is not set
59# CONFIG_NETDEV_10000 is not set 60# CONFIG_NETDEV_10000 is not set
60# CONFIG_INPUT is not set 61# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/40x/makalu_defconfig b/arch/powerpc/configs/40x/makalu_defconfig
index 3c142ac1b344..42b979355f9b 100644
--- a/arch/powerpc/configs/40x/makalu_defconfig
+++ b/arch/powerpc/configs/40x/makalu_defconfig
@@ -43,10 +43,11 @@ CONFIG_BLK_DEV_RAM=y
43CONFIG_BLK_DEV_RAM_SIZE=35000 43CONFIG_BLK_DEV_RAM_SIZE=35000
44# CONFIG_MISC_DEVICES is not set 44# CONFIG_MISC_DEVICES is not set
45CONFIG_NETDEVICES=y 45CONFIG_NETDEVICES=y
46CONFIG_NET_ETHERNET=y 46CONFIG_ETHERNET=y
47CONFIG_IBM_NEW_EMAC=y 47CONFIG_NET_VENDOR_IBM=y
48CONFIG_IBM_NEW_EMAC_RXB=256 48CONFIG_IBM_EMAC=y
49CONFIG_IBM_NEW_EMAC_TXB=256 49CONFIG_IBM_EMAC_RXB=256
50CONFIG_IBM_EMAC_TXB=256
50# CONFIG_NETDEV_1000 is not set 51# CONFIG_NETDEV_1000 is not set
51# CONFIG_NETDEV_10000 is not set 52# CONFIG_NETDEV_10000 is not set
52# CONFIG_INPUT is not set 53# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/40x/walnut_defconfig b/arch/powerpc/configs/40x/walnut_defconfig
index ff57d4828ffc..aa1a4cac3708 100644
--- a/arch/powerpc/configs/40x/walnut_defconfig
+++ b/arch/powerpc/configs/40x/walnut_defconfig
@@ -40,8 +40,9 @@ CONFIG_PROC_DEVICETREE=y
40CONFIG_BLK_DEV_RAM=y 40CONFIG_BLK_DEV_RAM=y
41CONFIG_BLK_DEV_RAM_SIZE=35000 41CONFIG_BLK_DEV_RAM_SIZE=35000
42CONFIG_NETDEVICES=y 42CONFIG_NETDEVICES=y
43CONFIG_NET_ETHERNET=y 43CONFIG_ETHERNET=y
44CONFIG_IBM_NEW_EMAC=y 44CONFIG_NET_VENDOR_IBM=y
45CONFIG_IBM_EMAC=y
45# CONFIG_INPUT is not set 46# CONFIG_INPUT is not set
46# CONFIG_SERIO is not set 47# CONFIG_SERIO is not set
47# CONFIG_VT is not set 48# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/arches_defconfig b/arch/powerpc/configs/44x/arches_defconfig
index 3ed16d5c909d..329f9a3b892e 100644
--- a/arch/powerpc/configs/44x/arches_defconfig
+++ b/arch/powerpc/configs/44x/arches_defconfig
@@ -44,10 +44,11 @@ CONFIG_BLK_DEV_RAM=y
44CONFIG_BLK_DEV_RAM_SIZE=35000 44CONFIG_BLK_DEV_RAM_SIZE=35000
45# CONFIG_MISC_DEVICES is not set 45# CONFIG_MISC_DEVICES is not set
46CONFIG_NETDEVICES=y 46CONFIG_NETDEVICES=y
47CONFIG_NET_ETHERNET=y 47CONFIG_ETHERNET=y
48CONFIG_IBM_NEW_EMAC=y 48CONFIG_NET_VENDOR_IBM=y
49CONFIG_IBM_NEW_EMAC_RXB=256 49CONFIG_IBM_EMAC=y
50CONFIG_IBM_NEW_EMAC_TXB=256 50CONFIG_IBM_EMAC_RXB=256
51CONFIG_IBM_EMAC_TXB=256
51# CONFIG_NETDEV_1000 is not set 52# CONFIG_NETDEV_1000 is not set
52# CONFIG_NETDEV_10000 is not set 53# CONFIG_NETDEV_10000 is not set
53# CONFIG_INPUT is not set 54# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/44x/bamboo_defconfig b/arch/powerpc/configs/44x/bamboo_defconfig
index b1b7d2c5c059..cef7d62560c4 100644
--- a/arch/powerpc/configs/44x/bamboo_defconfig
+++ b/arch/powerpc/configs/44x/bamboo_defconfig
@@ -32,8 +32,9 @@ CONFIG_PROC_DEVICETREE=y
32CONFIG_BLK_DEV_RAM=y 32CONFIG_BLK_DEV_RAM=y
33CONFIG_BLK_DEV_RAM_SIZE=35000 33CONFIG_BLK_DEV_RAM_SIZE=35000
34CONFIG_NETDEVICES=y 34CONFIG_NETDEVICES=y
35CONFIG_NET_ETHERNET=y 35CONFIG_ETHERNET=y
36CONFIG_IBM_NEW_EMAC=y 36CONFIG_NET_VENDOR_IBM=y
37CONFIG_IBM_EMAC=y
37# CONFIG_INPUT is not set 38# CONFIG_INPUT is not set
38# CONFIG_SERIO is not set 39# CONFIG_SERIO is not set
39# CONFIG_VT is not set 40# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/bluestone_defconfig b/arch/powerpc/configs/44x/bluestone_defconfig
index 30a0a8e08fdd..20c8d26d7fc0 100644
--- a/arch/powerpc/configs/44x/bluestone_defconfig
+++ b/arch/powerpc/configs/44x/bluestone_defconfig
@@ -38,10 +38,11 @@ CONFIG_PROC_DEVICETREE=y
38CONFIG_BLK_DEV_RAM=y 38CONFIG_BLK_DEV_RAM=y
39CONFIG_BLK_DEV_RAM_SIZE=35000 39CONFIG_BLK_DEV_RAM_SIZE=35000
40CONFIG_NETDEVICES=y 40CONFIG_NETDEVICES=y
41CONFIG_NET_ETHERNET=y 41CONFIG_ETHERNET=y
42CONFIG_IBM_NEW_EMAC=y 42CONFIG_NET_VENDOR_IBM=y
43CONFIG_IBM_NEW_EMAC_RXB=256 43CONFIG_IBM_EMAC=y
44CONFIG_IBM_NEW_EMAC_TXB=256 44CONFIG_IBM_EMAC_RXB=256
45CONFIG_IBM_EMAC_TXB=256
45CONFIG_SERIAL_8250=y 46CONFIG_SERIAL_8250=y
46CONFIG_SERIAL_8250_CONSOLE=y 47CONFIG_SERIAL_8250_CONSOLE=y
47CONFIG_SERIAL_8250_NR_UARTS=2 48CONFIG_SERIAL_8250_NR_UARTS=2
diff --git a/arch/powerpc/configs/44x/canyonlands_defconfig b/arch/powerpc/configs/44x/canyonlands_defconfig
index a46942aac695..d5be93e6e92d 100644
--- a/arch/powerpc/configs/44x/canyonlands_defconfig
+++ b/arch/powerpc/configs/44x/canyonlands_defconfig
@@ -49,10 +49,11 @@ CONFIG_BLK_DEV_RAM=y
49CONFIG_BLK_DEV_RAM_SIZE=35000 49CONFIG_BLK_DEV_RAM_SIZE=35000
50# CONFIG_MISC_DEVICES is not set 50# CONFIG_MISC_DEVICES is not set
51CONFIG_NETDEVICES=y 51CONFIG_NETDEVICES=y
52CONFIG_NET_ETHERNET=y 52CONFIG_ETHERNET=y
53CONFIG_IBM_NEW_EMAC=y 53CONFIG_NET_VENDOR_IBM=y
54CONFIG_IBM_NEW_EMAC_RXB=256 54CONFIG_IBM_EMAC=y
55CONFIG_IBM_NEW_EMAC_TXB=256 55CONFIG_IBM_EMAC_RXB=256
56CONFIG_IBM_EMAC_TXB=256
56# CONFIG_NETDEV_1000 is not set 57# CONFIG_NETDEV_1000 is not set
57# CONFIG_NETDEV_10000 is not set 58# CONFIG_NETDEV_10000 is not set
58# CONFIG_INPUT is not set 59# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/44x/ebony_defconfig b/arch/powerpc/configs/44x/ebony_defconfig
index 07d77e51f1ba..f9269fc4ffcc 100644
--- a/arch/powerpc/configs/44x/ebony_defconfig
+++ b/arch/powerpc/configs/44x/ebony_defconfig
@@ -40,8 +40,9 @@ CONFIG_PROC_DEVICETREE=y
40CONFIG_BLK_DEV_RAM=y 40CONFIG_BLK_DEV_RAM=y
41CONFIG_BLK_DEV_RAM_SIZE=35000 41CONFIG_BLK_DEV_RAM_SIZE=35000
42CONFIG_NETDEVICES=y 42CONFIG_NETDEVICES=y
43CONFIG_NET_ETHERNET=y 43CONFIG_ETHERNET=y
44CONFIG_IBM_NEW_EMAC=y 44CONFIG_NET_VENDOR_IBM=y
45CONFIG_IBM_EMAC=y
45# CONFIG_INPUT is not set 46# CONFIG_INPUT is not set
46# CONFIG_SERIO is not set 47# CONFIG_SERIO is not set
47# CONFIG_VT is not set 48# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/eiger_defconfig b/arch/powerpc/configs/44x/eiger_defconfig
index 2ce7e9aff09e..9be089038fd7 100644
--- a/arch/powerpc/configs/44x/eiger_defconfig
+++ b/arch/powerpc/configs/44x/eiger_defconfig
@@ -55,10 +55,11 @@ CONFIG_FUSION=y
55CONFIG_FUSION_SAS=y 55CONFIG_FUSION_SAS=y
56CONFIG_I2O=y 56CONFIG_I2O=y
57CONFIG_NETDEVICES=y 57CONFIG_NETDEVICES=y
58CONFIG_NET_ETHERNET=y 58CONFIG_ETHERNET=y
59CONFIG_IBM_NEW_EMAC=y 59CONFIG_NET_VENDOR_IBM=y
60CONFIG_IBM_NEW_EMAC_RXB=256 60CONFIG_IBM_EMAC=y
61CONFIG_IBM_NEW_EMAC_TXB=256 61CONFIG_IBM_EMAC_RXB=256
62CONFIG_IBM_EMAC_TXB=256
62CONFIG_E1000E=y 63CONFIG_E1000E=y
63# CONFIG_NETDEV_10000 is not set 64# CONFIG_NETDEV_10000 is not set
64# CONFIG_INPUT is not set 65# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/44x/icon_defconfig b/arch/powerpc/configs/44x/icon_defconfig
index 18730ff9de7c..82f73035a7ce 100644
--- a/arch/powerpc/configs/44x/icon_defconfig
+++ b/arch/powerpc/configs/44x/icon_defconfig
@@ -56,8 +56,9 @@ CONFIG_FUSION_SAS=y
56CONFIG_FUSION_CTL=y 56CONFIG_FUSION_CTL=y
57CONFIG_FUSION_LOGGING=y 57CONFIG_FUSION_LOGGING=y
58CONFIG_NETDEVICES=y 58CONFIG_NETDEVICES=y
59CONFIG_NET_ETHERNET=y 59CONFIG_ETHERNET=y
60CONFIG_IBM_NEW_EMAC=y 60CONFIG_NET_VENDOR_IBM=y
61CONFIG_IBM_EMAC=y
61# CONFIG_NETDEV_1000 is not set 62# CONFIG_NETDEV_1000 is not set
62# CONFIG_NETDEV_10000 is not set 63# CONFIG_NETDEV_10000 is not set
63# CONFIG_WLAN is not set 64# CONFIG_WLAN is not set
diff --git a/arch/powerpc/configs/44x/katmai_defconfig b/arch/powerpc/configs/44x/katmai_defconfig
index 34c09144a699..109562c3c6be 100644
--- a/arch/powerpc/configs/44x/katmai_defconfig
+++ b/arch/powerpc/configs/44x/katmai_defconfig
@@ -42,8 +42,9 @@ CONFIG_BLK_DEV_RAM=y
42CONFIG_BLK_DEV_RAM_SIZE=35000 42CONFIG_BLK_DEV_RAM_SIZE=35000
43CONFIG_MACINTOSH_DRIVERS=y 43CONFIG_MACINTOSH_DRIVERS=y
44CONFIG_NETDEVICES=y 44CONFIG_NETDEVICES=y
45CONFIG_NET_ETHERNET=y 45CONFIG_ETHERNET=y
46CONFIG_IBM_NEW_EMAC=y 46CONFIG_NET_VENDOR_IBM=y
47CONFIG_IBM_EMAC=y
47# CONFIG_INPUT is not set 48# CONFIG_INPUT is not set
48# CONFIG_SERIO is not set 49# CONFIG_SERIO is not set
49# CONFIG_VT is not set 50# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/redwood_defconfig b/arch/powerpc/configs/44x/redwood_defconfig
index 01cc2b1a7f9a..48802811da76 100644
--- a/arch/powerpc/configs/44x/redwood_defconfig
+++ b/arch/powerpc/configs/44x/redwood_defconfig
@@ -53,11 +53,12 @@ CONFIG_FUSION=y
53CONFIG_FUSION_SAS=y 53CONFIG_FUSION_SAS=y
54CONFIG_I2O=y 54CONFIG_I2O=y
55CONFIG_NETDEVICES=y 55CONFIG_NETDEVICES=y
56CONFIG_NET_ETHERNET=y 56CONFIG_ETHERNET=y
57CONFIG_IBM_NEW_EMAC=y 57CONFIG_NET_VENDOR_IBM=y
58CONFIG_IBM_NEW_EMAC_RXB=256 58CONFIG_IBM_EMAC=y
59CONFIG_IBM_NEW_EMAC_TXB=256 59CONFIG_IBM_EMAC_RXB=256
60CONFIG_IBM_NEW_EMAC_DEBUG=y 60CONFIG_IBM_EMAC_TXB=256
61CONFIG_IBM_EMAC_DEBUG=y
61CONFIG_E1000E=y 62CONFIG_E1000E=y
62# CONFIG_NETDEV_10000 is not set 63# CONFIG_NETDEV_10000 is not set
63# CONFIG_INPUT is not set 64# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/44x/sam440ep_defconfig b/arch/powerpc/configs/44x/sam440ep_defconfig
index dfcffede16ad..ca088cd581af 100644
--- a/arch/powerpc/configs/44x/sam440ep_defconfig
+++ b/arch/powerpc/configs/44x/sam440ep_defconfig
@@ -44,8 +44,9 @@ CONFIG_ATA=y
44# CONFIG_SATA_PMP is not set 44# CONFIG_SATA_PMP is not set
45CONFIG_SATA_SIL=y 45CONFIG_SATA_SIL=y
46CONFIG_NETDEVICES=y 46CONFIG_NETDEVICES=y
47CONFIG_NET_ETHERNET=y 47CONFIG_ETHERNET=y
48CONFIG_IBM_NEW_EMAC=y 48CONFIG_NET_VENDOR_IBM=y
49CONFIG_IBM_EMAC=y
49# CONFIG_NETDEV_1000 is not set 50# CONFIG_NETDEV_1000 is not set
50# CONFIG_NETDEV_10000 is not set 51# CONFIG_NETDEV_10000 is not set
51CONFIG_INPUT_FF_MEMLESS=m 52CONFIG_INPUT_FF_MEMLESS=m
diff --git a/arch/powerpc/configs/44x/sequoia_defconfig b/arch/powerpc/configs/44x/sequoia_defconfig
index 47e399f2892f..b7a653b626db 100644
--- a/arch/powerpc/configs/44x/sequoia_defconfig
+++ b/arch/powerpc/configs/44x/sequoia_defconfig
@@ -46,8 +46,9 @@ CONFIG_PROC_DEVICETREE=y
46CONFIG_BLK_DEV_RAM=y 46CONFIG_BLK_DEV_RAM=y
47CONFIG_BLK_DEV_RAM_SIZE=35000 47CONFIG_BLK_DEV_RAM_SIZE=35000
48CONFIG_NETDEVICES=y 48CONFIG_NETDEVICES=y
49CONFIG_NET_ETHERNET=y 49CONFIG_ETHERNET=y
50CONFIG_IBM_NEW_EMAC=y 50CONFIG_NET_VENDOR_IBM=y
51CONFIG_IBM_EMAC=y
51# CONFIG_INPUT is not set 52# CONFIG_INPUT is not set
52# CONFIG_SERIO is not set 53# CONFIG_SERIO is not set
53# CONFIG_VT is not set 54# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/taishan_defconfig b/arch/powerpc/configs/44x/taishan_defconfig
index a6a002ed5681..30de97f158a4 100644
--- a/arch/powerpc/configs/44x/taishan_defconfig
+++ b/arch/powerpc/configs/44x/taishan_defconfig
@@ -40,8 +40,9 @@ CONFIG_BLK_DEV_RAM=y
40CONFIG_BLK_DEV_RAM_SIZE=35000 40CONFIG_BLK_DEV_RAM_SIZE=35000
41CONFIG_MACINTOSH_DRIVERS=y 41CONFIG_MACINTOSH_DRIVERS=y
42CONFIG_NETDEVICES=y 42CONFIG_NETDEVICES=y
43CONFIG_NET_ETHERNET=y 43CONFIG_ETHERNET=y
44CONFIG_IBM_NEW_EMAC=y 44CONFIG_NET_VENDOR_IBM=y
45CONFIG_IBM_EMAC=y
45# CONFIG_INPUT is not set 46# CONFIG_INPUT is not set
46# CONFIG_SERIO is not set 47# CONFIG_SERIO is not set
47# CONFIG_VT is not set 48# CONFIG_VT is not set
diff --git a/arch/powerpc/configs/44x/warp_defconfig b/arch/powerpc/configs/44x/warp_defconfig
index abf74dc1f79c..105bc56f4b2b 100644
--- a/arch/powerpc/configs/44x/warp_defconfig
+++ b/arch/powerpc/configs/44x/warp_defconfig
@@ -54,9 +54,10 @@ CONFIG_BLK_DEV_SD=y
54CONFIG_SCSI_SPI_ATTRS=y 54CONFIG_SCSI_SPI_ATTRS=y
55# CONFIG_SCSI_LOWLEVEL is not set 55# CONFIG_SCSI_LOWLEVEL is not set
56CONFIG_NETDEVICES=y 56CONFIG_NETDEVICES=y
57CONFIG_NET_ETHERNET=y 57CONFIG_ETHERNET=y
58CONFIG_NET_VENDOR_IBM=y
58CONFIG_MII=y 59CONFIG_MII=y
59CONFIG_IBM_NEW_EMAC=y 60CONFIG_IBM_EMAC=y
60# CONFIG_NETDEV_1000 is not set 61# CONFIG_NETDEV_1000 is not set
61# CONFIG_NETDEV_10000 is not set 62# CONFIG_NETDEV_10000 is not set
62# CONFIG_INPUT is not set 63# CONFIG_INPUT is not set
diff --git a/arch/powerpc/configs/ppc40x_defconfig b/arch/powerpc/configs/ppc40x_defconfig
index bfd634b5ada7..7cb703b948b1 100644
--- a/arch/powerpc/configs/ppc40x_defconfig
+++ b/arch/powerpc/configs/ppc40x_defconfig
@@ -50,8 +50,9 @@ CONFIG_BLK_DEV_RAM=y
50CONFIG_BLK_DEV_RAM_SIZE=35000 50CONFIG_BLK_DEV_RAM_SIZE=35000
51CONFIG_XILINX_SYSACE=m 51CONFIG_XILINX_SYSACE=m
52CONFIG_NETDEVICES=y 52CONFIG_NETDEVICES=y
53CONFIG_NET_ETHERNET=y 53CONFIG_ETHERNET=y
54CONFIG_IBM_NEW_EMAC=y 54CONFIG_NET_VENDOR_IBM=y
55CONFIG_IBM_EMAC=y
55# CONFIG_INPUT is not set 56# CONFIG_INPUT is not set
56CONFIG_SERIO=m 57CONFIG_SERIO=m
57# CONFIG_SERIO_I8042 is not set 58# CONFIG_SERIO_I8042 is not set
diff --git a/arch/powerpc/configs/ppc44x_defconfig b/arch/powerpc/configs/ppc44x_defconfig
index 47133202a625..6cdf1c0d2c8a 100644
--- a/arch/powerpc/configs/ppc44x_defconfig
+++ b/arch/powerpc/configs/ppc44x_defconfig
@@ -63,8 +63,9 @@ CONFIG_BLK_DEV_SD=m
63# CONFIG_SCSI_LOWLEVEL is not set 63# CONFIG_SCSI_LOWLEVEL is not set
64CONFIG_NETDEVICES=y 64CONFIG_NETDEVICES=y
65CONFIG_TUN=m 65CONFIG_TUN=m
66CONFIG_NET_ETHERNET=y 66CONFIG_ETHERNET=y
67CONFIG_IBM_NEW_EMAC=y 67CONFIG_NET_VENDOR_IBM=y
68CONFIG_IBM_EMAC=y
68# CONFIG_INPUT is not set 69# CONFIG_INPUT is not set
69CONFIG_SERIO=m 70CONFIG_SERIO=m
70# CONFIG_SERIO_I8042 is not set 71# CONFIG_SERIO_I8042 is not set
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index d733d7ca939c..b5d87067a58b 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -130,21 +130,21 @@ config 405GP
130 bool 130 bool
131 select IBM405_ERR77 131 select IBM405_ERR77
132 select IBM405_ERR51 132 select IBM405_ERR51
133 select IBM_NEW_EMAC_ZMII 133 select IBM_EMAC_ZMII
134 134
135config 405EP 135config 405EP
136 bool 136 bool
137 137
138config 405EX 138config 405EX
139 bool 139 bool
140 select IBM_NEW_EMAC_EMAC4 140 select IBM_EMAC_EMAC4
141 select IBM_NEW_EMAC_RGMII 141 select IBM_EMAC_RGMII
142 142
143config 405EZ 143config 405EZ
144 bool 144 bool
145 select IBM_NEW_EMAC_NO_FLOW_CTRL 145 select IBM_EMAC_NO_FLOW_CTRL
146 select IBM_NEW_EMAC_MAL_CLR_ICINTSTAT 146 select IBM_EMAC_MAL_CLR_ICINTSTAT
147 select IBM_NEW_EMAC_MAL_COMMON_ERR 147 select IBM_EMAC_MAL_COMMON_ERR
148 148
149config 405GPR 149config 405GPR
150 bool 150 bool
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index e958b6f48ec2..762322ce24a9 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -23,7 +23,7 @@ config BLUESTONE
23 default n 23 default n
24 select PPC44x_SIMPLE 24 select PPC44x_SIMPLE
25 select APM821xx 25 select APM821xx
26 select IBM_NEW_EMAC_RGMII 26 select IBM_EMAC_RGMII
27 help 27 help
28 This option enables support for the APM APM821xx Evaluation board. 28 This option enables support for the APM APM821xx Evaluation board.
29 29
@@ -122,8 +122,8 @@ config CANYONLANDS
122 select PPC4xx_PCI_EXPRESS 122 select PPC4xx_PCI_EXPRESS
123 select PCI_MSI 123 select PCI_MSI
124 select PPC4xx_MSI 124 select PPC4xx_MSI
125 select IBM_NEW_EMAC_RGMII 125 select IBM_EMAC_RGMII
126 select IBM_NEW_EMAC_ZMII 126 select IBM_EMAC_ZMII
127 help 127 help
128 This option enables support for the AMCC PPC460EX evaluation board. 128 This option enables support for the AMCC PPC460EX evaluation board.
129 129
@@ -135,8 +135,8 @@ config GLACIER
135 select 460EX # Odd since it uses 460GT but the effects are the same 135 select 460EX # Odd since it uses 460GT but the effects are the same
136 select PCI 136 select PCI
137 select PPC4xx_PCI_EXPRESS 137 select PPC4xx_PCI_EXPRESS
138 select IBM_NEW_EMAC_RGMII 138 select IBM_EMAC_RGMII
139 select IBM_NEW_EMAC_ZMII 139 select IBM_EMAC_ZMII
140 help 140 help
141 This option enables support for the AMCC PPC460GT evaluation board. 141 This option enables support for the AMCC PPC460GT evaluation board.
142 142
@@ -161,7 +161,7 @@ config EIGER
161 select 460SX 161 select 460SX
162 select PCI 162 select PCI
163 select PPC4xx_PCI_EXPRESS 163 select PPC4xx_PCI_EXPRESS
164 select IBM_NEW_EMAC_RGMII 164 select IBM_EMAC_RGMII
165 help 165 help
166 This option enables support for the AMCC PPC460SX evaluation board. 166 This option enables support for the AMCC PPC460SX evaluation board.
167 167
@@ -260,59 +260,59 @@ config 440EP
260 bool 260 bool
261 select PPC_FPU 261 select PPC_FPU
262 select IBM440EP_ERR42 262 select IBM440EP_ERR42
263 select IBM_NEW_EMAC_ZMII 263 select IBM_EMAC_ZMII
264 select USB_ARCH_HAS_OHCI 264 select USB_ARCH_HAS_OHCI
265 265
266config 440EPX 266config 440EPX
267 bool 267 bool
268 select PPC_FPU 268 select PPC_FPU
269 select IBM_NEW_EMAC_EMAC4 269 select IBM_EMAC_EMAC4
270 select IBM_NEW_EMAC_RGMII 270 select IBM_EMAC_RGMII
271 select IBM_NEW_EMAC_ZMII 271 select IBM_EMAC_ZMII
272 272
273config 440GRX 273config 440GRX
274 bool 274 bool
275 select IBM_NEW_EMAC_EMAC4 275 select IBM_EMAC_EMAC4
276 select IBM_NEW_EMAC_RGMII 276 select IBM_EMAC_RGMII
277 select IBM_NEW_EMAC_ZMII 277 select IBM_EMAC_ZMII
278 278
279config 440GP 279config 440GP
280 bool 280 bool
281 select IBM_NEW_EMAC_ZMII 281 select IBM_EMAC_ZMII
282 282
283config 440GX 283config 440GX
284 bool 284 bool
285 select IBM_NEW_EMAC_EMAC4 285 select IBM_EMAC_EMAC4
286 select IBM_NEW_EMAC_RGMII 286 select IBM_EMAC_RGMII
287 select IBM_NEW_EMAC_ZMII #test only 287 select IBM_EMAC_ZMII #test only
288 select IBM_NEW_EMAC_TAH #test only 288 select IBM_EMAC_TAH #test only
289 289
290config 440SP 290config 440SP
291 bool 291 bool
292 292
293config 440SPe 293config 440SPe
294 bool 294 bool
295 select IBM_NEW_EMAC_EMAC4 295 select IBM_EMAC_EMAC4
296 296
297config 460EX 297config 460EX
298 bool 298 bool
299 select PPC_FPU 299 select PPC_FPU
300 select IBM_NEW_EMAC_EMAC4 300 select IBM_EMAC_EMAC4
301 select IBM_NEW_EMAC_TAH 301 select IBM_EMAC_TAH
302 302
303config 460SX 303config 460SX
304 bool 304 bool
305 select PPC_FPU 305 select PPC_FPU
306 select IBM_NEW_EMAC_EMAC4 306 select IBM_EMAC_EMAC4
307 select IBM_NEW_EMAC_RGMII 307 select IBM_EMAC_RGMII
308 select IBM_NEW_EMAC_ZMII 308 select IBM_EMAC_ZMII
309 select IBM_NEW_EMAC_TAH 309 select IBM_EMAC_TAH
310 310
311config APM821xx 311config APM821xx
312 bool 312 bool
313 select PPC_FPU 313 select PPC_FPU
314 select IBM_NEW_EMAC_EMAC4 314 select IBM_EMAC_EMAC4
315 select IBM_NEW_EMAC_TAH 315 select IBM_EMAC_TAH
316 316
317# 44x errata/workaround config symbols, selected by the CPU models above 317# 44x errata/workaround config symbols, selected by the CPU models above
318config IBM440EP_ERR42 318config IBM440EP_ERR42
diff --git a/arch/powerpc/platforms/cell/Kconfig b/arch/powerpc/platforms/cell/Kconfig
index 67d5009b4e86..2e7ff0c5cf42 100644
--- a/arch/powerpc/platforms/cell/Kconfig
+++ b/arch/powerpc/platforms/cell/Kconfig
@@ -17,10 +17,10 @@ config PPC_CELL_NATIVE
17 select PPC_CELL_COMMON 17 select PPC_CELL_COMMON
18 select MPIC 18 select MPIC
19 select PPC_IO_WORKAROUNDS 19 select PPC_IO_WORKAROUNDS
20 select IBM_NEW_EMAC_EMAC4 20 select IBM_EMAC_EMAC4
21 select IBM_NEW_EMAC_RGMII 21 select IBM_EMAC_RGMII
22 select IBM_NEW_EMAC_ZMII #test only 22 select IBM_EMAC_ZMII #test only
23 select IBM_NEW_EMAC_TAH #test only 23 select IBM_EMAC_TAH #test only
24 default n 24 default n
25 25
26config PPC_IBM_CELL_BLADE 26config PPC_IBM_CELL_BLADE
diff --git a/arch/s390/include/asm/qdio.h b/arch/s390/include/asm/qdio.h
index 15c97625df8d..21993623da9a 100644
--- a/arch/s390/include/asm/qdio.h
+++ b/arch/s390/include/asm/qdio.h
@@ -123,6 +123,40 @@ struct slibe {
123}; 123};
124 124
125/** 125/**
126 * struct qaob - queue asynchronous operation block
127 * @res0: reserved parameters
128 * @res1: reserved parameter
129 * @res2: reserved parameter
130 * @res3: reserved parameter
131 * @aorc: asynchronous operation return code
132 * @flags: internal flags
133 * @cbtbs: control block type
134 * @sb_count: number of storage blocks
135 * @sba: storage block element addresses
136 * @dcount: size of storage block elements
137 * @user0: user defineable value
138 * @res4: reserved paramater
139 * @user1: user defineable value
140 * @user2: user defineable value
141 */
142struct qaob {
143 u64 res0[6];
144 u8 res1;
145 u8 res2;
146 u8 res3;
147 u8 aorc;
148 u8 flags;
149 u16 cbtbs;
150 u8 sb_count;
151 u64 sba[QDIO_MAX_ELEMENTS_PER_BUFFER];
152 u16 dcount[QDIO_MAX_ELEMENTS_PER_BUFFER];
153 u64 user0;
154 u64 res4[2];
155 u64 user1;
156 u64 user2;
157} __attribute__ ((packed, aligned(256)));
158
159/**
126 * struct slib - storage list information block (SLIB) 160 * struct slib - storage list information block (SLIB)
127 * @nsliba: next SLIB address (if any) 161 * @nsliba: next SLIB address (if any)
128 * @sla: SL address 162 * @sla: SL address
@@ -225,6 +259,41 @@ struct slsb {
225#define CHSC_AC2_DATA_DIV_AVAILABLE 0x0010 259#define CHSC_AC2_DATA_DIV_AVAILABLE 0x0010
226#define CHSC_AC2_DATA_DIV_ENABLED 0x0002 260#define CHSC_AC2_DATA_DIV_ENABLED 0x0002
227 261
262/**
263 * struct qdio_outbuf_state - SBAL related asynchronous operation information
264 * (for communication with upper layer programs)
265 * (only required for use with completion queues)
266 * @flags: flags indicating state of buffer
267 * @aob: pointer to QAOB used for the particular SBAL
268 * @user: pointer to upper layer program's state information related to SBAL
269 * (stored in user1 data of QAOB)
270 */
271struct qdio_outbuf_state {
272 u8 flags;
273 struct qaob *aob;
274 void *user;
275};
276
277#define QDIO_OUTBUF_STATE_FLAG_NONE 0x00
278#define QDIO_OUTBUF_STATE_FLAG_PENDING 0x01
279
280#define CHSC_AC1_INITIATE_INPUTQ 0x80
281
282
283/* qdio adapter-characteristics-1 flag */
284#define AC1_SIGA_INPUT_NEEDED 0x40 /* process input queues */
285#define AC1_SIGA_OUTPUT_NEEDED 0x20 /* process output queues */
286#define AC1_SIGA_SYNC_NEEDED 0x10 /* ask hypervisor to sync */
287#define AC1_AUTOMATIC_SYNC_ON_THININT 0x08 /* set by hypervisor */
288#define AC1_AUTOMATIC_SYNC_ON_OUT_PCI 0x04 /* set by hypervisor */
289#define AC1_SC_QEBSM_AVAILABLE 0x02 /* available for subchannel */
290#define AC1_SC_QEBSM_ENABLED 0x01 /* enabled for subchannel */
291
292#define CHSC_AC2_DATA_DIV_AVAILABLE 0x0010
293#define CHSC_AC2_DATA_DIV_ENABLED 0x0002
294
295#define CHSC_AC3_FORMAT2_CQ_AVAILABLE 0x8000
296
228struct qdio_ssqd_desc { 297struct qdio_ssqd_desc {
229 u8 flags; 298 u8 flags;
230 u8:8; 299 u8:8;
@@ -243,8 +312,7 @@ struct qdio_ssqd_desc {
243 u64 sch_token; 312 u64 sch_token;
244 u8 mro; 313 u8 mro;
245 u8 mri; 314 u8 mri;
246 u8:8; 315 u16 qdioac3;
247 u8 sbalic;
248 u16:16; 316 u16:16;
249 u8:8; 317 u8:8;
250 u8 mmwc; 318 u8 mmwc;
@@ -280,9 +348,11 @@ typedef void qdio_handler_t(struct ccw_device *, unsigned int, int,
280 * @no_output_qs: number of output queues 348 * @no_output_qs: number of output queues
281 * @input_handler: handler to be called for input queues 349 * @input_handler: handler to be called for input queues
282 * @output_handler: handler to be called for output queues 350 * @output_handler: handler to be called for output queues
351 * @queue_start_poll: polling handlers (one per input queue or NULL)
283 * @int_parm: interruption parameter 352 * @int_parm: interruption parameter
284 * @input_sbal_addr_array: address of no_input_qs * 128 pointers 353 * @input_sbal_addr_array: address of no_input_qs * 128 pointers
285 * @output_sbal_addr_array: address of no_output_qs * 128 pointers 354 * @output_sbal_addr_array: address of no_output_qs * 128 pointers
355 * @output_sbal_state_array: no_output_qs * 128 state info (for CQ or NULL)
286 */ 356 */
287struct qdio_initialize { 357struct qdio_initialize {
288 struct ccw_device *cdev; 358 struct ccw_device *cdev;
@@ -297,11 +367,12 @@ struct qdio_initialize {
297 unsigned int no_output_qs; 367 unsigned int no_output_qs;
298 qdio_handler_t *input_handler; 368 qdio_handler_t *input_handler;
299 qdio_handler_t *output_handler; 369 qdio_handler_t *output_handler;
300 void (*queue_start_poll) (struct ccw_device *, int, unsigned long); 370 void (**queue_start_poll) (struct ccw_device *, int, unsigned long);
301 int scan_threshold; 371 int scan_threshold;
302 unsigned long int_parm; 372 unsigned long int_parm;
303 void **input_sbal_addr_array; 373 void **input_sbal_addr_array;
304 void **output_sbal_addr_array; 374 void **output_sbal_addr_array;
375 struct qdio_outbuf_state *output_sbal_state_array;
305}; 376};
306 377
307#define QDIO_STATE_INACTIVE 0x00000002 /* after qdio_cleanup */ 378#define QDIO_STATE_INACTIVE 0x00000002 /* after qdio_cleanup */
@@ -316,6 +387,7 @@ struct qdio_initialize {
316extern int qdio_allocate(struct qdio_initialize *); 387extern int qdio_allocate(struct qdio_initialize *);
317extern int qdio_establish(struct qdio_initialize *); 388extern int qdio_establish(struct qdio_initialize *);
318extern int qdio_activate(struct ccw_device *); 389extern int qdio_activate(struct ccw_device *);
390extern void qdio_release_aob(struct qaob *);
319extern int do_QDIO(struct ccw_device *, unsigned int, int, unsigned int, 391extern int do_QDIO(struct ccw_device *, unsigned int, int, unsigned int,
320 unsigned int); 392 unsigned int);
321extern int qdio_start_irq(struct ccw_device *, int); 393extern int qdio_start_irq(struct ccw_device *, int);
diff --git a/arch/sh/include/asm/sh_eth.h b/arch/sh/include/asm/sh_eth.h
deleted file mode 100644
index 0f325da0f923..000000000000
--- a/arch/sh/include/asm/sh_eth.h
+++ /dev/null
@@ -1,25 +0,0 @@
1#ifndef __ASM_SH_ETH_H__
2#define __ASM_SH_ETH_H__
3
4#include <linux/phy.h>
5
6enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN};
7enum {
8 SH_ETH_REG_GIGABIT,
9 SH_ETH_REG_FAST_SH4,
10 SH_ETH_REG_FAST_SH3_SH2
11};
12
13struct sh_eth_plat_data {
14 int phy;
15 int edmac_endian;
16 int register_type;
17 phy_interface_t phy_interface;
18 void (*set_mdio_gate)(unsigned long addr);
19
20 unsigned char mac_addr[6];
21 unsigned no_ether_link:1;
22 unsigned ether_link_active_low:1;
23};
24
25#endif
diff --git a/arch/um/drivers/net_kern.c b/arch/um/drivers/net_kern.c
index 22745b47c829..a492e59883a3 100644
--- a/arch/um/drivers/net_kern.c
+++ b/arch/um/drivers/net_kern.c
@@ -368,7 +368,7 @@ static const struct net_device_ops uml_netdev_ops = {
368 .ndo_open = uml_net_open, 368 .ndo_open = uml_net_open,
369 .ndo_stop = uml_net_close, 369 .ndo_stop = uml_net_close,
370 .ndo_start_xmit = uml_net_start_xmit, 370 .ndo_start_xmit = uml_net_start_xmit,
371 .ndo_set_multicast_list = uml_net_set_multicast_list, 371 .ndo_set_rx_mode = uml_net_set_multicast_list,
372 .ndo_tx_timeout = uml_net_tx_timeout, 372 .ndo_tx_timeout = uml_net_tx_timeout,
373 .ndo_set_mac_address = eth_mac_addr, 373 .ndo_set_mac_address = eth_mac_addr,
374 .ndo_change_mtu = uml_net_change_mtu, 374 .ndo_change_mtu = uml_net_change_mtu,
diff --git a/arch/xtensa/platforms/iss/network.c b/arch/xtensa/platforms/iss/network.c
index f717e20d961b..7dde24456427 100644
--- a/arch/xtensa/platforms/iss/network.c
+++ b/arch/xtensa/platforms/iss/network.c
@@ -633,7 +633,7 @@ static const struct net_device_ops iss_netdev_ops = {
633 .ndo_set_mac_address = iss_net_set_mac, 633 .ndo_set_mac_address = iss_net_set_mac,
634 //.ndo_do_ioctl = iss_net_ioctl, 634 //.ndo_do_ioctl = iss_net_ioctl,
635 .ndo_tx_timeout = iss_net_tx_timeout, 635 .ndo_tx_timeout = iss_net_tx_timeout,
636 .ndo_set_multicast_list = iss_net_set_multicast_list, 636 .ndo_set_rx_mode = iss_net_set_multicast_list,
637}; 637};
638 638
639static int iss_net_configure(int index, char *init) 639static int iss_net_configure(int index, char *init)