1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-24 02:19:23 +02:00

Merge branch 'bcm63xx'

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30819 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
florian 2012-03-05 13:29:54 +00:00
parent 1b523918ff
commit 18982296c7
39 changed files with 733 additions and 292 deletions

View File

@ -0,0 +1,14 @@
# Copyright (C) 2008 OpenWrt.org
config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0
config interface lan
option type bridge
option ifname eth0
option proto static
option ipaddr 192.168.1.1
option netmask 255.255.255.0

View File

@ -13,7 +13,8 @@ do_fixcrc() {
brcm63xx_detect brcm63xx_detect
case "$board_name" in case "$board_name" in
"bcm63xx/CPVA642 "* | "bcm63xx/MAGIC "* | "bcm63xx/V2500V_BB "* | "bcm63xx/V2110 "*) "bcm63xx/CPVA642 "* | "bcm63xx/MAGIC "* | "bcm63xx/V2500V_BB "* | \
"bcm63xx/V2110 "* | "bcm63xx/CPVA502+ "*)
do_fixcrc do_fixcrc
;; ;;
esac esac

View File

@ -92,7 +92,7 @@
struct gpio_led leds[5]; struct gpio_led leds[5];
+ +
+ /* Buttons */ + /* Buttons */
+ struct gpio_button buttons[2]; + struct gpio_button buttons[4];
}; };
#endif /* ! BOARD_BCM963XX_H_ */ #endif /* ! BOARD_BCM963XX_H_ */

View File

@ -15,7 +15,7 @@
@@ -61,6 +61,10 @@ struct board_info { @@ -61,6 +61,10 @@ struct board_info {
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];
+ +
+ /* Additional platform devices */ + /* Additional platform devices */
+ struct platform_device **devs; + struct platform_device **devs;

View File

@ -29,12 +29,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:red", + .name = "adsl:green",
+ .gpio = 9, + .gpio = 9,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:green", + .name = "adsl:red",
+ .gpio = 10, + .gpio = 10,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -49,12 +49,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:red", + .name = "internet:green",
+ .gpio = 25, + .gpio = 25,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:green", + .name = "internet:red",
+ .gpio = 24, + .gpio = 24,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -110,4 +110,4 @@
+ struct gpio_led leds[14]; + struct gpio_led leds[14];
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];

View File

@ -0,0 +1,78 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1009,6 +1009,67 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_96348A_122 = {
+ .name = "96348A-122",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_ohci0 = 1,
+
+ .leds = {
+ {
+ .name = "power",
+ .gpio = 0,
+ .active_low = 1,
+ .default_trigger = "default-on",
+ },
+ {
+ .name = "alarm",
+ .gpio = 2,
+ .active_low = 1,
+ },
+ {
+ .name = "wps",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ },
+ .buttons = {
+ {
+ .desc = "reset",
+ .gpio = 33,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ },
+ {
+ .desc = "wifi",
+ .gpio = 34,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = BTN_0,
+ .threshold = 3,
+ },
+ {
+ .desc = "wps",
+ .gpio = 35,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .threshold = 3,
+ },
+ },
+};
+
#endif
/*
@@ -2068,6 +2129,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
+ &board_96348A_122,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -0,0 +1,10 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -704,6 +704,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
+ .has_uart0 = 1,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,

View File

@ -0,0 +1,55 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1071,6 +1071,44 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_CPVA502plus = {
+ .name = "CPVA502+",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_udc0 = 1,
+
+ .leds = {
+ {
+ .name = "phone",
+ .gpio = 0,
+ .active_low = 1,
+ },
+ {
+ .name = "link",
+ .gpio = 5,
+ .active_low = 1,
+ },
+ {
+ .name = "feth1", /* FIXME:does gpio4 enable eth1 phy? */
+ .gpio = 4,
+ .active_low = 1,
+ },
+ },
+};
#endif
/*
@@ -2131,6 +2169,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
+ &board_CPVA502plus,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2108,7 +2108,7 @@ static void __init nb4_nvram_fixup(void) @@ -2210,7 +2210,7 @@ static void __init nb4_nvram_fixup(void)
* bcm4318 WLAN work * bcm4318 WLAN work
*/ */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_PCIHOST
@ -9,7 +9,7 @@
.revision = 0x02, .revision = 0x02,
.board_rev = 0x17, .board_rev = 0x17,
.country_code = 0x0, .country_code = 0x0,
@@ -2128,6 +2128,7 @@ static struct ssb_sprom bcm63xx_sprom = @@ -2230,6 +2230,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848, .boardflags_lo = 0x2848,
.boardflags_hi = 0x0000, .boardflags_hi = 0x0000,
}; };

View File

@ -92,7 +92,7 @@
struct gpio_led leds[5]; struct gpio_led leds[5];
+ +
+ /* Buttons */ + /* Buttons */
+ struct gpio_button buttons[2]; + struct gpio_button buttons[4];
}; };
#endif /* ! BOARD_BCM963XX_H_ */ #endif /* ! BOARD_BCM963XX_H_ */

View File

