From 1377916ea7ac5dcb7690b0a48b785b3a8109fa37 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 28 Jul 2013 22:13:52 +0000 Subject: bcm53xx: update patches This reorders the patchs and adds some new ones. Signed-off-by: Hauke Mehrtens SVN-Revision: 37586 --- ...tial-support-for-the-BCM5301-BCM470X-SoC-.patch | 308 --------------------- ...-bcma-register-bcma-as-device-tree-driver.patch | 99 ------- .../0010-bcma-add-some-more-core-names.patch | 57 ---- ...t-possible-to-select-SoC-support-without-.patch | 33 --- .../0012-bcm53xx-register-bcma-bus.patch | 24 -- ...bcma-add-constants-for-new-ARM-based-SoCs.patch | 26 -- ...rn-correct-error-code-when-bus-can-failed.patch | 21 -- .../0015-bcma-fix-handling-of-big-addrl.patch | 83 ------ .../0016-bgmac-bgmac-depends-on-phylib.patch | 22 -- ...-make-bgmac-work-on-systems-without-nvram.patch | 25 -- ...tial-support-for-the-BCM5301-BCM470X-SoC-.patch | 305 ++++++++++++++++++++ .../052-bcm53xx-register-bcma-bus.patch | 21 ++ .../101-bcma-add-some-more-core-names.patch | 73 +++++ ...t-possible-to-select-SoC-support-without-.patch | 29 ++ ...bcma-add-constants-for-new-ARM-based-SoCs.patch | 23 ++ ...n-correct-error-code-when-bus-scan-failed.patch | 20 ++ .../105-bcma-fix-handling-of-big-addrl.patch | 81 ++++++ ...-bcma-register-bcma-as-device-tree-driver.patch | 96 +++++++ .../patches-3.10/121-bcma-fix-dma-mask.patch | 18 ++ .../patches-3.10/122-bcma-add-arm-support.patch | 156 +++++++++++ .../201-bgmac-add-dependency-to-phylib.patch | 5 +- ...-make-bgmac-work-on-systems-without-nvram.patch | 5 +- .../patches-3.10/203-bgmac-register-phy.patch | 5 +- .../204-bgmac-add-supprot-for-BCM4707.patch | 5 +- 24 files changed, 826 insertions(+), 714 deletions(-) delete mode 100644 target/linux/bcm53xx/patches-3.10/0008-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0009-bcma-register-bcma-as-device-tree-driver.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0010-bcma-add-some-more-core-names.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0011-bcma-make-it-possible-to-select-SoC-support-without-.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0012-bcm53xx-register-bcma-bus.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0013-bcma-add-constants-for-new-ARM-based-SoCs.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0014-bcma-return-correct-error-code-when-bus-can-failed.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0015-bcma-fix-handling-of-big-addrl.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0016-bgmac-bgmac-depends-on-phylib.patch delete mode 100644 target/linux/bcm53xx/patches-3.10/0017-bgmac-make-bgmac-work-on-systems-without-nvram.patch create mode 100644 target/linux/bcm53xx/patches-3.10/051-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch create mode 100644 target/linux/bcm53xx/patches-3.10/052-bcm53xx-register-bcma-bus.patch create mode 100644 target/linux/bcm53xx/patches-3.10/101-bcma-add-some-more-core-names.patch create mode 100644 target/linux/bcm53xx/patches-3.10/102-bcma-make-it-possible-to-select-SoC-support-without-.patch create mode 100644 target/linux/bcm53xx/patches-3.10/103-bcma-add-constants-for-new-ARM-based-SoCs.patch create mode 100644 target/linux/bcm53xx/patches-3.10/104-bcma-return-correct-error-code-when-bus-scan-failed.patch create mode 100644 target/linux/bcm53xx/patches-3.10/105-bcma-fix-handling-of-big-addrl.patch create mode 100644 target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch create mode 100644 target/linux/bcm53xx/patches-3.10/121-bcma-fix-dma-mask.patch create mode 100644 target/linux/bcm53xx/patches-3.10/122-bcma-add-arm-support.patch (limited to 'target') diff --git a/target/linux/bcm53xx/patches-3.10/0008-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch b/target/linux/bcm53xx/patches-3.10/0008-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch deleted file mode 100644 index a94220b060..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0008-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch +++ /dev/null @@ -1,308 +0,0 @@ -From 6c55b7f2fe06eb01f4ca6dad35d54c6e2ecbff25 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Sat, 29 Jun 2013 22:06:43 +0200 -Subject: [PATCH 08/17] bcm53xx: initial support for the BCM5301/BCM470X SoC - with ARM CPU - -This patch adds support for the BCM5301/BCM470X SoCs with an ARM CPU. -Currently just booting to a shell is working and nothing else, no -Ethernet, wifi, flash, ... - -Signed-off-by: Hauke Mehrtens ---- - arch/arm/Kconfig | 2 + - arch/arm/Kconfig.debug | 5 ++ - arch/arm/Makefile | 1 + - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/bcm5301-netgear-r6250.dts | 20 +++++++ - arch/arm/boot/dts/bcm5301.dtsi | 83 +++++++++++++++++++++++++++ - arch/arm/include/debug/bcm53xx.S | 19 ++++++ - arch/arm/mach-bcm53xx/Kconfig | 15 +++++ - arch/arm/mach-bcm53xx/Makefile | 1 + - arch/arm/mach-bcm53xx/bcm53xx.c | 69 ++++++++++++++++++++++ - 10 files changed, 216 insertions(+) - create mode 100644 arch/arm/boot/dts/bcm5301-netgear-r6250.dts - create mode 100644 arch/arm/boot/dts/bcm5301.dtsi - create mode 100644 arch/arm/include/debug/bcm53xx.S - create mode 100644 arch/arm/mach-bcm53xx/Kconfig - create mode 100644 arch/arm/mach-bcm53xx/Makefile - create mode 100644 arch/arm/mach-bcm53xx/bcm53xx.c - ---- a/arch/arm/Kconfig -+++ b/arch/arm/Kconfig -@@ -922,6 +922,8 @@ source "arch/arm/mach-bcm/Kconfig" - - source "arch/arm/mach-bcm2835/Kconfig" - -+source "arch/arm/mach-bcm53xx/Kconfig" -+ - source "arch/arm/mach-clps711x/Kconfig" - - source "arch/arm/mach-cns3xxx/Kconfig" ---- a/arch/arm/Kconfig.debug -+++ b/arch/arm/Kconfig.debug -@@ -93,6 +93,10 @@ choice - bool "Kernel low-level debugging on BCM2835 PL011 UART" - depends on ARCH_BCM2835 - -+ config DEBUG_BCM53XX -+ bool "Kernel low-level debugging on BCM53XX UART1" -+ depends on ARCH_BCM53XX -+ - config DEBUG_CLPS711X_UART1 - bool "Kernel low-level debugging messages via UART1" - depends on ARCH_CLPS711X -@@ -620,6 +624,7 @@ endchoice - config DEBUG_LL_INCLUDE - string - default "debug/bcm2835.S" if DEBUG_BCM2835 -+ default "debug/bcm53xx.S" if DEBUG_BCM53XX - default "debug/cns3xxx.S" if DEBUG_CNS3XXX - default "debug/exynos.S" if DEBUG_EXYNOS_UART - default "debug/highbank.S" if DEBUG_HIGHBANK_UART ---- a/arch/arm/Makefile -+++ b/arch/arm/Makefile -@@ -145,6 +145,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x0020 - machine-$(CONFIG_ARCH_AT91) += at91 - machine-$(CONFIG_ARCH_BCM) += bcm - machine-$(CONFIG_ARCH_BCM2835) += bcm2835 -+machine-$(CONFIG_ARCH_BCM53XX) += bcm53xx - machine-$(CONFIG_ARCH_CLPS711X) += clps711x - machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx - machine-$(CONFIG_ARCH_DAVINCI) += davinci ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -209,6 +209,7 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07 - wm8650-mid.dtb \ - wm8850-w70v2.dtb - dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb -+dtb-$(CONFIG_ARCH_BCM53XX) += bcm5301-netgear-r6250.dtb - - targets += dtbs - targets += $(dtb-y) ---- /dev/null -+++ b/arch/arm/boot/dts/bcm5301-netgear-r6250.dts -@@ -0,0 +1,20 @@ -+/* -+ * Broadcom BCM47XX / BCM53XX arm platform code. -+ * -+ * Copyright 2013 Hauke Mehrtens -+ * -+ * Licensed under the GNU/GPL. See COPYING for details. -+ */ -+ -+/dts-v1/; -+ -+/include/ "bcm5301.dtsi" -+ -+/ { -+ model = "Netgear R6250 V1 (BCM4708)"; -+ compatible = "netgear,r6250v1", "brcm,bcm5301"; -+ -+ memory { -+ reg = <0x00000000 0x08000000>; -+ }; -+}; ---- /dev/null -+++ b/arch/arm/boot/dts/bcm5301.dtsi -@@ -0,0 +1,83 @@ -+/* -+ * Broadcom BCM47XX / BCM53XX ARM platform code. -+ * -+ * Copyright 2013 Hauke Mehrtens -+ * -+ * Licensed under the GNU/GPL. See COPYING for details. -+ */ -+ -+/include/ "skeleton.dtsi" -+ -+/ { -+ compatible = "brcm,bcm5301"; -+ model = "BCM5301/BCM4707/BCM4708/BCM4709 SoC"; -+ interrupt-parent = <&gic>; -+ -+ chosen { -+ bootargs = "console=ttyS0,115200 earlyprintk debug vmalloc=64M"; -+ }; -+ -+ cpus { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ cpu@0 { -+ device_type = "cpu"; -+ compatible = "arm,cortex-a9"; -+ reg = <0>; -+ }; -+ cpu@1 { -+ device_type = "cpu"; -+ compatible = "arm,cortex-a9"; -+ reg = <1>; -+ }; -+ }; -+ -+ clocks { -+ #address-cells = <1>; -+ #size-cells = <0>; -+ -+ clk_periph: periph { -+ compatible = "fixed-clock"; -+ #clock-cells = <0>; -+ clock-frequency = <400000000>; -+ }; -+ }; -+ -+ uart@18000300 { -+ compatible = "ns16550"; -+ reg = <0x18000300 0x100>; -+ interrupts = <0 85 4>; -+ clock-frequency = <100000000>; -+ }; -+ -+ uart@18000400 { -+ compatible = "ns16550"; -+ reg = <0x18000400 0x100>; -+ interrupts = <0 85 4>; -+ clock-frequency = <100000000>; -+ }; -+ -+ gic: interrupt-controller@19021000 { -+ compatible = "arm,cortex-a9-gic"; -+ #interrupt-cells = <3>; -+ #address-cells = <0>; -+ interrupt-controller; -+ reg = <0x19021000 0x1000>, -+ <0x19020100 0x100>; -+ }; -+ -+ timer@19020200 { -+ compatible = "arm,cortex-a9-global-timer"; -+ reg = <0x19020200 0x100>; -+ interrupts = <1 11 0xf04>; -+ clocks = <&clk_periph>; -+ #clock-cells = <0>; -+ }; -+ -+ local-timer@19020200 { -+ compatible = "arm,cortex-a9-twd-timer"; -+ reg = <0x19020600 0x100>; -+ interrupts = <1 13 0xf04>; -+ }; -+}; ---- /dev/null -+++ b/arch/arm/include/debug/bcm53xx.S -@@ -0,0 +1,19 @@ -+/* -+ * Macros used for EARLY_PRINTK, in low-level UART debug console -+ * -+ * Copyright 2013 Hauke Mehrtens -+ * -+ * Licensed under the GNU/GPL. See COPYING for details. -+ */ -+ -+#define BCM53XX_UART1_PHYS 0x18000300 -+#define BCM53XX_UART1_VIRT 0xf1000300 -+#define BCM53XX_UART1_SH 0 -+ -+ .macro addruart, rp, rv, tmp -+ ldr \rp, =BCM53XX_UART1_PHYS @ MMU off, Physical -+ ldr \rv, =BCM53XX_UART1_VIRT @ MMU on, Virtual -+ .endm -+ -+#define UART_SHIFT BCM53XX_UART1_SH -+#include ---- /dev/null -+++ b/arch/arm/mach-bcm53xx/Kconfig -@@ -0,0 +1,16 @@ -+config ARCH_BCM53XX -+ bool "Broadcom BCM47XX / BCM53XX ARM SoC" -+ select CPU_V7 -+ select ARM_GIC -+ select HAVE_ARM_SCU if SMP -+ select HAVE_ARM_TWD if LOCAL_TIMERS -+ select HAVE_SMP -+ select HAVE_CLK -+ select LOCAL_TIMERS if SMP -+ select GENERIC_TIME -+ select GENERIC_CLOCKEVENTS_BUILD -+ select GENERIC_CLOCKEVENTS -+ select ARM_GLOBAL_TIMER -+ select MIGHT_HAVE_PCI -+ help -+ Support for Broadcom BCM47XX and BCM53XX SoCs with ARM CPU cores. ---- /dev/null -+++ b/arch/arm/mach-bcm53xx/Makefile -@@ -0,0 +1 @@ -+obj-y += bcm53xx.o ---- /dev/null -+++ b/arch/arm/mach-bcm53xx/bcm53xx.c -@@ -0,0 +1,69 @@ -+/* -+ * Broadcom BCM47XX / BCM53XX ARM platform code. -+ * -+ * Copyright 2013 Hauke Mehrtens -+ * -+ * Licensed under the GNU/GPL. See COPYING for details. -+ */ -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+static int bcm53xx_abort_handler(unsigned long addr, unsigned int fsr, -+ struct pt_regs *regs) -+{ -+ /* -+ * These happen for no good reason -+ * possibly left over from CFE -+ */ -+ pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", -+ addr, fsr); -+ -+ /* Returning non-zero causes fault display and panic */ -+ return 0; -+} -+ -+static void bcm53xx_aborts_enable(void) -+{ -+ /* Install our hook */ -+ hook_fault_code(16 + 6, bcm53xx_abort_handler, SIGBUS, 0, -+ "imprecise external abort"); -+} -+ -+static void __init bcm53xx_timer_init(void) -+{ -+ of_clk_init(NULL); -+ clocksource_of_init(); -+} -+ -+void __init bcm53xx_map_io(void) -+{ -+ debug_ll_io_init(); -+ bcm53xx_aborts_enable(); -+} -+ -+static void __init bcm53xx_dt_init(void) -+{ -+ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); -+} -+ -+static const char const *bcm53xx_dt_compat[] = { -+ "brcm,bcm5301", -+ "netgear,r6250v1", -+ NULL, -+}; -+ -+DT_MACHINE_START(BCM53XX, "BCM53XX") -+ .init_machine = bcm53xx_dt_init, -+ .map_io = bcm53xx_map_io, -+ .init_irq = irqchip_init, -+ .init_time = bcm53xx_timer_init, -+ .dt_compat = bcm53xx_dt_compat, -+MACHINE_END diff --git a/target/linux/bcm53xx/patches-3.10/0009-bcma-register-bcma-as-device-tree-driver.patch b/target/linux/bcm53xx/patches-3.10/0009-bcma-register-bcma-as-device-tree-driver.patch deleted file mode 100644 index ede3af53d1..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0009-bcma-register-bcma-as-device-tree-driver.patch +++ /dev/null @@ -1,99 +0,0 @@ -From d16de2a4ffeaf62fb3d838365a29b80f330bffe0 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:26:58 +0200 -Subject: [PATCH 09/17] bcma: register bcma as device tree driver - -This driver is used by the bcm53xx ARM SoC code.Now it is possible to -give the address of the chipcommon core in device tree. - -Signed-off-by: Hauke Mehrtens ---- - drivers/bcma/host_soc.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 73 insertions(+) - ---- a/drivers/bcma/host_soc.c -+++ b/drivers/bcma/host_soc.c -@@ -7,6 +7,9 @@ - - #include "bcma_private.h" - #include "scan.h" -+#include -+#include -+#include - #include - #include - -@@ -181,3 +184,73 @@ int __init bcma_host_soc_register(struct - - return err; - } -+ -+#ifdef CONFIG_OF -+static int bcma_host_soc_probe(struct platform_device *pdev) -+{ -+ struct device *dev = &pdev->dev; -+ struct device_node *np = dev->of_node; -+ struct bcma_bus *bus; -+ int err; -+ -+ /* Alloc */ -+ bus = kzalloc(sizeof(*bus), GFP_KERNEL); -+ if (!bus) -+ return -ENOMEM; -+ -+ /* Map MMIO */ -+ err = -ENOMEM; -+ bus->mmio = of_iomap(np, 0); -+ if (!bus->mmio) -+ goto err_kfree_bus; -+ -+ /* Host specific */ -+ bus->hosttype = BCMA_HOSTTYPE_SOC; -+ bus->ops = &bcma_host_soc_ops; -+ -+ -+ /* Register */ -+ err = bcma_bus_register(bus); -+ if (err) -+ goto err_unmap_mmio; -+ -+ platform_set_drvdata(pdev, bus); -+ -+ return err; -+ -+err_unmap_mmio: -+ iounmap(bus->mmio); -+err_kfree_bus: -+ kfree(bus); -+ return err; -+} -+ -+static int bcma_host_soc_remove(struct platform_device *pdev) -+{ -+ struct bcma_bus *bus = platform_get_drvdata(pdev); -+ -+ bcma_bus_unregister(bus); -+ iounmap(bus->mmio); -+ kfree(bus); -+ platform_set_drvdata(pdev, NULL); -+ -+ return 0; -+} -+ -+static const struct of_device_id bcma_host_soc_of_match[] = { -+ { .compatible = "brcm,bus-aix", }, -+ {}, -+}; -+MODULE_DEVICE_TABLE(of, bcma_host_soc_of_match); -+ -+static struct platform_driver bcma_host_soc_driver = { -+ .driver = { -+ .name = "bcma-host-soc", -+ .owner = THIS_MODULE, -+ .of_match_table = bcma_host_soc_of_match, -+ }, -+ .probe = bcma_host_soc_probe, -+ .remove = bcma_host_soc_remove, -+}; -+module_platform_driver(bcma_host_soc_driver); -+#endif /* CONFIG_OF */ diff --git a/target/linux/bcm53xx/patches-3.10/0010-bcma-add-some-more-core-names.patch b/target/linux/bcm53xx/patches-3.10/0010-bcma-add-some-more-core-names.patch deleted file mode 100644 index aaedd59738..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0010-bcma-add-some-more-core-names.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 6fe4f63b017c3c0a7caa73d01fab23874ca0ed97 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:29:48 +0200 -Subject: [PATCH 10/17] bcma: add some more core names - -These cores were found on a BCM4708 (chipid 53010), this is a ARM SoC -with two Cortex A9 cores. - -Signed-off-by: Hauke Mehrtens ---- - drivers/bcma/scan.c | 12 ++++++++++++ - include/linux/bcma/bcma.h | 12 ++++++++++++ - 2 files changed, 24 insertions(+) - ---- a/drivers/bcma/scan.c -+++ b/drivers/bcma/scan.c -@@ -32,6 +32,18 @@ static const struct bcma_device_id_name - { BCMA_CORE_4706_CHIPCOMMON, "BCM4706 ChipCommon" }, - { BCMA_CORE_4706_SOC_RAM, "BCM4706 SOC RAM" }, - { BCMA_CORE_4706_MAC_GBIT, "BCM4706 GBit MAC" }, -+ { BCMA_CORE_PCIEG2, "PCIe Gen 2" }, -+ { BCMA_CORE_DMA, "DMA" }, -+ { BCMA_CORE_SDIO3, "SDIO3" }, -+ { BCMA_CORE_USB20, "USB 2.0" }, -+ { BCMA_CORE_USB30, "USB 3.0" }, -+ { BCMA_CORE_A9JTAG, "ARM Cortex A9 JTAG" }, -+ { BCMA_CORE_DDR23, "Denali DDR2/DDR3 memory controller" }, -+ { BCMA_CORE_ROM, "ROM" }, -+ { BCMA_CORE_NAND, "NAND flash controller" }, -+ { BCMA_CORE_QSPI, "SPI flash controller" }, -+ { BCMA_CORE_CHIPCOMMON_B, "Chipcommon B" }, -+ { BCMA_CORE_ARMCA9, "ARM Cortex A9 core (ihost)" }, - { BCMA_CORE_AMEMC, "AMEMC (DDR)" }, - { BCMA_CORE_ALTA, "ALTA (I2S)" }, - { BCMA_CORE_INVALID, "Invalid" }, ---- a/include/linux/bcma/bcma.h -+++ b/include/linux/bcma/bcma.h -@@ -72,7 +72,19 @@ struct bcma_host_ops { - /* Core-ID values. */ - #define BCMA_CORE_OOB_ROUTER 0x367 /* Out of band */ - #define BCMA_CORE_4706_CHIPCOMMON 0x500 -+#define BCMA_CORE_PCIEG2 0x501 -+#define BCMA_CORE_DMA 0x502 -+#define BCMA_CORE_SDIO3 0x503 -+#define BCMA_CORE_USB20 0x504 -+#define BCMA_CORE_USB30 0x505 -+#define BCMA_CORE_A9JTAG 0x506 -+#define BCMA_CORE_DDR23 0x507 -+#define BCMA_CORE_ROM 0x508 -+#define BCMA_CORE_NAND 0x509 -+#define BCMA_CORE_QSPI 0x50A -+#define BCMA_CORE_CHIPCOMMON_B 0x50B /* ChipcommonB core */ - #define BCMA_CORE_4706_SOC_RAM 0x50E -+#define BCMA_CORE_ARMCA9 0x510 - #define BCMA_CORE_4706_MAC_GBIT 0x52D - #define BCMA_CORE_AMEMC 0x52E /* DDR1/2 memory controller core */ - #define BCMA_CORE_ALTA 0x534 /* I2S core */ diff --git a/target/linux/bcm53xx/patches-3.10/0011-bcma-make-it-possible-to-select-SoC-support-without-.patch b/target/linux/bcm53xx/patches-3.10/0011-bcma-make-it-possible-to-select-SoC-support-without-.patch deleted file mode 100644 index 1059436ee6..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0011-bcma-make-it-possible-to-select-SoC-support-without-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b5f4430c100a4d7b526426db46b76add728f45d4 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:35:22 +0200 -Subject: [PATCH 11/17] bcma: make it possible to select SoC support without - mips - -To make it possible to use the SoC host interface with ARM SoCs do not -depend on the MIPS driver any more. - -Signed-off-by: Hauke Mehrtens ---- - drivers/bcma/Kconfig | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - ---- a/drivers/bcma/Kconfig -+++ b/drivers/bcma/Kconfig -@@ -36,8 +36,14 @@ config BCMA_DRIVER_PCI_HOSTMODE - PCI core hostmode operation (external PCI bus). - - config BCMA_HOST_SOC -- bool -- depends on BCMA_DRIVER_MIPS -+ bool "Support for BCMA in a SoC" -+ depends on BCMA -+ help -+ Host interface for a Broadcom AIX bus directly mapped into -+ the memory. This only works with the Broadcom SoCs from the -+ BCM47XX line. -+ -+ If unsure, say N - - config BCMA_DRIVER_MIPS - bool "BCMA Broadcom MIPS core driver" diff --git a/target/linux/bcm53xx/patches-3.10/0012-bcm53xx-register-bcma-bus.patch b/target/linux/bcm53xx/patches-3.10/0012-bcm53xx-register-bcma-bus.patch deleted file mode 100644 index 5e18b871e8..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0012-bcm53xx-register-bcma-bus.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 5b9be5e1e3c368466e482c7dbb2cf6b890614b39 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:37:13 +0200 -Subject: [PATCH 12/17] bcm53xx: register bcma bus - -Signed-off-by: Hauke Mehrtens ---- - arch/arm/boot/dts/bcm5301.dtsi | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/arch/arm/boot/dts/bcm5301.dtsi -+++ b/arch/arm/boot/dts/bcm5301.dtsi -@@ -67,6 +67,11 @@ - <0x19020100 0x100>; - }; - -+ bus@18000000 { -+ compatible = "brcm,bus-aix"; -+ reg = <0x18000000 0x1000>; -+ }; -+ - timer@19020200 { - compatible = "arm,cortex-a9-global-timer"; - reg = <0x19020200 0x100>; diff --git a/target/linux/bcm53xx/patches-3.10/0013-bcma-add-constants-for-new-ARM-based-SoCs.patch b/target/linux/bcm53xx/patches-3.10/0013-bcma-add-constants-for-new-ARM-based-SoCs.patch deleted file mode 100644 index 9789d72ae2..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0013-bcma-add-constants-for-new-ARM-based-SoCs.patch +++ /dev/null @@ -1,26 +0,0 @@ -From fda36440e95ef9adbd7955b069248d1d807a85b1 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:48:25 +0200 -Subject: [PATCH 13/17] bcma: add constants for new ARM based SoCs - -These are the chipIDs of some ARM based SoCs from the BCM47xx line. - -Signed-off-by: Hauke Mehrtens ---- - include/linux/bcma/bcma.h | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/include/linux/bcma/bcma.h -+++ b/include/linux/bcma/bcma.h -@@ -189,6 +189,11 @@ struct bcma_host_ops { - #define BCMA_PKG_ID_BCM5357 11 - #define BCMA_CHIP_ID_BCM53572 53572 - #define BCMA_PKG_ID_BCM47188 9 -+#define BCMA_CHIP_ID_BCM4707 53010 -+#define BCMA_PKG_ID_BCM4707 1 -+#define BCMA_PKG_ID_BCM4708 2 -+#define BCMA_PKG_ID_BCM4709 0 -+#define BCMA_CHIP_ID_BCM53018 53018 - - /* Board types (on PCI usually equals to the subsystem dev id) */ - /* BCM4313 */ diff --git a/target/linux/bcm53xx/patches-3.10/0014-bcma-return-correct-error-code-when-bus-can-failed.patch b/target/linux/bcm53xx/patches-3.10/0014-bcma-return-correct-error-code-when-bus-can-failed.patch deleted file mode 100644 index 0fe1067a6e..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0014-bcma-return-correct-error-code-when-bus-can-failed.patch +++ /dev/null @@ -1,21 +0,0 @@ -From e2e1b185afd86a047e1f2db405c61ae4e43c0f29 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 4 Jul 2013 22:49:14 +0200 -Subject: [PATCH 14/17] bcma: return correct error code when bus can failed - -Signed-off-by: Hauke Mehrtens ---- - drivers/bcma/main.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/bcma/main.c -+++ b/drivers/bcma/main.c -@@ -237,7 +237,7 @@ int bcma_bus_register(struct bcma_bus *b - err = bcma_bus_scan(bus); - if (err) { - bcma_err(bus, "Failed to scan: %d\n", err); -- return -1; -+ return err; - } - - /* Early init CC core */ diff --git a/target/linux/bcm53xx/patches-3.10/0015-bcma-fix-handling-of-big-addrl.patch b/target/linux/bcm53xx/patches-3.10/0015-bcma-fix-handling-of-big-addrl.patch deleted file mode 100644 index 6a76f5d716..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0015-bcma-fix-handling-of-big-addrl.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 8204277ed0f4aeb7bb38d0d5f39d9ebcced92576 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Fri, 5 Jul 2013 00:24:38 +0200 -Subject: [PATCH 15/17] bcma: fix handling of big addrl - -The return value of bcma_erom_get_addr_desc() is a unsigned value and it -could wrap around in the two complement writing. - -Signed-off-by: Hauke Mehrtens ---- - drivers/bcma/scan.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - ---- a/drivers/bcma/scan.c -+++ b/drivers/bcma/scan.c -@@ -213,7 +213,7 @@ static s32 bcma_erom_get_mst_port(struct - return ent; - } - --static s32 bcma_erom_get_addr_desc(struct bcma_bus *bus, u32 __iomem **eromptr, -+static u32 bcma_erom_get_addr_desc(struct bcma_bus *bus, u32 __iomem **eromptr, - u32 type, u8 port) - { - u32 addrl, addrh, sizel, sizeh = 0; -@@ -225,7 +225,7 @@ static s32 bcma_erom_get_addr_desc(struc - ((ent & SCAN_ADDR_TYPE) != type) || - (((ent & SCAN_ADDR_PORT) >> SCAN_ADDR_PORT_SHIFT) != port)) { - bcma_erom_push_ent(eromptr); -- return -EINVAL; -+ return (u32)-EINVAL; - } - - addrl = ent & SCAN_ADDR_ADDR; -@@ -273,7 +273,7 @@ static int bcma_get_next_core(struct bcm - struct bcma_device_id *match, int core_num, - struct bcma_device *core) - { -- s32 tmp; -+ u32 tmp; - u8 i, j; - s32 cia, cib; - u8 ports[2], wrappers[2]; -@@ -351,11 +351,11 @@ static int bcma_get_next_core(struct bcm - * the main register space for the core - */ - tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0); -- if (tmp <= 0) { -+ if (tmp == 0 || IS_ERR_VALUE(tmp)) { - /* Try again to see if it is a bridge */ - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_BRIDGE, 0); -- if (tmp <= 0) { -+ if (tmp == 0 || IS_ERR_VALUE(tmp)) { - return -EILSEQ; - } else { - bcma_info(bus, "Bridge found\n"); -@@ -369,7 +369,7 @@ static int bcma_get_next_core(struct bcm - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_SLAVE, i); -- if (tmp < 0) { -+ if (IS_ERR_VALUE(tmp)) { - /* no more entries for port _i_ */ - /* pr_debug("erom: slave port %d " - * "has %d descriptors\n", i, j); */ -@@ -386,7 +386,7 @@ static int bcma_get_next_core(struct bcm - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_MWRAP, i); -- if (tmp < 0) { -+ if (IS_ERR_VALUE(tmp)) { - /* no more entries for port _i_ */ - /* pr_debug("erom: master wrapper %d " - * "has %d descriptors\n", i, j); */ -@@ -404,7 +404,7 @@ static int bcma_get_next_core(struct bcm - for (j = 0; ; j++) { - tmp = bcma_erom_get_addr_desc(bus, eromptr, - SCAN_ADDR_TYPE_SWRAP, i + hack); -- if (tmp < 0) { -+ if (IS_ERR_VALUE(tmp)) { - /* no more entries for port _i_ */ - /* pr_debug("erom: master wrapper %d " - * has %d descriptors\n", i, j); */ diff --git a/target/linux/bcm53xx/patches-3.10/0016-bgmac-bgmac-depends-on-phylib.patch b/target/linux/bcm53xx/patches-3.10/0016-bgmac-bgmac-depends-on-phylib.patch deleted file mode 100644 index 5c79720dff..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0016-bgmac-bgmac-depends-on-phylib.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0cf467765b64f6dc60f95c890cdb1641ae1d9390 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 10 Jul 2013 17:54:33 +0200 -Subject: [PATCH 16/17] bgmac: bgmac depends on phylib - -bgmac is using functions from phylib, add the dependency. - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/Kconfig | 1 + - 1 file changed, 1 insertion(+) - ---- a/drivers/net/ethernet/broadcom/Kconfig -+++ b/drivers/net/ethernet/broadcom/Kconfig -@@ -133,6 +133,7 @@ config BNX2X_SRIOV - config BGMAC - tristate "BCMA bus GBit core support" - depends on BCMA_HOST_SOC && HAS_DMA -+ select PHYLIB - ---help--- - This driver supports GBit MAC and BCM4706 GBit MAC cores on BCMA bus. - They can be found on BCM47xx SoCs and provide gigabit ethernet. diff --git a/target/linux/bcm53xx/patches-3.10/0017-bgmac-make-bgmac-work-on-systems-without-nvram.patch b/target/linux/bcm53xx/patches-3.10/0017-bgmac-make-bgmac-work-on-systems-without-nvram.patch deleted file mode 100644 index 33ff0ef715..0000000000 --- a/target/linux/bcm53xx/patches-3.10/0017-bgmac-make-bgmac-work-on-systems-without-nvram.patch +++ /dev/null @@ -1,25 +0,0 @@ -From a0c7d2569ed39b8b0d90a431d80babc0f5f1f864 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 10 Jul 2013 17:55:34 +0200 -Subject: [PATCH 17/17] bgmac: make bgmac work on systems without nvram - - -Signed-off-by: Hauke Mehrtens ---- - drivers/net/ethernet/broadcom/bgmac.c | 4 ++++ - 1 file changed, 4 insertions(+) - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -16,7 +16,11 @@ - #include - #include - #include -+#ifdef CONFIG_BCM47XX - #include -+#else -+#define bcm47xx_nvram_getenv(a, b, c) -1 -+#endif - - static const struct bcma_device_id bgmac_bcma_tbl[] = { - BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_4706_MAC_GBIT, BCMA_ANY_REV, BCMA_ANY_CLASS), diff --git a/target/linux/bcm53xx/patches-3.10/051-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch b/target/linux/bcm53xx/patches-3.10/051-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch new file mode 100644 index 0000000000..3760b0c85b --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/051-bcm53xx-initial-support-for-the-BCM5301-BCM470X-SoC-.patch @@ -0,0 +1,305 @@ +bcm53xx: initial support for the BCM5301/BCM470X SoC + with ARM CPU + +This patch adds support for the BCM5301/BCM470X SoCs with an ARM CPU. +Currently just booting to a shell is working and nothing else, no +Ethernet, wifi, flash, ... + +Signed-off-by: Hauke Mehrtens +--- + arch/arm/Kconfig | 2 + + arch/arm/Kconfig.debug | 5 ++ + arch/arm/Makefile | 1 + + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/bcm5301-netgear-r6250.dts | 20 +++++++ + arch/arm/boot/dts/bcm5301.dtsi | 83 +++++++++++++++++++++++++++ + arch/arm/include/debug/bcm53xx.S | 19 ++++++ + arch/arm/mach-bcm53xx/Kconfig | 15 +++++ + arch/arm/mach-bcm53xx/Makefile | 1 + + arch/arm/mach-bcm53xx/bcm53xx.c | 69 ++++++++++++++++++++++ + 10 files changed, 216 insertions(+) + create mode 100644 arch/arm/boot/dts/bcm5301-netgear-r6250.dts + create mode 100644 arch/arm/boot/dts/bcm5301.dtsi + create mode 100644 arch/arm/include/debug/bcm53xx.S + create mode 100644 arch/arm/mach-bcm53xx/Kconfig + create mode 100644 arch/arm/mach-bcm53xx/Makefile + create mode 100644 arch/arm/mach-bcm53xx/bcm53xx.c + +--- a/arch/arm/Kconfig ++++ b/arch/arm/Kconfig +@@ -922,6 +922,8 @@ source "arch/arm/mach-bcm/Kconfig" + + source "arch/arm/mach-bcm2835/Kconfig" + ++source "arch/arm/mach-bcm53xx/Kconfig" ++ + source "arch/arm/mach-clps711x/Kconfig" + + source "arch/arm/mach-cns3xxx/Kconfig" +--- a/arch/arm/Kconfig.debug ++++ b/arch/arm/Kconfig.debug +@@ -93,6 +93,10 @@ choice + bool "Kernel low-level debugging on BCM2835 PL011 UART" + depends on ARCH_BCM2835 + ++ config DEBUG_BCM53XX ++ bool "Kernel low-level debugging on BCM53XX UART1" ++ depends on ARCH_BCM53XX ++ + config DEBUG_CLPS711X_UART1 + bool "Kernel low-level debugging messages via UART1" + depends on ARCH_CLPS711X +@@ -620,6 +624,7 @@ endchoice + config DEBUG_LL_INCLUDE + string + default "debug/bcm2835.S" if DEBUG_BCM2835 ++ default "debug/bcm53xx.S" if DEBUG_BCM53XX + default "debug/cns3xxx.S" if DEBUG_CNS3XXX + default "debug/exynos.S" if DEBUG_EXYNOS_UART + default "debug/highbank.S" if DEBUG_HIGHBANK_UART +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -145,6 +145,7 @@ textofs-$(CONFIG_ARCH_MSM8960) := 0x0020 + machine-$(CONFIG_ARCH_AT91) += at91 + machine-$(CONFIG_ARCH_BCM) += bcm + machine-$(CONFIG_ARCH_BCM2835) += bcm2835 ++machine-$(CONFIG_ARCH_BCM53XX) += bcm53xx + machine-$(CONFIG_ARCH_CLPS711X) += clps711x + machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx + machine-$(CONFIG_ARCH_DAVINCI) += davinci +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -209,6 +209,7 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07 + wm8650-mid.dtb \ + wm8850-w70v2.dtb + dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb ++dtb-$(CONFIG_ARCH_BCM53XX) += bcm5301-netgear-r6250.dtb + + targets += dtbs + targets += $(dtb-y) +--- /dev/null ++++ b/arch/arm/boot/dts/bcm5301-netgear-r6250.dts +@@ -0,0 +1,20 @@ ++/* ++ * Broadcom BCM47XX / BCM53XX arm platform code. ++ * ++ * Copyright 2013 Hauke Mehrtens ++ * ++ * Licensed under the GNU/GPL. See COPYING for details. ++ */ ++ ++/dts-v1/; ++ ++/include/ "bcm5301.dtsi" ++ ++/ { ++ model = "Netgear R6250 V1 (BCM4708)"; ++ compatible = "netgear,r6250v1", "brcm,bcm5301"; ++ ++ memory { ++ reg = <0x00000000 0x08000000>; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/bcm5301.dtsi +@@ -0,0 +1,83 @@ ++/* ++ * Broadcom BCM47XX / BCM53XX ARM platform code. ++ * ++ * Copyright 2013 Hauke Mehrtens ++ * ++ * Licensed under the GNU/GPL. See COPYING for details. ++ */ ++ ++/include/ "skeleton.dtsi" ++ ++/ { ++ compatible = "brcm,bcm5301"; ++ model = "BCM5301/BCM4707/BCM4708/BCM4709 SoC"; ++ interrupt-parent = <&gic>; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200 earlyprintk debug vmalloc=64M"; ++ }; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ reg = <0>; ++ }; ++ cpu@1 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a9"; ++ reg = <1>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ clk_periph: periph { ++ compatible = "fixed-clock"; ++ #clock-cells = <0>; ++ clock-frequency = <400000000>; ++ }; ++ }; ++ ++ uart@18000300 { ++ compatible = "ns16550"; ++ reg = <0x18000300 0x100>; ++ interrupts = <0 85 4>; ++ clock-frequency = <100000000>; ++ }; ++ ++ uart@18000400 { ++ compatible = "ns16550"; ++ reg = <0x18000400 0x100>; ++ interrupts = <0 85 4>; ++ clock-frequency = <100000000>; ++ }; ++ ++ gic: interrupt-controller@19021000 { ++ compatible = "arm,cortex-a9-gic"; ++ #interrupt-cells = <3>; ++ #address-cells = <0>; ++ interrupt-controller; ++ reg = <0x19021000 0x1000>, ++ <0x19020100 0x100>; ++ }; ++ ++ timer@19020200 { ++ compatible = "arm,cortex-a9-global-timer"; ++ reg = <0x19020200 0x100>; ++ interrupts = <1 11 0xf04>; ++ clocks = <&clk_periph>; ++ #clock-cells = <0>; ++ }; ++ ++ local-timer@19020200 { ++ compatible = "arm,cortex-a9-twd-timer"; ++ reg = <0x19020600 0x100>; ++ interrupts = <1 13 0xf04>; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/include/debug/bcm53xx.S +@@ -0,0 +1,19 @@ ++/* ++ * Macros used for EARLY_PRINTK, in low-level UART debug console ++ * ++ * Copyright 2013 Hauke Mehrtens ++ * ++ * Licensed under the GNU/GPL. See COPYING for details. ++ */ ++ ++#define BCM53XX_UART1_PHYS 0x18000300 ++#define BCM53XX_UART1_VIRT 0xf1000300 ++#define BCM53XX_UART1_SH 0 ++ ++ .macro addruart, rp, rv, tmp ++ ldr \rp, =BCM53XX_UART1_PHYS @ MMU off, Physical ++ ldr \rv, =BCM53XX_UART1_VIRT @ MMU on, Virtual ++ .endm ++ ++#define UART_SHIFT BCM53XX_UART1_SH ++#include +--- /dev/null ++++ b/arch/arm/mach-bcm53xx/Kconfig +@@ -0,0 +1,16 @@ ++config ARCH_BCM53XX ++ bool "Broadcom BCM47XX / BCM53XX ARM SoC" ++ select CPU_V7 ++ select ARM_GIC ++ select HAVE_ARM_SCU if SMP ++ select HAVE_ARM_TWD if LOCAL_TIMERS ++ select HAVE_SMP ++ select HAVE_CLK ++ select LOCAL_TIMERS if SMP ++ select GENERIC_TIME ++ select GENERIC_CLOCKEVENTS_BUILD ++ select GENERIC_CLOCKEVENTS ++ select ARM_GLOBAL_TIMER ++ select MIGHT_HAVE_PCI ++ help ++ Support for Broadcom BCM47XX and BCM53XX SoCs with ARM CPU cores. +--- /dev/null ++++ b/arch/arm/mach-bcm53xx/Makefile +@@ -0,0 +1 @@ ++obj-y += bcm53xx.o +--- /dev/null ++++ b/arch/arm/mach-bcm53xx/bcm53xx.c +@@ -0,0 +1,69 @@ ++/* ++ * Broadcom BCM47XX / BCM53XX ARM platform code. ++ * ++ * Copyright 2013 Hauke Mehrtens ++ * ++ * Licensed under the GNU/GPL. See COPYING for details. ++ */ ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++ ++static int bcm53xx_abort_handler(unsigned long addr, unsigned int fsr, ++ struct pt_regs *regs) ++{ ++ /* ++ * These happen for no good reason ++ * possibly left over from CFE ++ */ ++ pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n", ++ addr, fsr); ++ ++ /* Returning non-zero causes fault display and panic */ ++ return 0; ++} ++ ++static void bcm53xx_aborts_enable(void) ++{ ++ /* Install our hook */ ++ hook_fault_code(16 + 6, bcm53xx_abort_handler, SIGBUS, 0, ++ "imprecise external abort"); ++} ++ ++static void __init bcm53xx_timer_init(void) ++{ ++ of_clk_init(NULL); ++ clocksource_of_init(); ++} ++ ++void __init bcm53xx_map_io(void) ++{ ++ debug_ll_io_init(); ++ bcm53xx_aborts_enable(); ++} ++ ++static void __init bcm53xx_dt_init(void) ++{ ++ of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); ++} ++ ++static const char const *bcm53xx_dt_compat[] = { ++ "brcm,bcm5301", ++ "netgear,r6250v1", ++ NULL, ++}; ++ ++DT_MACHINE_START(BCM53XX, "BCM53XX") ++ .init_machine = bcm53xx_dt_init, ++ .map_io = bcm53xx_map_io, ++ .init_irq = irqchip_init, ++ .init_time = bcm53xx_timer_init, ++ .dt_compat = bcm53xx_dt_compat, ++MACHINE_END diff --git a/target/linux/bcm53xx/patches-3.10/052-bcm53xx-register-bcma-bus.patch b/target/linux/bcm53xx/patches-3.10/052-bcm53xx-register-bcma-bus.patch new file mode 100644 index 0000000000..86b536ea17 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/052-bcm53xx-register-bcma-bus.patch @@ -0,0 +1,21 @@ +bcm53xx: register bcma bus + +Signed-off-by: Hauke Mehrtens +--- + arch/arm/boot/dts/bcm5301.dtsi | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/arch/arm/boot/dts/bcm5301.dtsi ++++ b/arch/arm/boot/dts/bcm5301.dtsi +@@ -67,6 +67,11 @@ + <0x19020100 0x100>; + }; + ++ bus@18000000 { ++ compatible = "brcm,bus-aix"; ++ reg = <0x18000000 0x1000>; ++ }; ++ + timer@19020200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x19020200 0x100>; diff --git a/target/linux/bcm53xx/patches-3.10/101-bcma-add-some-more-core-names.patch b/target/linux/bcm53xx/patches-3.10/101-bcma-add-some-more-core-names.patch new file mode 100644 index 0000000000..64bf3435b1 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/101-bcma-add-some-more-core-names.patch @@ -0,0 +1,73 @@ +bcma: add some more core names + +These cores were found on a BCM4708 (chipid 53010), this is a ARM SoC +with two Cortex A9 cores. + +bcma: bus0: Found chip with id 0xCF12, rev 0x00 and package 0x02 +bcma: bus0: Core 0 found: ChipCommon (manuf 0x4BF, id 0x800, rev 0x2A, class 0x0) +bcma: bus0: Core 1 found: DMA (manuf 0x4BF, id 0x502, rev 0x01, class 0x0) +bcma: bus0: Core 2 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x04, class 0x0) +bcma: bus0: Core 3 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x04, class 0x0) +bcma: bus0: Core 4 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x04, class 0x0) +bcma: bus0: Core 5 found: GBit MAC (manuf 0x4BF, id 0x82D, rev 0x04, class 0x0) +bcma: bus0: Core 6 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0) +bcma: bus0: Core 7 found: PCIe Gen 2 (manuf 0x4BF, id 0x501, rev 0x01, class 0x0) +bcma: bus0: Core 8 found: ARM Cortex A9 core (ihost) (manuf 0x4BF, id 0x510, rev 0x01, class 0x0) +bcma: bus0: Core 9 found: USB 2.0 (manuf 0x4BF, id 0x504, rev 0x01, class 0x0) +bcma: bus0: Core 10 found: USB 3.0 (manuf 0x4BF, id 0x505, rev 0x01, class 0x0) +bcma: bus0: Core 11 found: SDIO3 (manuf 0x4BF, id 0x503, rev 0x01, class 0x0) +bcma: bus0: Core 12 found: ARM Cortex A9 JTAG (manuf 0x4BF, id 0x506, rev 0x01, class 0x0) +bcma: bus0: Core 13 found: Denali DDR2/DDR3 memory controller (manuf 0x4BF, id 0x507, rev 0x01, class 0x0) +bcma: bus0: Core 14 found: ROM (manuf 0x4BF, id 0x508, rev 0x01, class 0x0) +bcma: bus0: Core 15 found: NAND flash controller (manuf 0x4BF, id 0x509, rev 0x01, class 0x0) +bcma: bus0: Core 16 found: SPI flash controller (manuf 0x4BF, id 0x50A, rev 0x01, class 0x0) + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/scan.c | 12 ++++++++++++ + include/linux/bcma/bcma.h | 12 ++++++++++++ + 2 files changed, 24 insertions(+) + +--- a/drivers/bcma/scan.c ++++ b/drivers/bcma/scan.c +@@ -32,6 +32,18 @@ static const struct bcma_device_id_name + { BCMA_CORE_4706_CHIPCOMMON, "BCM4706 ChipCommon" }, + { BCMA_CORE_4706_SOC_RAM, "BCM4706 SOC RAM" }, + { BCMA_CORE_4706_MAC_GBIT, "BCM4706 GBit MAC" }, ++ { BCMA_CORE_PCIEG2, "PCIe Gen 2" }, ++ { BCMA_CORE_DMA, "DMA" }, ++ { BCMA_CORE_SDIO3, "SDIO3" }, ++ { BCMA_CORE_USB20, "USB 2.0" }, ++ { BCMA_CORE_USB30, "USB 3.0" }, ++ { BCMA_CORE_A9JTAG, "ARM Cortex A9 JTAG" }, ++ { BCMA_CORE_DDR23, "Denali DDR2/DDR3 memory controller" }, ++ { BCMA_CORE_ROM, "ROM" }, ++ { BCMA_CORE_NAND, "NAND flash controller" }, ++ { BCMA_CORE_QSPI, "SPI flash controller" }, ++ { BCMA_CORE_CHIPCOMMON_B, "Chipcommon B" }, ++ { BCMA_CORE_ARMCA9, "ARM Cortex A9 core (ihost)" }, + { BCMA_CORE_AMEMC, "AMEMC (DDR)" }, + { BCMA_CORE_ALTA, "ALTA (I2S)" }, + { BCMA_CORE_INVALID, "Invalid" }, +--- a/include/linux/bcma/bcma.h ++++ b/include/linux/bcma/bcma.h +@@ -72,7 +72,19 @@ struct bcma_host_ops { + /* Core-ID values. */ + #define BCMA_CORE_OOB_ROUTER 0x367 /* Out of band */ + #define BCMA_CORE_4706_CHIPCOMMON 0x500 ++#define BCMA_CORE_PCIEG2 0x501 ++#define BCMA_CORE_DMA 0x502 ++#define BCMA_CORE_SDIO3 0x503 ++#define BCMA_CORE_USB20 0x504 ++#define BCMA_CORE_USB30 0x505 ++#define BCMA_CORE_A9JTAG 0x506 ++#define BCMA_CORE_DDR23 0x507 ++#define BCMA_CORE_ROM 0x508 ++#define BCMA_CORE_NAND 0x509 ++#define BCMA_CORE_QSPI 0x50A ++#define BCMA_CORE_CHIPCOMMON_B 0x50B /* ChipcommonB core */ + #define BCMA_CORE_4706_SOC_RAM 0x50E ++#define BCMA_CORE_ARMCA9 0x510 + #define BCMA_CORE_4706_MAC_GBIT 0x52D + #define BCMA_CORE_AMEMC 0x52E /* DDR1/2 memory controller core */ + #define BCMA_CORE_ALTA 0x534 /* I2S core */ diff --git a/target/linux/bcm53xx/patches-3.10/102-bcma-make-it-possible-to-select-SoC-support-without-.patch b/target/linux/bcm53xx/patches-3.10/102-bcma-make-it-possible-to-select-SoC-support-without-.patch new file mode 100644 index 0000000000..4d0fd5f408 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/102-bcma-make-it-possible-to-select-SoC-support-without-.patch @@ -0,0 +1,29 @@ +bcma: make it possible to select SoC support without mips + +To make it possible to use the SoC host interface with ARM SoCs do not +depend on the MIPS driver any more. + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/Kconfig | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +--- a/drivers/bcma/Kconfig ++++ b/drivers/bcma/Kconfig +@@ -36,8 +36,14 @@ config BCMA_DRIVER_PCI_HOSTMODE + PCI core hostmode operation (external PCI bus). + + config BCMA_HOST_SOC +- bool +- depends on BCMA_DRIVER_MIPS ++ bool "Support for BCMA in a SoC" ++ depends on BCMA ++ help ++ Host interface for a Broadcom AIX bus directly mapped into ++ the memory. This only works with the Broadcom SoCs from the ++ BCM47XX line. ++ ++ If unsure, say N + + config BCMA_DRIVER_MIPS + bool "BCMA Broadcom MIPS core driver" diff --git a/target/linux/bcm53xx/patches-3.10/103-bcma-add-constants-for-new-ARM-based-SoCs.patch b/target/linux/bcm53xx/patches-3.10/103-bcma-add-constants-for-new-ARM-based-SoCs.patch new file mode 100644 index 0000000000..6714533c0b --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/103-bcma-add-constants-for-new-ARM-based-SoCs.patch @@ -0,0 +1,23 @@ +bcma: add constants for new ARM based SoCs + +These are the chipIDs of some ARM based SoCs from the BCM47xx line. + +Signed-off-by: Hauke Mehrtens +--- + include/linux/bcma/bcma.h | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/include/linux/bcma/bcma.h ++++ b/include/linux/bcma/bcma.h +@@ -189,6 +189,11 @@ struct bcma_host_ops { + #define BCMA_PKG_ID_BCM5357 11 + #define BCMA_CHIP_ID_BCM53572 53572 + #define BCMA_PKG_ID_BCM47188 9 ++#define BCMA_CHIP_ID_BCM4707 53010 ++#define BCMA_PKG_ID_BCM4707 1 ++#define BCMA_PKG_ID_BCM4708 2 ++#define BCMA_PKG_ID_BCM4709 0 ++#define BCMA_CHIP_ID_BCM53018 53018 + + /* Board types (on PCI usually equals to the subsystem dev id) */ + /* BCM4313 */ diff --git a/target/linux/bcm53xx/patches-3.10/104-bcma-return-correct-error-code-when-bus-scan-failed.patch b/target/linux/bcm53xx/patches-3.10/104-bcma-return-correct-error-code-when-bus-scan-failed.patch new file mode 100644 index 0000000000..c6e8aca62a --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/104-bcma-return-correct-error-code-when-bus-scan-failed.patch @@ -0,0 +1,20 @@ +bcma: return correct error code when bus scan failed + +It is better to return the actual error code than just -1. + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/bcma/main.c ++++ b/drivers/bcma/main.c +@@ -237,7 +237,7 @@ int bcma_bus_register(struct bcma_bus *b + err = bcma_bus_scan(bus); + if (err) { + bcma_err(bus, "Failed to scan: %d\n", err); +- return -1; ++ return err; + } + + /* Early init CC core */ diff --git a/target/linux/bcm53xx/patches-3.10/105-bcma-fix-handling-of-big-addrl.patch b/target/linux/bcm53xx/patches-3.10/105-bcma-fix-handling-of-big-addrl.patch new file mode 100644 index 0000000000..3d261b99e1 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/105-bcma-fix-handling-of-big-addrl.patch @@ -0,0 +1,81 @@ +bcma: fix handling of big addrl + +The return value of bcma_erom_get_addr_desc() is a unsigned value and it +could wrap around in the two complement writing. This happens for one +core in the BCM4708 SoC. + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/scan.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/bcma/scan.c ++++ b/drivers/bcma/scan.c +@@ -213,7 +213,7 @@ static s32 bcma_erom_get_mst_port(struct + return ent; + } + +-static s32 bcma_erom_get_addr_desc(struct bcma_bus *bus, u32 __iomem **eromptr, ++static u32 bcma_erom_get_addr_desc(struct bcma_bus *bus, u32 __iomem **eromptr, + u32 type, u8 port) + { + u32 addrl, addrh, sizel, sizeh = 0; +@@ -225,7 +225,7 @@ static s32 bcma_erom_get_addr_desc(struc + ((ent & SCAN_ADDR_TYPE) != type) || + (((ent & SCAN_ADDR_PORT) >> SCAN_ADDR_PORT_SHIFT) != port)) { + bcma_erom_push_ent(eromptr); +- return -EINVAL; ++ return (u32)-EINVAL; + } + + addrl = ent & SCAN_ADDR_ADDR; +@@ -273,7 +273,7 @@ static int bcma_get_next_core(struct bcm + struct bcma_device_id *match, int core_num, + struct bcma_device *core) + { +- s32 tmp; ++ u32 tmp; + u8 i, j; + s32 cia, cib; + u8 ports[2], wrappers[2]; +@@ -351,11 +351,11 @@ static int bcma_get_next_core(struct bcm + * the main register space for the core + */ + tmp = bcma_erom_get_addr_desc(bus, eromptr, SCAN_ADDR_TYPE_SLAVE, 0); +- if (tmp <= 0) { ++ if (tmp == 0 || IS_ERR_VALUE(tmp)) { + /* Try again to see if it is a bridge */ + tmp = bcma_erom_get_addr_desc(bus, eromptr, + SCAN_ADDR_TYPE_BRIDGE, 0); +- if (tmp <= 0) { ++ if (tmp == 0 || IS_ERR_VALUE(tmp)) { + return -EILSEQ; + } else { + bcma_info(bus, "Bridge found\n"); +@@ -369,7 +369,7 @@ static int bcma_get_next_core(struct bcm + for (j = 0; ; j++) { + tmp = bcma_erom_get_addr_desc(bus, eromptr, + SCAN_ADDR_TYPE_SLAVE, i); +- if (tmp < 0) { ++ if (IS_ERR_VALUE(tmp)) { + /* no more entries for port _i_ */ + /* pr_debug("erom: slave port %d " + * "has %d descriptors\n", i, j); */ +@@ -386,7 +386,7 @@ static int bcma_get_next_core(struct bcm + for (j = 0; ; j++) { + tmp = bcma_erom_get_addr_desc(bus, eromptr, + SCAN_ADDR_TYPE_MWRAP, i); +- if (tmp < 0) { ++ if (IS_ERR_VALUE(tmp)) { + /* no more entries for port _i_ */ + /* pr_debug("erom: master wrapper %d " + * "has %d descriptors\n", i, j); */ +@@ -404,7 +404,7 @@ static int bcma_get_next_core(struct bcm + for (j = 0; ; j++) { + tmp = bcma_erom_get_addr_desc(bus, eromptr, + SCAN_ADDR_TYPE_SWRAP, i + hack); +- if (tmp < 0) { ++ if (IS_ERR_VALUE(tmp)) { + /* no more entries for port _i_ */ + /* pr_debug("erom: master wrapper %d " + * has %d descriptors\n", i, j); */ diff --git a/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch b/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch new file mode 100644 index 0000000000..0077f90379 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/111-bcma-register-bcma-as-device-tree-driver.patch @@ -0,0 +1,96 @@ +bcma: register bcma as device tree driver + +This driver is used by the bcm53xx ARM SoC code.Now it is possible to +give the address of the chipcommon core in device tree. + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/host_soc.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 73 insertions(+) + +--- a/drivers/bcma/host_soc.c ++++ b/drivers/bcma/host_soc.c +@@ -7,6 +7,9 @@ + + #include "bcma_private.h" + #include "scan.h" ++#include ++#include ++#include + #include + #include + +@@ -181,3 +184,73 @@ int __init bcma_host_soc_register(struct + + return err; + } ++ ++#ifdef CONFIG_OF ++static int bcma_host_soc_probe(struct platform_device *pdev) ++{ ++ struct device *dev = &pdev->dev; ++ struct device_node *np = dev->of_node; ++ struct bcma_bus *bus; ++ int err; ++ ++ /* Alloc */ ++ bus = kzalloc(sizeof(*bus), GFP_KERNEL); ++ if (!bus) ++ return -ENOMEM; ++ ++ /* Map MMIO */ ++ err = -ENOMEM; ++ bus->mmio = of_iomap(np, 0); ++ if (!bus->mmio) ++ goto err_kfree_bus; ++ ++ /* Host specific */ ++ bus->hosttype = BCMA_HOSTTYPE_SOC; ++ bus->ops = &bcma_host_soc_ops; ++ ++ ++ /* Register */ ++ err = bcma_bus_register(bus); ++ if (err) ++ goto err_unmap_mmio; ++ ++ platform_set_drvdata(pdev, bus); ++ ++ return err; ++ ++err_unmap_mmio: ++ iounmap(bus->mmio); ++err_kfree_bus: ++ kfree(bus); ++ return err; ++} ++ ++static int bcma_host_soc_remove(struct platform_device *pdev) ++{ ++ struct bcma_bus *bus = platform_get_drvdata(pdev); ++ ++ bcma_bus_unregister(bus); ++ iounmap(bus->mmio); ++ kfree(bus); ++ platform_set_drvdata(pdev, NULL); ++ ++ return 0; ++} ++ ++static const struct of_device_id bcma_host_soc_of_match[] = { ++ { .compatible = "brcm,bus-aix", }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, bcma_host_soc_of_match); ++ ++static struct platform_driver bcma_host_soc_driver = { ++ .driver = { ++ .name = "bcma-host-soc", ++ .owner = THIS_MODULE, ++ .of_match_table = bcma_host_soc_of_match, ++ }, ++ .probe = bcma_host_soc_probe, ++ .remove = bcma_host_soc_remove, ++}; ++module_platform_driver(bcma_host_soc_driver); ++#endif /* CONFIG_OF */ diff --git a/target/linux/bcm53xx/patches-3.10/121-bcma-fix-dma-mask.patch b/target/linux/bcm53xx/patches-3.10/121-bcma-fix-dma-mask.patch new file mode 100644 index 0000000000..b695bc94aa --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/121-bcma-fix-dma-mask.patch @@ -0,0 +1,18 @@ +bcma: fix dma mask + + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/main.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/bcma/main.c ++++ b/drivers/bcma/main.c +@@ -155,6 +155,7 @@ static int bcma_register_cores(struct bc + core->irq = bus->host_pci->irq; + break; + case BCMA_HOSTTYPE_SOC: ++ core->dev.coherent_dma_mask = DMA_BIT_MASK(32); + core->dev.dma_mask = &core->dev.coherent_dma_mask; + core->dma_dev = &core->dev; + break; diff --git a/target/linux/bcm53xx/patches-3.10/122-bcma-add-arm-support.patch b/target/linux/bcm53xx/patches-3.10/122-bcma-add-arm-support.patch new file mode 100644 index 0000000000..1ce2013739 --- /dev/null +++ b/target/linux/bcm53xx/patches-3.10/122-bcma-add-arm-support.patch @@ -0,0 +1,156 @@ +bcma: add arm support + + +Signed-off-by: Hauke Mehrtens +--- + drivers/bcma/Kconfig | 9 +++++ + drivers/bcma/Makefile | 1 + + drivers/bcma/driver_arm.c | 61 ++++++++++++++++++++++++++++++++++ + drivers/bcma/main.c | 7 ++++ + include/linux/bcma/bcma.h | 2 ++ + include/linux/bcma/bcma_driver_arm.h | 20 +++++++++++ + 6 files changed, 100 insertions(+) + create mode 100644 drivers/bcma/driver_arm.c + create mode 100644 include/linux/bcma/bcma_driver_arm.h + +--- a/drivers/bcma/Kconfig ++++ b/drivers/bcma/Kconfig +@@ -54,6 +54,15 @@ config BCMA_DRIVER_MIPS + + If unsure, say N + ++config BCMA_DRIVER_ARM ++ bool "BCMA Broadcom ARM core driver" ++ depends on BCMA && ARM ++ help ++ Driver for the Broadcom MIPS core attached to Broadcom specific ++ Advanced Microcontroller Bus. ++ ++ If unsure, say N ++ + config BCMA_SFLASH + bool + depends on BCMA_DRIVER_MIPS +--- a/drivers/bcma/Makefile ++++ b/drivers/bcma/Makefile +@@ -5,6 +5,7 @@ bcma-$(CONFIG_BCMA_NFLASH) += driver_ch + bcma-y += driver_pci.o + bcma-$(CONFIG_BCMA_DRIVER_PCI_HOSTMODE) += driver_pci_host.o + bcma-$(CONFIG_BCMA_DRIVER_MIPS) += driver_mips.o ++bcma-$(CONFIG_BCMA_DRIVER_ARM) += driver_arm.o + bcma-$(CONFIG_BCMA_DRIVER_GMAC_CMN) += driver_gmac_cmn.o + bcma-$(CONFIG_BCMA_DRIVER_GPIO) += driver_gpio.o + bcma-$(CONFIG_BCMA_HOST_PCI) += host_pci.o +--- /dev/null ++++ b/drivers/bcma/driver_arm.c +@@ -0,0 +1,53 @@ ++/* ++ * Broadcom specific AMBA ++ * Broadcom MIPS32 74K core driver ++ * ++ * Copyright 2009, Broadcom Corporation ++ * Copyright 2006, 2007, Michael Buesch ++ * Copyright 2010, Bernhard Loos ++ * Copyright 2011, Hauke Mehrtens ++ * ++ * Licensed under the GNU/GPL. See COPYING for details. ++ */ ++ ++#include "bcma_private.h" ++ ++#include ++ ++static void bcma_core_mips_set_irq_name(struct bcma_bus *bus, unsigned int irq, ++ u16 coreid, u8 unit) ++{ ++ struct bcma_device *core; ++ ++ core = bcma_find_core_unit(bus, coreid, unit); ++ if (!core) { ++ bcma_warn(bus, ++ "Can not find core (id: 0x%x, unit %i) for IRQ configuration.\n", ++ coreid, unit); ++ return; ++ } ++ core->irq = irq; ++} ++ ++void bcma_core_arm_init(struct bcma_drv_arm *acore) ++{ ++ struct bcma_bus *bus; ++ struct bcma_device *core; ++ bus = acore->core->bus; ++ ++ if (acore->setup_done) ++ return; ++ ++ bcma_core_mips_set_irq_name(bus, 111, BCMA_CORE_USB20, 0); ++ ++ bcma_core_mips_set_irq_name(bus, 179, BCMA_CORE_MAC_GBIT, 0); ++ bcma_core_mips_set_irq_name(bus, 180, BCMA_CORE_MAC_GBIT, 1); ++ bcma_core_mips_set_irq_name(bus, 181, BCMA_CORE_MAC_GBIT, 2); ++ bcma_core_mips_set_irq_name(bus, 182, BCMA_CORE_MAC_GBIT, 3); ++ ++ bcma_core_mips_set_irq_name(bus, 112, BCMA_CORE_USB30, 0); ++ bcma_debug(bus, "IRQ reconfiguration done\n"); ++ ++ ++ acore->setup_done = true; ++} +--- a/drivers/bcma/main.c ++++ b/drivers/bcma/main.c +@@ -269,6 +269,13 @@ int bcma_bus_register(struct bcma_bus *b + bcma_core_mips_init(&bus->drv_mips); + } + ++ /* Init ARM core */ ++ core = bcma_find_core(bus, BCMA_CORE_ARMCA9); ++ if (core) { ++ bus->drv_arm.core = core; ++ bcma_core_arm_init(&bus->drv_arm); ++ } ++ + /* Init PCIE core */ + core = bcma_find_core_unit(bus, BCMA_CORE_PCIE, 0); + if (core) { +--- a/include/linux/bcma/bcma.h ++++ b/include/linux/bcma/bcma.h +@@ -7,6 +7,7 @@ + #include + #include + #include ++#include + #include + #include /* SPROM sharing */ + +@@ -334,6 +335,7 @@ struct bcma_bus { + struct bcma_drv_cc drv_cc; + struct bcma_drv_pci drv_pci[2]; + struct bcma_drv_mips drv_mips; ++ struct bcma_drv_arm drv_arm; + struct bcma_drv_gmac_cmn drv_gmac_cmn; + + /* We decided to share SPROM struct with SSB as long as we do not need +--- /dev/null ++++ b/include/linux/bcma/bcma_driver_arm.h +@@ -0,0 +1,20 @@ ++#ifndef LINUX_BCMA_DRIVER_ARM_H_ ++#define LINUX_BCMA_DRIVER_ARM_H_ ++ ++struct bcma_device; ++ ++struct bcma_drv_arm { ++ struct bcma_device *core; ++ u8 setup_done:1; ++ u8 early_setup_done:1; ++}; ++ ++#ifdef CONFIG_BCMA_DRIVER_ARM ++extern void bcma_core_arm_init(struct bcma_drv_arm *acore); ++ ++#else ++static inline void bcma_core_arm_init(struct bcma_drv_arm *acore) { } ++ ++#endif ++ ++#endif /* LINUX_BCMA_DRIVER_ARM_H_ */ diff --git a/target/linux/bcm53xx/patches-3.10/201-bgmac-add-dependency-to-phylib.patch b/target/linux/bcm53xx/patches-3.10/201-bgmac-add-dependency-to-phylib.patch index e4172ae59b..a0abae9c24 100644 --- a/target/linux/bcm53xx/patches-3.10/201-bgmac-add-dependency-to-phylib.patch +++ b/target/linux/bcm53xx/patches-3.10/201-bgmac-add-dependency-to-phylib.patch @@ -1,7 +1,4 @@ -From d29611892717def1628f2677f7b0bd6eb2c58565 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 10 Jul 2013 17:54:33 +0200 -Subject: [PATCH 16/18] bgmac: add dependency to phylib +bgmac: add dependency to phylib bgmac is using functions from phylib, add the dependency. diff --git a/target/linux/bcm53xx/patches-3.10/202-bgmac-make-bgmac-work-on-systems-without-nvram.patch b/target/linux/bcm53xx/patches-3.10/202-bgmac-make-bgmac-work-on-systems-without-nvram.patch index 4ebb942ec0..eda49b6416 100644 --- a/target/linux/bcm53xx/patches-3.10/202-bgmac-make-bgmac-work-on-systems-without-nvram.patch +++ b/target/linux/bcm53xx/patches-3.10/202-bgmac-make-bgmac-work-on-systems-without-nvram.patch @@ -1,7 +1,4 @@ -From e484cca2387df0878d55d8f3e8e4543aa668dd52 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 10 Jul 2013 17:55:34 +0200 -Subject: [PATCH 17/18] bgmac: make bgmac work on systems without nvram +bgmac: make bgmac work on systems without nvram Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm53xx/patches-3.10/203-bgmac-register-phy.patch b/target/linux/bcm53xx/patches-3.10/203-bgmac-register-phy.patch index 1bc267145e..4467d2365a 100644 --- a/target/linux/bcm53xx/patches-3.10/203-bgmac-register-phy.patch +++ b/target/linux/bcm53xx/patches-3.10/203-bgmac-register-phy.patch @@ -1,7 +1,4 @@ -From a145c561b9ba9ef402fbc3aa295b31521aa8591d Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Sun, 14 Jul 2013 00:04:21 +0200 -Subject: [PATCH 18/18] bgmac: register phy +bgmac: register phy Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/bcm53xx/patches-3.10/204-bgmac-add-supprot-for-BCM4707.patch b/target/linux/bcm53xx/patches-3.10/204-bgmac-add-supprot-for-BCM4707.patch index 7bbfa3f552..a14b57c602 100644 --- a/target/linux/bcm53xx/patches-3.10/204-bgmac-add-supprot-for-BCM4707.patch +++ b/target/linux/bcm53xx/patches-3.10/204-bgmac-add-supprot-for-BCM4707.patch @@ -1,7 +1,4 @@ -From 91c50931fd696fa8d2f9888482f89a6a0683fe6f Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 15 Jul 2013 22:22:25 +0200 -Subject: [PATCH 19/20] bgmac: add supprot for BCM4707 +bgmac: add supprot for BCM4707 Signed-off-by: Hauke Mehrtens -- cgit v1.2.3