From 930e3e7ca30c899d73390fcc8ade503bc249de37 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Fri, 1 Aug 2014 21:56:46 +0000 Subject: [PATCH] brcm63xx: add preliminary support for D-Link DSL-2751B E1 Mostly works except for USB led. Flashing not tested yet. Mostly as an example for the sprom fixup code. Fixup values taken from GPL tarball by comparing bcm43217_map.c with the struct in sprom.c. Signed-off-by: Jonas Gorski SVN-Revision: 41944 --- .../base-files/etc/uci-defaults/02_network | 1 + .../linux/brcm63xx/base-files/lib/brcm63xx.sh | 5 + ...0-BCM63XX-add-endian-check-for-ath9k.patch | 2 +- .../421-BCM63XX-add-led-pin-for-ath9k.patch | 2 +- .../patches-3.14/567-board_dsl-2751b_e1.patch | 152 ++++++++++++++++++ 5 files changed, 160 insertions(+), 2 deletions(-) create mode 100644 target/linux/brcm63xx/patches-3.14/567-board_dsl-2751b_e1.patch diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network index f4985c7d6e..3884e07136 100755 --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/02_network @@ -86,6 +86,7 @@ HW6358GW_B) 96368M-1341N |\ 96368M-1541N |\ 96368MVNgr |\ +AW5200B |\ "F@ST2504n" |\ "F@ST2704V2" |\ P870HW-51a_v2) diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh index 1bcd3b9329..58ce71ee16 100755 --- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh @@ -87,6 +87,11 @@ brcm63xx_detect() { brcm63xx_has_reset_button="true" ifname=eth0 ;; + AW5200B) + status_led="dsl-275xb:green:power" + brcm63xx_has_reset_button="true" + ifname=eth0 + ;; CPVA642) status_led="CPVA642:green:power:" brcm63xx_has_reset_button="true" diff --git a/target/linux/brcm63xx/patches-3.14/420-BCM63XX-add-endian-check-for-ath9k.patch b/target/linux/brcm63xx/patches-3.14/420-BCM63XX-add-endian-check-for-ath9k.patch index 2c85d34165..75694a0185 100644 --- a/target/linux/brcm63xx/patches-3.14/420-BCM63XX-add-endian-check-for-ath9k.patch +++ b/target/linux/brcm63xx/patches-3.14/420-BCM63XX-add-endian-check-for-ath9k.patch @@ -21,7 +21,7 @@ /* --- a/arch/mips/bcm63xx/pci-ath9k-fixup.c +++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c -@@ -184,12 +184,14 @@ static void ath9k_pci_fixup(struct pci_d +@@ -181,12 +181,14 @@ static void ath9k_pci_fixup(struct pci_d } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath9k_pci_fixup); diff --git a/target/linux/brcm63xx/patches-3.14/421-BCM63XX-add-led-pin-for-ath9k.patch b/target/linux/brcm63xx/patches-3.14/421-BCM63XX-add-led-pin-for-ath9k.patch index d720b5f3af..db0bed22a7 100644 --- a/target/linux/brcm63xx/patches-3.14/421-BCM63XX-add-led-pin-for-ath9k.patch +++ b/target/linux/brcm63xx/patches-3.14/421-BCM63XX-add-led-pin-for-ath9k.patch @@ -11,7 +11,7 @@ } --- a/arch/mips/bcm63xx/pci-ath9k-fixup.c +++ b/arch/mips/bcm63xx/pci-ath9k-fixup.c -@@ -185,13 +185,14 @@ static void ath9k_pci_fixup(struct pci_d +@@ -182,13 +182,14 @@ static void ath9k_pci_fixup(struct pci_d DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath9k_pci_fixup); void __init pci_enable_ath9k_fixup(unsigned slot, u32 offset, diff --git a/target/linux/brcm63xx/patches-3.14/567-board_dsl-2751b_e1.patch b/target/linux/brcm63xx/patches-3.14/567-board_dsl-2751b_e1.patch new file mode 100644 index 0000000000..4b31dd4a0e --- /dev/null +++ b/target/linux/brcm63xx/patches-3.14/567-board_dsl-2751b_e1.patch @@ -0,0 +1,152 @@ +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +@@ -263,6 +263,141 @@ static struct board_info __initdata boar + }, + }, + }; ++ ++static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = { ++ { .offset = 96, .value = 0x2046 }, ++ { .offset = 97, .value = 0xfe9d }, ++ { .offset = 98, .value = 0x1854 }, ++ { .offset = 99, .value = 0xfa59 }, ++ { .offset = 112, .value = 0x2046 }, ++ { .offset = 113, .value = 0xfe79 }, ++ { .offset = 114, .value = 0x17f5 }, ++ { .offset = 115, .value = 0xfa47 }, ++ { .offset = 161, .value = 0x2222 }, ++ { .offset = 162, .value = 0x2222 }, ++ { .offset = 169, .value = 0x2222 }, ++ { .offset = 170, .value = 0x2222 }, ++ { .offset = 171, .value = 0x5555 }, ++ { .offset = 172, .value = 0x5555 }, ++ { .offset = 173, .value = 0x4444 }, ++ { .offset = 174, .value = 0x4444 }, ++ { .offset = 175, .value = 0x5555 }, ++ { .offset = 176, .value = 0x5555 }, ++}; ++ ++static struct board_info __initdata board_dsl_2751b_d1 = { ++ .name = "AW5200B", ++ .expected_cpu_id = 0x6318, ++ ++ .has_uart0 = 1, ++ .has_pci = 1, ++ .use_fallback_sprom = 1, ++ ++ .has_enetsw = 1, ++ ++ .has_ohci0 = 1, ++ .has_ehci0 = 1, ++ .num_usbh_ports = 1, ++ ++ .enetsw = { ++ .used_ports = { ++ [0] = { ++ .used = 1, ++ .phy_id = 1, ++ .name = "Port 1", ++ }, ++ [1] = { ++ .used = 1, ++ .phy_id = 2, ++ .name = "Port 2", ++ }, ++ [2] = { ++ .used = 1, ++ .phy_id = 3, ++ .name = "Port 3", ++ }, ++ [3] = { ++ .used = 1, ++ .phy_id = 4, ++ .name = "Port 4", ++ }, ++ }, ++ }, ++ ++ .leds = { ++ { ++ .name = "dsl-275xb:green:power", ++ .gpio = 3, ++ .active_low = 1, ++ .default_trigger = "default-on", ++ }, ++ { ++ .name = "dsl-275xb:green:inet", ++ .gpio = 8, ++ .active_low = 1, ++ }, ++ { ++ .name = "dsl-275xb:red:inet-fail", ++ .gpio = 9, ++ .active_low = 1, ++ }, ++ { ++ .name = "dsl-275xb:red:post-failed", ++ .gpio = 11, ++ .active_low = 1, ++ }, ++ { ++ .name = "dsl-275xb:wps:blue", ++ .gpio = 16, ++ .active_low = 1, ++ }, ++ { ++ .name = "dsl-275xb:green:dsl", ++ .gpio = 17, ++ .active_low = 1, ++ }, ++ { ++ .name = "dsl-275xb:green:usb", ++ .gpio = 49, /* FIXME: does not work! */ ++ .active_low = 1, ++ }, ++ }, ++ ++ .buttons = { ++ { ++ .desc = "wlan", ++ .gpio = 2, ++ .active_low = 1, ++ .type = EV_KEY, ++ .code = KEY_WLAN, ++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, ++ }, ++ { ++ .desc = "wps", ++ .gpio = 33, ++ .active_low = 1, ++ .type = EV_KEY, ++ .code = KEY_WPS_BUTTON, ++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, ++ }, ++ { ++ .desc = "reset", ++ .gpio = 34, ++ .active_low = 1, ++ .type = EV_KEY, ++ .code = KEY_RESTART, ++ .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL, ++ }, ++ }, ++ ++ .fallback_sprom = { ++ .type = SPROM_BCM43217, ++ .pci_bus = 1, ++ .pci_dev = 0, ++ .board_fixups = dsl2751b_e1_fixups, ++ .num_board_fixups = ARRAY_SIZE(dsl2751b_e1_fixups), ++ }, ++}; + #endif + + /* +@@ -5264,6 +5399,7 @@ static const struct board_info __initcon + #ifdef CONFIG_BCM63XX_CPU_6318 + &board_96318ref, + &board_96318ref_p300, ++ &board_dsl_2751b_d1, + #endif + #ifdef CONFIG_BCM63XX_CPU_6328 + &board_96328avng, -- 2.30.2