@ -15,7 +15,7 @@
@@ -61,6 +61,10 @@ struct board_info { @@ -61,6 +61,10 @@ struct board_info {
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];
+ +
+ /* Additional platform devices */ + /* Additional platform devices */
+ struct platform_device **devs; + struct platform_device **devs;

View File

@ -29,12 +29,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:red", + .name = "adsl:green",
+ .gpio = 9, + .gpio = 9,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:green", + .name = "adsl:red",
+ .gpio = 10, + .gpio = 10,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -49,12 +49,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:red", + .name = "internet:green",
+ .gpio = 25, + .gpio = 25,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:green", + .name = "internet:red",
+ .gpio = 24, + .gpio = 24,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -110,4 +110,4 @@
+ struct gpio_led leds[14]; + struct gpio_led leds[14];
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];

View File

@ -0,0 +1,78 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1009,6 +1009,67 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_96348A_122 = {
+ .name = "96348A-122",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_ohci0 = 1,
+
+ .leds = {
+ {
+ .name = "power",
+ .gpio = 0,
+ .active_low = 1,
+ .default_trigger = "default-on",
+ },
+ {
+ .name = "alarm",
+ .gpio = 2,
+ .active_low = 1,
+ },
+ {
+ .name = "wps",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ },
+ .buttons = {
+ {
+ .desc = "reset",
+ .gpio = 33,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ },
+ {
+ .desc = "wifi",
+ .gpio = 34,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = BTN_0,
+ .threshold = 3,
+ },
+ {
+ .desc = "wps",
+ .gpio = 35,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .threshold = 3,
+ },
+ },
+};
+
#endif
/*
@@ -2068,6 +2129,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
+ &board_96348A_122,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -0,0 +1,10 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -704,6 +704,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
+ .has_uart0 = 1,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,

View File

@ -0,0 +1,55 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1071,6 +1071,44 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_CPVA502plus = {
+ .name = "CPVA502+",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_udc0 = 1,
+
+ .leds = {
+ {
+ .name = "phone",
+ .gpio = 0,
+ .active_low = 1,
+ },
+ {
+ .name = "link",
+ .gpio = 5,
+ .active_low = 1,
+ },
+ {
+ .name = "feth1", /* FIXME:does gpio4 enable eth1 phy? */
+ .gpio = 4,
+ .active_low = 1,
+ },
+ },
+};
#endif
/*
@@ -2131,6 +2169,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
+ &board_CPVA502plus,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2108,7 +2108,7 @@ static void __init nb4_nvram_fixup(void) @@ -2210,7 +2210,7 @@ static void __init nb4_nvram_fixup(void)
* bcm4318 WLAN work * bcm4318 WLAN work
*/ */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_PCIHOST
@ -9,7 +9,7 @@
.revision = 0x02, .revision = 0x02,
.board_rev = 0x17, .board_rev = 0x17,
.country_code = 0x0, .country_code = 0x0,
@@ -2128,6 +2128,7 @@ static struct ssb_sprom bcm63xx_sprom = @@ -2230,6 +2230,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848, .boardflags_lo = 0x2848,
.boardflags_hi = 0x0000, .boardflags_hi = 0x0000,
}; };

View File

@ -92,7 +92,7 @@
struct gpio_led leds[5]; struct gpio_led leds[5];
+ +
+ /* Buttons */ + /* Buttons */
+ struct gpio_button buttons[2]; + struct gpio_button buttons[4];
}; };
#endif /* ! BOARD_BCM963XX_H_ */ #endif /* ! BOARD_BCM963XX_H_ */

View File

@ -15,7 +15,7 @@
@@ -61,6 +61,10 @@ struct board_info { @@ -61,6 +61,10 @@ struct board_info {
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];
+ +
+ /* Additional platform devices */ + /* Additional platform devices */
+ struct platform_device **devs; + struct platform_device **devs;

View File

@ -29,12 +29,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:red", + .name = "adsl:green",
+ .gpio = 9, + .gpio = 9,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:green", + .name = "adsl:red",
+ .gpio = 10, + .gpio = 10,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -49,12 +49,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:red", + .name = "internet:green",
+ .gpio = 25, + .gpio = 25,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:green", + .name = "internet:red",
+ .gpio = 24, + .gpio = 24,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -110,4 +110,4 @@
+ struct gpio_led leds[14]; + struct gpio_led leds[14];
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];

View File

@ -0,0 +1,78 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1010,6 +1010,67 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_96348A_122 = {
+ .name = "96348A-122",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_ohci0 = 1,
+
+ .leds = {
+ {
+ .name = "power",
+ .gpio = 0,
+ .active_low = 1,
+ .default_trigger = "default-on",
+ },
+ {
+ .name = "alarm",
+ .gpio = 2,
+ .active_low = 1,
+ },
+ {
+ .name = "wps",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ },
+ .buttons = {
+ {
+ .desc = "reset",
+ .gpio = 33,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ },
+ {
+ .desc = "wifi",
+ .gpio = 34,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = BTN_0,
+ .threshold = 3,
+ },
+ {
+ .desc = "wps",
+ .gpio = 35,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .threshold = 3,
+ },
+ },
+};
+
#endif
/*
@@ -2069,6 +2130,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
+ &board_96348A_122,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -0,0 +1,10 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -705,6 +705,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
+ .has_uart0 = 1,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,

View File

@ -0,0 +1,55 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1072,6 +1072,44 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_CPVA502plus = {
+ .name = "CPVA502+",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_udc0 = 1,
+
+ .leds = {
+ {
+ .name = "phone",
+ .gpio = 0,
+ .active_low = 1,
+ },
+ {
+ .name = "link",
+ .gpio = 5,
+ .active_low = 1,
+ },
+ {
+ .name = "feth1", /* FIXME:does gpio4 enable eth1 phy? */
+ .gpio = 4,
+ .active_low = 1,
+ },
+ },
+};
#endif
/*
@@ -2132,6 +2170,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
+ &board_CPVA502plus,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2109,7 +2109,7 @@ static void __init nb4_nvram_fixup(void) @@ -2211,7 +2211,7 @@ static void __init nb4_nvram_fixup(void)
* bcm4318 WLAN work * bcm4318 WLAN work
*/ */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_PCIHOST
@ -9,7 +9,7 @@
.revision = 0x02, .revision = 0x02,
.board_rev = 0x17, .board_rev = 0x17,
.country_code = 0x0, .country_code = 0x0,
@@ -2129,6 +2129,7 @@ static struct ssb_sprom bcm63xx_sprom = @@ -2231,6 +2231,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848, .boardflags_lo = 0x2848,
.boardflags_hi = 0x0000, .boardflags_hi = 0x0000,
}; };

