123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- From 03feb9db77fba3eef3d83e17a87a56979659b248 Mon Sep 17 00:00:00 2001
- From: Jonas Gorski <jogo@openwrt.org>
- Date: Tue, 29 Jul 2014 22:48:26 +0200
- Subject: [PATCH 07/10] MIPS: BCM63XX: also register a fallback sprom for bcma
- Similar to SSB, register a fallback sprom handler for BCMA.
- Signed-off-by: Jonas Gorski <jogo@openwrt.org>
- ---
- arch/mips/bcm63xx/boards/Kconfig | 1 +
- arch/mips/bcm63xx/sprom.c | 40 +++++++++++++++++++++++++++++++++++-----
- 2 files changed, 36 insertions(+), 5 deletions(-)
- --- a/arch/mips/bcm63xx/boards/Kconfig
- +++ b/arch/mips/bcm63xx/boards/Kconfig
- @@ -4,6 +4,7 @@ menu "Board support"
- config BOARD_BCM963XX
- bool "Generic Broadcom 963xx boards"
- select SSB
- + select BCMA
- default y
- help
-
- --- a/arch/mips/bcm63xx/sprom.c
- +++ b/arch/mips/bcm63xx/sprom.c
- @@ -12,6 +12,7 @@
- #include <linux/string.h>
- #include <linux/platform_device.h>
- #include <linux/ssb/ssb.h>
- +#include <linux/bcma/bcma.h>
- #include <bcm63xx_fallback_sprom.h>
- #include <board_bcm963xx.h>
-
- @@ -21,7 +22,7 @@
- * Register a sane SPROMv2 to make the on-board
- * bcm4318 WLAN work
- */
- -#ifdef CONFIG_SSB_PCIHOST
- +#if defined(CONFIG_SSB_PCIHOST) || defined(CONFIG_BCMA_HOST_PCI)
- static __initconst struct ssb_sprom bcm63xx_default_sprom = {
- .revision = 0x02,
- .board_rev = 0x17,
- @@ -43,7 +44,7 @@ static __initconst struct ssb_sprom bcm6
- .boardflags_hi = 0x0000,
- };
-
- -
- +#if defined (CONFIG_SSB_PCIHOST)
- static __initconst u16 bcm4306_sprom[] = {
- 0x4001, 0x0000, 0x0453, 0x14e4, 0x4320, 0x8000, 0x0002, 0x0002,
- 0x1000, 0x1800, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff,
- @@ -158,10 +159,12 @@ static __initconst u16 bcm43222_sprom[]
- 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
- 0xffff, 0xffff, 0xffff, 0x0008,
- };
- +#endif /* CONFIG_SSB_PCIHOST */
-
- static struct ssb_sprom bcm63xx_sprom;
-
- -int bcm63xx_get_fallback_sprom(struct ssb_bus *bus, struct ssb_sprom *out)
- +#if defined(CONFIG_SSB_PCIHOST)
- +int bcm63xx_get_fallback_ssb_sprom(struct ssb_bus *bus, struct ssb_sprom *out)
- {
- if (bus->bustype == SSB_BUSTYPE_PCI) {
- memcpy(out, &bcm63xx_sprom, sizeof(struct ssb_sprom));
- @@ -171,6 +174,20 @@ int bcm63xx_get_fallback_sprom(struct ss
- return -EINVAL;
- }
- }
- +#endif
- +
- +#if defined(CONFIG_BCMA_HOST_PCI)
- +int bcm63xx_get_fallback_bcma_sprom(struct bcma_bus *bus, struct ssb_sprom *out)
- +{
- + if (bus->hosttype == BCMA_HOSTTYPE_PCI) {
- + memcpy(out, &bcm63xx_sprom, sizeof(struct ssb_sprom));
- + return 0;
- + } else {
- + printk(KERN_ERR PFX "unable to fill SPROM for given bustype.\n");
- + return -EINVAL;
- + }
- +}
- +#endif
-
- /* FIXME: use lib_sprom after submission upstream */
-
- @@ -654,10 +671,11 @@ int __init bcm63xx_register_fallback_spr
- {
- int ret = 0;
-
- -#ifdef CONFIG_SSB_PCIHOST
- +#if defined(CONFIG_SSB_PCIHOST) || defined(CONFIG_BCMA_HOST_PCI)
- u16 size = 0;
-
- switch (data->type) {
- +#if defined(CONFIG_SSB_PCIHOST)
- case SPROM_BCM4306:
- memcpy(&template_sprom, &bcm4306_sprom, sizeof(bcm4306_sprom));
- size = ARRAY_SIZE(bcm4306_sprom);
- @@ -678,6 +696,7 @@ int __init bcm63xx_register_fallback_spr
- memcpy(&template_sprom, &bcm43222_sprom, sizeof(bcm43222_sprom));
- size = ARRAY_SIZE(bcm43222_sprom);
- break;
- +#endif
- case SPROM_DEFAULT:
- memcpy(&bcm63xx_sprom, &bcm63xx_default_sprom,
- sizeof(bcm63xx_sprom));
- @@ -692,8 +711,19 @@ int __init bcm63xx_register_fallback_spr
- memcpy(bcm63xx_sprom.il0mac, data->mac_addr, ETH_ALEN);
- memcpy(bcm63xx_sprom.et0mac, data->mac_addr, ETH_ALEN);
- memcpy(bcm63xx_sprom.et1mac, data->mac_addr, ETH_ALEN);
- +#endif /* defined(CONFIG_SSB_PCIHOST) || defined(CONFIG_BCMA_HOST_PCI) */
- +
- +#if defined(CONFIG_SSB_PCIHOST)
- + ret = ssb_arch_register_fallback_sprom(&bcm63xx_get_fallback_ssb_sprom);
- + if (ret)
- + return ret;
- +
- +#endif
-
- - ret = ssb_arch_register_fallback_sprom(&bcm63xx_get_fallback_sprom);
- +#if defined(CONFIG_BCMA_HOST_PCI)
- + ret = bcma_arch_register_fallback_sprom(bcm63xx_get_fallback_bcma_sprom);
- + if (ret)
- + return ret;
- #endif
- return ret;
- }
|