[PATCH 10/11] bcm47xx: add support for bcma bus

Jonas Gorski jonas.gorski at gmail.com
Wed Jul 13 15:52:07 EDT 2011


On 9 July 2011 13:06, Hauke Mehrtens <hauke at hauke-m.de> wrote:
> This patch add support for the bcma bus. Broadcom uses only Mips 74K
> CPUs on the new SoC and on the old ons using ssb bus there are no Mips
> 74K CPUs.
>
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> ---
>  arch/mips/bcm47xx/Kconfig                    |   13 ++++++
>  arch/mips/bcm47xx/gpio.c                     |   22 +++++++++++
>  arch/mips/bcm47xx/nvram.c                    |   10 +++++
>  arch/mips/bcm47xx/serial.c                   |   29 ++++++++++++++
>  arch/mips/bcm47xx/setup.c                    |   53 +++++++++++++++++++++++++-
>  arch/mips/bcm47xx/time.c                     |    5 ++
>  arch/mips/include/asm/mach-bcm47xx/bcm47xx.h |    8 ++++
>  arch/mips/include/asm/mach-bcm47xx/gpio.h    |   41 ++++++++++++++++++++
>  drivers/watchdog/bcm47xx_wdt.c               |   11 +++++
>  9 files changed, 190 insertions(+), 2 deletions(-)
>
> diff --git a/arch/mips/bcm47xx/Kconfig b/arch/mips/bcm47xx/Kconfig
> index 0346f92..6210b8d 100644
> --- a/arch/mips/bcm47xx/Kconfig
> +++ b/arch/mips/bcm47xx/Kconfig
> @@ -15,4 +15,17 @@ config BCM47XX_SSB
>
>         This will generate an image with support for SSB and MIPS32 R1 instruction set.
>
> +config BCM47XX_BCMA
> +       bool "BCMA Support for Broadcom BCM47XX"
> +       select SYS_HAS_CPU_MIPS32_R2
> +       select BCMA
> +       select BCMA_HOST_SOC
> +       select BCMA_DRIVER_MIPS
> +       select BCMA_DRIVER_PCI_HOSTMODE if PCI
> +       default y
> +       help
> +        Add support for new Broadcom BCM47xx boards with Broadcom specific Advanced Microcontroller Bus.
> +
> +        This will generate an image with support for BCMA and MIPS32 R2 instruction set.
> +

BCM47XX_SSB and BCM47XX_BCMA should either exclude each other, or
SYS_HAS_CPU_MIPS32_R2 should only be selected when BCM47XX_SSB isn't
selected.
I would expect an image built when having both selected to also
support both systems, but selecting MIPS32_R2 as the CPU this will
make it actually not work on SSB systems.

> diff --git a/arch/mips/bcm47xx/gpio.c b/arch/mips/bcm47xx/gpio.c
> index 3320e91..9d5bafe 100644
> --- a/arch/mips/bcm47xx/gpio.c
> +++ b/arch/mips/bcm47xx/gpio.c
> @@ -36,6 +36,16 @@ int gpio_request(unsigned gpio, const char *tag)
>
>                return 0;
>  #endif
> +#ifdef CONFIG_BCM47XX_BCMA
> +       case BCM47XX_BUS_TYPE_BCMA:
> +               if ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES)

gpio is already unsigned, you shouldn't need to cast it.

> +                       return -EINVAL;
> +
> +               if (test_and_set_bit(gpio, gpio_in_use))
> +                       return -EBUSY;
> +
> +               return 0;
> +#endif
>        }
>        return -EINVAL;
>  }
> @@ -57,6 +67,14 @@ void gpio_free(unsigned gpio)
>                clear_bit(gpio, gpio_in_use);
>                return;
>  #endif
> +#ifdef CONFIG_BCM47XX_BCMA
> +       case BCM47XX_BUS_TYPE_BCMA:
> +               if ((unsigned)gpio >= BCM47XX_CHIPCO_GPIO_LINES)

Ditto.



More information about the b43-dev mailing list