View File

@ -34,7 +34,7 @@ Subject: [PATCH 22/57] ehci: add driver for bcm63xx integrated controller.
+ BCM6358 and later chips. + BCM6358 and later chips.
+ +
config USB_EHCI_FSL config USB_EHCI_FSL
bool "Support for Freescale on-chip EHCI USB controller" bool "Support for Freescale PPC on-chip EHCI USB controller"
depends on USB_EHCI_HCD && FSL_SOC depends on USB_EHCI_HCD && FSL_SOC
--- /dev/null --- /dev/null
+++ b/drivers/usb/host/ehci-bcm63xx.c +++ b/drivers/usb/host/ehci-bcm63xx.c

View File

@ -100,7 +100,7 @@
struct gpio_led leds[5]; struct gpio_led leds[5];
+ +
+ /* Buttons */ + /* Buttons */
+ struct gpio_button buttons[2]; + struct gpio_button buttons[4];
}; };
#endif /* ! BOARD_BCM963XX_H_ */ #endif /* ! BOARD_BCM963XX_H_ */

View File

@ -15,7 +15,7 @@
@@ -62,6 +62,10 @@ struct board_info { @@ -62,6 +62,10 @@ struct board_info {
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];
+ +
+ /* Additional platform devices */ + /* Additional platform devices */
+ struct platform_device **devs; + struct platform_device **devs;

View File

@ -29,12 +29,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:red", + .name = "adsl:green",
+ .gpio = 9, + .gpio = 9,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "adsl:green", + .name = "adsl:red",
+ .gpio = 10, + .gpio = 10,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -49,12 +49,12 @@
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:red", + .name = "internet:green",
+ .gpio = 25, + .gpio = 25,
+ .active_low = 1, + .active_low = 1,
+ }, + },
+ { + {
+ .name = "internet:green", + .name = "internet:red",
+ .gpio = 24, + .gpio = 24,
+ .active_low = 1, + .active_low = 1,
+ }, + },
@ -110,4 +110,4 @@
+ struct gpio_led leds[14]; + struct gpio_led leds[14];
/* Buttons */ /* Buttons */
struct gpio_button buttons[2]; struct gpio_button buttons[4];

View File

@ -0,0 +1,78 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1010,6 +1010,67 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_96348A_122 = {
+ .name = "96348A-122",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_ohci0 = 1,
+
+ .leds = {
+ {
+ .name = "power",
+ .gpio = 0,
+ .active_low = 1,
+ .default_trigger = "default-on",
+ },
+ {
+ .name = "alarm",
+ .gpio = 2,
+ .active_low = 1,
+ },
+ {
+ .name = "wps",
+ .gpio = 6,
+ .active_low = 1,
+ },
+ },
+ .buttons = {
+ {
+ .desc = "reset",
+ .gpio = 33,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_RESTART,
+ .threshold = 3,
+ },
+ {
+ .desc = "wifi",
+ .gpio = 34,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = BTN_0,
+ .threshold = 3,
+ },
+ {
+ .desc = "wps",
+ .gpio = 35,
+ .active_low = 1,
+ .type = EV_KEY,
+ .code = KEY_WPS_BUTTON,
+ .threshold = 3,
+ },
+ },
+};
+
#endif
/*
@@ -2069,6 +2130,7 @@ static const struct board_info __initdat
&board_V2500V_BB,
&board_V2110,
&board_ct536_ct5621,
+ &board_96348A_122,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -0,0 +1,10 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -705,6 +705,7 @@ static struct board_info __initdata boar
.name = "RTA1025W_16",
.expected_cpu_id = 0x6348,
+ .has_uart0 = 1,
.has_enet0 = 1,
.has_enet1 = 1,
.has_pci = 1,

View File

@ -0,0 +1,55 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -1072,6 +1072,44 @@ static struct board_info __initdata boar
},
};
+static struct board_info __initdata board_CPVA502plus = {
+ .name = "CPVA502+",
+ .expected_cpu_id = 0x6348,
+
+ .has_uart0 = 1,
+ .has_enet0 = 1,
+ .has_enet1 = 1,
+ .has_pci = 1,
+
+ .enet0 = {
+ .has_phy = 1,
+ .use_internal_phy = 1,
+ },
+ .enet1 = {
+ .force_speed_100 = 1,
+ .force_duplex_full = 1,
+ },
+
+ .has_udc0 = 1,
+
+ .leds = {
+ {
+ .name = "phone",
+ .gpio = 0,
+ .active_low = 1,
+ },
+ {
+ .name = "link",
+ .gpio = 5,
+ .active_low = 1,
+ },
+ {
+ .name = "feth1", /* FIXME:does gpio4 enable eth1 phy? */
+ .gpio = 4,
+ .active_low = 1,
+ },
+ },
+};
#endif
/*
@@ -2132,6 +2170,7 @@ static const struct board_info __initdat
&board_V2110,
&board_ct536_ct5621,
&board_96348A_122,
+ &board_CPVA502plus,
#endif
#ifdef CONFIG_BCM63XX_CPU_6358

View File

@ -1,6 +1,6 @@
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
@@ -2109,7 +2109,7 @@ static void __init nb4_nvram_fixup(void) @@ -2211,7 +2211,7 @@ static void __init nb4_nvram_fixup(void)
* bcm4318 WLAN work * bcm4318 WLAN work
*/ */
#ifdef CONFIG_SSB_PCIHOST #ifdef CONFIG_SSB_PCIHOST
@ -9,7 +9,7 @@
.revision = 0x02, .revision = 0x02,
.board_rev = 0x17, .board_rev = 0x17,
.country_code = 0x0, .country_code = 0x0,
@@ -2129,6 +2129,7 @@ static struct ssb_sprom bcm63xx_sprom = @@ -2231,6 +2231,7 @@ static struct ssb_sprom bcm63xx_sprom =
.boardflags_lo = 0x2848, .boardflags_lo = 0x2848,
.boardflags_hi = 0x0000, .boardflags_hi = 0x0000,
}; };

