From f888824d352df894ab721a5ca067b0313500efe7 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Thu, 3 May 2012 12:17:54 +0200 Subject: [PATCH 38/59] MIPS: BCM63XX: store the flash type in global variable --- arch/mips/bcm63xx/dev-flash.c | 36 +++++++++++++------ .../include/asm/mach-bcm63xx/bcm63xx_dev_flash.h | 2 + 2 files changed, 26 insertions(+), 12 deletions(-) --- a/arch/mips/bcm63xx/dev-flash.c +++ b/arch/mips/bcm63xx/dev-flash.c @@ -25,6 +25,8 @@ #include #include +int bcm63xx_attached_flash = -1; + static struct mtd_partition mtd_partitions[] = { { .name = "cfe", @@ -86,26 +88,30 @@ static int __init bcm63xx_detect_flash_t bcm63xx_spi_flash_info[0].max_speed_hz = 16666667; if (val & STRAPBUS_6328_BOOT_SEL_SERIAL) - return BCM63XX_FLASH_TYPE_SERIAL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL; else - return BCM63XX_FLASH_TYPE_NAND; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND; + break; case BCM6338_CPU_ID: case BCM6345_CPU_ID: case BCM6348_CPU_ID: /* no way to auto detect so assume parallel */ - return BCM63XX_FLASH_TYPE_PARALLEL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL; + break; case BCM6358_CPU_ID: val = bcm_gpio_readl(GPIO_STRAPBUS_REG); if (val & STRAPBUS_6358_BOOT_SEL_PARALLEL) - return BCM63XX_FLASH_TYPE_PARALLEL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL; else - return BCM63XX_FLASH_TYPE_SERIAL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL; + break; case BCM6362_CPU_ID: val = bcm_misc_readl(MISC_STRAPBUS_6362_REG); if (val & STRAPBUS_6362_BOOT_SEL_SERIAL) - return BCM63XX_FLASH_TYPE_SERIAL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL; else - return BCM63XX_FLASH_TYPE_NAND; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND; + break; case BCM6368_CPU_ID: val = bcm_gpio_readl(GPIO_STRAPBUS_REG); if (val & STRAPBUS_6368_SPI_CLK_FAST) @@ -113,25 +119,32 @@ static int __init bcm63xx_detect_flash_t switch (val & STRAPBUS_6368_BOOT_SEL_MASK) { case STRAPBUS_6368_BOOT_SEL_NAND: - return BCM63XX_FLASH_TYPE_NAND; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_NAND; + break; case STRAPBUS_6368_BOOT_SEL_SERIAL: - return BCM63XX_FLASH_TYPE_SERIAL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_SERIAL; + break; case STRAPBUS_6368_BOOT_SEL_PARALLEL: - return BCM63XX_FLASH_TYPE_PARALLEL; + bcm63xx_attached_flash = BCM63XX_FLASH_TYPE_PARALLEL; + break; + default: + return -EINVAL; } default: return -EINVAL; } + + return 0; } int __init bcm63xx_flash_register(void) { - int flash_type; u32 val; - flash_type = bcm63xx_detect_flash_type(); - switch (flash_type) { + bcm63xx_detect_flash_type(); + + switch (bcm63xx_attached_flash) { case BCM63XX_FLASH_TYPE_PARALLEL: /* read base address of boot chip select (0) */ val = bcm_mpi_readl(MPI_CSBASE_REG(0)); @@ -154,7 +167,7 @@ int __init bcm63xx_flash_register(void) return -ENODEV; default: pr_err("flash detection failed for BCM%x: %d\n", - bcm63xx_get_cpu_id(), flash_type); + bcm63xx_get_cpu_id(), bcm63xx_attached_flash); return -ENODEV; } } --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_flash.h @@ -7,6 +7,8 @@ enum { BCM63XX_FLASH_TYPE_NAND, }; +extern int bcm63xx_attached_flash; + int __init bcm63xx_flash_register(void); #endif /* __BCM63XX_FLASH_H */