View File

@ -14,8 +14,6 @@ Signed-off-by: Nathan Williams <nathan@traverse.com.au>
drivers/atm/solos-attrlist.c | 2 ++ drivers/atm/solos-attrlist.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-) 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/atm/solos-attrlist.c b/drivers/atm/solos-attrlist.c
index 9a676ee..8092533 100644
--- a/drivers/atm/solos-attrlist.c --- a/drivers/atm/solos-attrlist.c
+++ b/drivers/atm/solos-attrlist.c +++ b/drivers/atm/solos-attrlist.c
@@ -71,6 +71,8 @@ SOLOS_ATTR_RW(BisAForceSNRMarginDn) @@ -71,6 +71,8 @@ SOLOS_ATTR_RW(BisAForceSNRMarginDn)
@ -27,27 +25,53 @@ index 9a676ee..8092533 100644
SOLOS_ATTR_RW(AnnexAForceSNRMarginDn) SOLOS_ATTR_RW(AnnexAForceSNRMarginDn)
SOLOS_ATTR_RW(AnnexAMaxMargin) SOLOS_ATTR_RW(AnnexAMaxMargin)
SOLOS_ATTR_RW(AnnexMMaxMargin) SOLOS_ATTR_RW(AnnexMMaxMargin)
From: Nathan Williams <nathan@traverse.com.au>
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:44:17 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 2/4] atm: solos-pci: Remove annoying
line of debugging
"len: %d" isn't particularly useful for anyone and confuses users.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index 5d1d076..bd01aa3 100644
--- a/drivers/atm/solos-pci.c --- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c +++ b/drivers/atm/solos-pci.c
@@ -452,7 +452,6 @@ static ssize_t console_show(struct device *dev, struct device_attribute *attr, @@ -42,7 +42,8 @@
#include <linux/swab.h>
#include <linux/slab.h>
-#define VERSION "0.07"
+#define VERSION "1.0"
+#define DRIVER_VERSION 0x01
#define PTAG "solos-pci"
#define CONFIG_RAM_SIZE 128
@@ -56,16 +57,21 @@
#define FLASH_BUSY 0x60
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
+#define GPIO_STATUS 0x54
+#define DRIVER_VER 0x50
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
#define DATA_RAM_SIZE 32768
#define BUF_SIZE 2048
#define OLD_BUF_SIZE 4096 /* For FPGA versions <= 2*/
-#define FPGA_PAGE 528 /* FPGA flash page size*/
-#define SOLOS_PAGE 512 /* Solos flash page size*/
-#define FPGA_BLOCK (FPGA_PAGE * 8) /* FPGA flash block size*/
-#define SOLOS_BLOCK (SOLOS_PAGE * 8) /* Solos flash block size*/
+/* Old boards use ATMEL AD45DB161D flash */
+#define ATMEL_FPGA_PAGE 528 /* FPGA flash page size*/
+#define ATMEL_SOLOS_PAGE 512 /* Solos flash page size*/
+#define ATMEL_FPGA_BLOCK (ATMEL_FPGA_PAGE * 8) /* FPGA block size*/
+#define ATMEL_SOLOS_BLOCK (ATMEL_SOLOS_PAGE * 8) /* Solos block size*/
+/* Current boards use M25P/M25PE SPI flash */
+#define SPI_FLASH_BLOCK (256 * 64)
#define RX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2)
#define TX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2 + (card->buffer_size))
@@ -127,6 +133,7 @@ struct solos_card {
int using_dma;
int fpga_version;
int buffer_size;
+ int atmel_flash;
};
@@ -452,7 +459,6 @@ static ssize_t console_show(struct devic
len = skb->len; len = skb->len;
memcpy(buf, skb->data, len); memcpy(buf, skb->data, len);
@ -55,38 +79,7 @@ index 5d1d076..bd01aa3 100644
kfree_skb(skb); kfree_skb(skb);
return len; return len;
From: Nathan Williams <nathan@traverse.com.au> @@ -499,6 +505,87 @@ static ssize_t console_store(struct devi
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:45:15 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 3/4] atm: solos-pci: Add support for
Geos GPIO pins
Geos ADSL2+ routers have on-board Solos chipsets with some
extra I/O pins and a push button connected to the FPGA.
PCB version and variant numbers are also made available
through the HardwareVersion and HardwareVariant attributes.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index bd01aa3..33c0c2b 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -56,6 +56,7 @@
#define FLASH_BUSY 0x60
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
+#define GPIO_STATUS 0x54
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
@@ -498,6 +499,87 @@ static ssize_t console_store(struct device *dev, struct device_attribute *attr,
return err?:count; return err?:count;
} }
@ -174,7 +167,7 @@ index bd01aa3..33c0c2b 100644
static DEVICE_ATTR(console, 0644, console_show, console_store); static DEVICE_ATTR(console, 0644, console_show, console_store);
@@ -506,6 +588,14 @@ static DEVICE_ATTR(console, 0644, console_show, console_store); @@ -507,6 +594,14 @@ static DEVICE_ATTR(console, 0644, consol
#include "solos-attrlist.c" #include "solos-attrlist.c"
@ -189,7 +182,7 @@ index bd01aa3..33c0c2b 100644
#undef SOLOS_ATTR_RO #undef SOLOS_ATTR_RO
#undef SOLOS_ATTR_RW #undef SOLOS_ATTR_RW
@@ -514,6 +604,14 @@ static DEVICE_ATTR(console, 0644, console_show, console_store); @@ -515,6 +610,14 @@ static DEVICE_ATTR(console, 0644, consol
static struct attribute *solos_attrs[] = { static struct attribute *solos_attrs[] = {
#include "solos-attrlist.c" #include "solos-attrlist.c"
@ -204,71 +197,7 @@ index bd01aa3..33c0c2b 100644
NULL NULL
}; };
From: Nathan Williams <nathan@traverse.com.au> @@ -534,16 +637,25 @@ static int flash_upgrade(struct solos_ca
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:46:08 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 4/4] atm: solos-pci: M25P/M25PE SPI
flash support
Newer Geos ADSL2+ routers have different SPI flash.
The FPGA on these boards require driver version = 1 to enable
flash upgrades so old drivers can't corrupt new boards.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 51 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 40 insertions(+), 11 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index 33c0c2b..2a75bf7 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -42,7 +42,8 @@
#include <linux/swab.h>
#include <linux/slab.h>
-#define VERSION "0.07"
+#define VERSION "1.0"
+#define DRIVER_VERSION 0x01
#define PTAG "solos-pci"
#define CONFIG_RAM_SIZE 128
@@ -57,16 +58,20 @@
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
#define GPIO_STATUS 0x54
+#define DRIVER_VER 0x50
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
#define DATA_RAM_SIZE 32768
#define BUF_SIZE 2048
#define OLD_BUF_SIZE 4096 /* For FPGA versions <= 2*/
-#define FPGA_PAGE 528 /* FPGA flash page size*/
-#define SOLOS_PAGE 512 /* Solos flash page size*/
-#define FPGA_BLOCK (FPGA_PAGE * 8) /* FPGA flash block size*/
-#define SOLOS_BLOCK (SOLOS_PAGE * 8) /* Solos flash block size*/
+/* Old boards use ATMEL AD45DB161D flash */
+#define ATMEL_FPGA_PAGE 528 /* FPGA flash page size*/
+#define ATMEL_SOLOS_PAGE 512 /* Solos flash page size*/
+#define ATMEL_FPGA_BLOCK (ATMEL_FPGA_PAGE * 8) /* FPGA block size*/
+#define ATMEL_SOLOS_BLOCK (ATMEL_SOLOS_PAGE * 8) /* Solos block size*/
+/* Current boards use M25P/M25PE SPI flash */
+#define SPI_FLASH_BLOCK (256 * 64)
#define RX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2)
#define TX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2 + (card->buffer_size))
@@ -128,6 +133,7 @@ struct solos_card {
int using_dma;
int fpga_version;
int buffer_size;
+ int atmel_flash;
};
@@ -631,16 +637,25 @@ static int flash_upgrade(struct solos_card *card, int chip)
switch (chip) { switch (chip) {
case 0: case 0:
fw_name = "solos-FPGA.bin"; fw_name = "solos-FPGA.bin";
@ -297,7 +226,7 @@ index 33c0c2b..2a75bf7 100644
} else { } else {
dev_info(&card->dev->dev, "FPGA version doesn't support" dev_info(&card->dev->dev, "FPGA version doesn't support"
" daughter board upgrades\n"); " daughter board upgrades\n");
@@ -650,7 +665,10 @@ static int flash_upgrade(struct solos_card *card, int chip) @@ -553,7 +665,10 @@ static int flash_upgrade(struct solos_ca
case 3: case 3:
if (card->fpga_version > LEGACY_BUFFERS){ if (card->fpga_version > LEGACY_BUFFERS){
fw_name = "solos-Firmware.bin"; fw_name = "solos-Firmware.bin";
@ -309,7 +238,7 @@ index 33c0c2b..2a75bf7 100644
} else { } else {
dev_info(&card->dev->dev, "FPGA version doesn't support" dev_info(&card->dev->dev, "FPGA version doesn't support"
" daughter board upgrades\n"); " daughter board upgrades\n");
@@ -695,9 +713,13 @@ static int flash_upgrade(struct solos_card *card, int chip) @@ -598,9 +713,13 @@ static int flash_upgrade(struct solos_ca
/* dev_info(&card->dev->dev, "Set FPGA Flash mode to Block Write\n"); */ /* dev_info(&card->dev->dev, "Set FPGA Flash mode to Block Write\n"); */
iowrite32(((chip * 2) + 1), card->config_regs + FLASH_MODE); iowrite32(((chip * 2) + 1), card->config_regs + FLASH_MODE);
@ -325,7 +254,7 @@ index 33c0c2b..2a75bf7 100644
if(card->fpga_version > LEGACY_BUFFERS) if(card->fpga_version > LEGACY_BUFFERS)
iowrite32(word, FLASH_BUF + i); iowrite32(word, FLASH_BUF + i);
else else
@@ -1249,6 +1271,11 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -1152,6 +1271,11 @@ static int fpga_probe(struct pci_dev *de
db_fpga_upgrade = db_firmware_upgrade = 0; db_fpga_upgrade = db_firmware_upgrade = 0;
} }
@ -337,7 +266,7 @@ index 33c0c2b..2a75bf7 100644
if (card->fpga_version >= DMA_SUPPORTED){ if (card->fpga_version >= DMA_SUPPORTED){
card->using_dma = 1; card->using_dma = 1;
} else { } else {
@@ -1256,6 +1283,8 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -1159,6 +1283,8 @@ static int fpga_probe(struct pci_dev *de
/* Set RX empty flag for all ports */ /* Set RX empty flag for all ports */
iowrite32(0xF0, card->config_regs + FLAGS_ADDR); iowrite32(0xF0, card->config_regs + FLAGS_ADDR);
} }

View File

@ -8,4 +8,3 @@
ifeq ($(CONFIG_TUNE_CELL),y) ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell) KBUILD_CFLAGS += $(call cc-option,-mtune=cell)

View File

@ -14,8 +14,6 @@ Signed-off-by: Nathan Williams <nathan@traverse.com.au>
drivers/atm/solos-attrlist.c | 2 ++ drivers/atm/solos-attrlist.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-) 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/atm/solos-attrlist.c b/drivers/atm/solos-attrlist.c
index 9a676ee..8092533 100644
--- a/drivers/atm/solos-attrlist.c --- a/drivers/atm/solos-attrlist.c
+++ b/drivers/atm/solos-attrlist.c +++ b/drivers/atm/solos-attrlist.c
@@ -71,6 +71,8 @@ SOLOS_ATTR_RW(BisAForceSNRMarginDn) @@ -71,6 +71,8 @@ SOLOS_ATTR_RW(BisAForceSNRMarginDn)
@ -27,27 +25,53 @@ index 9a676ee..8092533 100644
SOLOS_ATTR_RW(AnnexAForceSNRMarginDn) SOLOS_ATTR_RW(AnnexAForceSNRMarginDn)
SOLOS_ATTR_RW(AnnexAMaxMargin) SOLOS_ATTR_RW(AnnexAMaxMargin)
SOLOS_ATTR_RW(AnnexMMaxMargin) SOLOS_ATTR_RW(AnnexMMaxMargin)
From: Nathan Williams <nathan@traverse.com.au>
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:44:17 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 2/4] atm: solos-pci: Remove annoying
line of debugging
"len: %d" isn't particularly useful for anyone and confuses users.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index 5d1d076..bd01aa3 100644
--- a/drivers/atm/solos-pci.c --- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c +++ b/drivers/atm/solos-pci.c
@@ -452,7 +452,6 @@ static ssize_t console_show(struct device *dev, struct device_attribute *attr, @@ -42,7 +42,8 @@
#include <linux/swab.h>
#include <linux/slab.h>
-#define VERSION "0.07"
+#define VERSION "1.0"
+#define DRIVER_VERSION 0x01
#define PTAG "solos-pci"
#define CONFIG_RAM_SIZE 128
@@ -56,16 +57,21 @@
#define FLASH_BUSY 0x60
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
+#define GPIO_STATUS 0x54
+#define DRIVER_VER 0x50
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
#define DATA_RAM_SIZE 32768
#define BUF_SIZE 2048
#define OLD_BUF_SIZE 4096 /* For FPGA versions <= 2*/
-#define FPGA_PAGE 528 /* FPGA flash page size*/
-#define SOLOS_PAGE 512 /* Solos flash page size*/
-#define FPGA_BLOCK (FPGA_PAGE * 8) /* FPGA flash block size*/
-#define SOLOS_BLOCK (SOLOS_PAGE * 8) /* Solos flash block size*/
+/* Old boards use ATMEL AD45DB161D flash */
+#define ATMEL_FPGA_PAGE 528 /* FPGA flash page size*/
+#define ATMEL_SOLOS_PAGE 512 /* Solos flash page size*/
+#define ATMEL_FPGA_BLOCK (ATMEL_FPGA_PAGE * 8) /* FPGA block size*/
+#define ATMEL_SOLOS_BLOCK (ATMEL_SOLOS_PAGE * 8) /* Solos block size*/
+/* Current boards use M25P/M25PE SPI flash */
+#define SPI_FLASH_BLOCK (256 * 64)
#define RX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2)
#define TX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2 + (card->buffer_size))
@@ -127,6 +133,7 @@ struct solos_card {
int using_dma;
int fpga_version;
int buffer_size;
+ int atmel_flash;
};
@@ -452,7 +459,6 @@ static ssize_t console_show(struct devic
len = skb->len; len = skb->len;
memcpy(buf, skb->data, len); memcpy(buf, skb->data, len);
@ -55,38 +79,7 @@ index 5d1d076..bd01aa3 100644
kfree_skb(skb); kfree_skb(skb);
return len; return len;
From: Nathan Williams <nathan@traverse.com.au> @@ -499,6 +505,87 @@ static ssize_t console_store(struct devi
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:45:15 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 3/4] atm: solos-pci: Add support for
Geos GPIO pins
Geos ADSL2+ routers have on-board Solos chipsets with some
extra I/O pins and a push button connected to the FPGA.
PCB version and variant numbers are also made available
through the HardwareVersion and HardwareVariant attributes.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index bd01aa3..33c0c2b 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -56,6 +56,7 @@
#define FLASH_BUSY 0x60
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
+#define GPIO_STATUS 0x54
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
@@ -498,6 +499,87 @@ static ssize_t console_store(struct device *dev, struct device_attribute *attr,
return err?:count; return err?:count;
} }
@ -174,7 +167,7 @@ index bd01aa3..33c0c2b 100644
static DEVICE_ATTR(console, 0644, console_show, console_store); static DEVICE_ATTR(console, 0644, console_show, console_store);
@@ -506,6 +588,14 @@ static DEVICE_ATTR(console, 0644, console_show, console_store); @@ -507,6 +594,14 @@ static DEVICE_ATTR(console, 0644, consol
#include "solos-attrlist.c" #include "solos-attrlist.c"
@ -189,7 +182,7 @@ index bd01aa3..33c0c2b 100644
#undef SOLOS_ATTR_RO #undef SOLOS_ATTR_RO
#undef SOLOS_ATTR_RW #undef SOLOS_ATTR_RW
@@ -514,6 +604,14 @@ static DEVICE_ATTR(console, 0644, console_show, console_store); @@ -515,6 +610,14 @@ static DEVICE_ATTR(console, 0644, consol
static struct attribute *solos_attrs[] = { static struct attribute *solos_attrs[] = {
#include "solos-attrlist.c" #include "solos-attrlist.c"
@ -204,71 +197,7 @@ index bd01aa3..33c0c2b 100644
NULL NULL
}; };
From: Nathan Williams <nathan@traverse.com.au> @@ -534,16 +637,25 @@ static int flash_upgrade(struct solos_ca
To: netdev@vger.kernel.org
Date: Wed, 05 Oct 2011 15:46:08 +1100
Cc: linux-atm-general@lists.sourceforge.net,
David Woodhouse <dwmw2@infradead.org>, linux-kernel@vger.kernel.org
Subject: [Linux-ATM-General] [PATCH 4/4] atm: solos-pci: M25P/M25PE SPI
flash support
Newer Geos ADSL2+ routers have different SPI flash.
The FPGA on these boards require driver version = 1 to enable
flash upgrades so old drivers can't corrupt new boards.
Signed-off-by: Nathan Williams <nathan@traverse.com.au>
---
drivers/atm/solos-pci.c | 51 ++++++++++++++++++++++++++++++++++++----------
1 files changed, 40 insertions(+), 11 deletions(-)
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c
index 33c0c2b..2a75bf7 100644
--- a/drivers/atm/solos-pci.c
+++ b/drivers/atm/solos-pci.c
@@ -42,7 +42,8 @@
#include <linux/swab.h>
#include <linux/slab.h>
-#define VERSION "0.07"
+#define VERSION "1.0"
+#define DRIVER_VERSION 0x01
#define PTAG "solos-pci"
#define CONFIG_RAM_SIZE 128
@@ -57,16 +58,20 @@
#define FPGA_MODE 0x5C
#define FLASH_MODE 0x58
#define GPIO_STATUS 0x54
+#define DRIVER_VER 0x50
#define TX_DMA_ADDR(port) (0x40 + (4 * (port)))
#define RX_DMA_ADDR(port) (0x30 + (4 * (port)))
#define DATA_RAM_SIZE 32768
#define BUF_SIZE 2048
#define OLD_BUF_SIZE 4096 /* For FPGA versions <= 2*/
-#define FPGA_PAGE 528 /* FPGA flash page size*/
-#define SOLOS_PAGE 512 /* Solos flash page size*/
-#define FPGA_BLOCK (FPGA_PAGE * 8) /* FPGA flash block size*/
-#define SOLOS_BLOCK (SOLOS_PAGE * 8) /* Solos flash block size*/
+/* Old boards use ATMEL AD45DB161D flash */
+#define ATMEL_FPGA_PAGE 528 /* FPGA flash page size*/
+#define ATMEL_SOLOS_PAGE 512 /* Solos flash page size*/
+#define ATMEL_FPGA_BLOCK (ATMEL_FPGA_PAGE * 8) /* FPGA block size*/
+#define ATMEL_SOLOS_BLOCK (ATMEL_SOLOS_PAGE * 8) /* Solos block size*/
+/* Current boards use M25P/M25PE SPI flash */
+#define SPI_FLASH_BLOCK (256 * 64)
#define RX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2)
#define TX_BUF(card, nr) ((card->buffers) + (nr)*(card->buffer_size)*2 + (card->buffer_size))
@@ -128,6 +133,7 @@ struct solos_card {
int using_dma;
int fpga_version;
int buffer_size;
+ int atmel_flash;
};
@@ -631,16 +637,25 @@ static int flash_upgrade(struct solos_card *card, int chip)
switch (chip) { switch (chip) {
case 0: case 0:
fw_name = "solos-FPGA.bin"; fw_name = "solos-FPGA.bin";
@ -297,7 +226,7 @@ index 33c0c2b..2a75bf7 100644
} else { } else {
dev_info(&card->dev->dev, "FPGA version doesn't support" dev_info(&card->dev->dev, "FPGA version doesn't support"
" daughter board upgrades\n"); " daughter board upgrades\n");
@@ -650,7 +665,10 @@ static int flash_upgrade(struct solos_card *card, int chip) @@ -553,7 +665,10 @@ static int flash_upgrade(struct solos_ca
case 3: case 3:
if (card->fpga_version > LEGACY_BUFFERS){ if (card->fpga_version > LEGACY_BUFFERS){
fw_name = "solos-Firmware.bin"; fw_name = "solos-Firmware.bin";
@ -309,7 +238,7 @@ index 33c0c2b..2a75bf7 100644
} else { } else {
dev_info(&card->dev->dev, "FPGA version doesn't support" dev_info(&card->dev->dev, "FPGA version doesn't support"
" daughter board upgrades\n"); " daughter board upgrades\n");
@@ -695,9 +713,13 @@ static int flash_upgrade(struct solos_card *card, int chip) @@ -598,9 +713,13 @@ static int flash_upgrade(struct solos_ca
/* dev_info(&card->dev->dev, "Set FPGA Flash mode to Block Write\n"); */ /* dev_info(&card->dev->dev, "Set FPGA Flash mode to Block Write\n"); */
iowrite32(((chip * 2) + 1), card->config_regs + FLASH_MODE); iowrite32(((chip * 2) + 1), card->config_regs + FLASH_MODE);
@ -325,7 +254,7 @@ index 33c0c2b..2a75bf7 100644
if(card->fpga_version > LEGACY_BUFFERS) if(card->fpga_version > LEGACY_BUFFERS)
iowrite32(word, FLASH_BUF + i); iowrite32(word, FLASH_BUF + i);
else else
@@ -1249,6 +1271,11 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -1152,6 +1271,11 @@ static int fpga_probe(struct pci_dev *de
db_fpga_upgrade = db_firmware_upgrade = 0; db_fpga_upgrade = db_firmware_upgrade = 0;
} }
@ -337,7 +266,7 @@ index 33c0c2b..2a75bf7 100644
if (card->fpga_version >= DMA_SUPPORTED){ if (card->fpga_version >= DMA_SUPPORTED){
card->using_dma = 1; card->using_dma = 1;
} else { } else {
@@ -1256,6 +1283,8 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) @@ -1159,6 +1283,8 @@ static int fpga_probe(struct pci_dev *de
/* Set RX empty flag for all ports */ /* Set RX empty flag for all ports */
iowrite32(0xF0, card->config_regs + FLAGS_ADDR); iowrite32(0xF0, card->config_regs + FLAGS_ADDR);
} }

View File

@ -8,4 +8,3 @@
ifeq ($(CONFIG_TUNE_CELL),y) ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell) KBUILD_CFLAGS += $(call cc-option,-mtune=cell)

View File

@ -8,4 +8,3 @@
ifeq ($(CONFIG_TUNE_CELL),y) ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell) KBUILD_CFLAGS += $(call cc-option,-mtune=cell)

View File

@ -1,6 +1,6 @@
--- a/kernel/module.c --- a/kernel/module.c
+++ b/kernel/module.c +++ b/kernel/module.c
@@ -2286,12 +2286,15 @@ @@ -2283,12 +2283,15 @@ static void dynamic_debug_remove(struct
void * __weak module_alloc(unsigned long size) void * __weak module_alloc(unsigned long size)
{ {

View File

@ -8,4 +8,3 @@
ifeq ($(CONFIG_TUNE_CELL),y) ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell) KBUILD_CFLAGS += $(call cc-option,-mtune=cell)

View File

@ -1,6 +1,6 @@
--- a/kernel/module.c --- a/kernel/module.c
+++ b/kernel/module.c +++ b/kernel/module.c
@@ -2322,12 +2322,15 @@ @@ -2322,12 +2322,15 @@ static void dynamic_debug_remove(struct
void * __weak module_alloc(unsigned long size) void * __weak module_alloc(unsigned long size)
{ {