Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7177efc5 authored by Rafał Miłecki's avatar Rafał Miłecki Committed by Ralf Baechle
Browse files

MIPS: BCM47XX: Make bcma init NVRAM instead of bcm47xx polling it



This drops ssb/bcma dependency and will allow us to make it a standalone
driver.

Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
Cc: linux-mips@linux-mips.org
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Patchwork: https://patchwork.linux-mips.org/patch/8233/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent 21400f25
Loading
Loading
Loading
Loading
+2 −40
Original line number Diff line number Diff line
@@ -121,48 +121,10 @@ int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
	return err;
}

#ifdef CONFIG_BCM47XX_BCMA
static int nvram_init_bcma(void)
{
	struct bcma_drv_cc *cc = &bcm47xx_bus.bcma.bus.drv_cc;
	u32 base;
	u32 lim;

#ifdef CONFIG_BCMA_NFLASH
	if (cc->nflash.boot) {
		base = BCMA_SOC_FLASH1;
		lim = BCMA_SOC_FLASH1_SZ;
	} else
#endif
	if (cc->pflash.present) {
		base = cc->pflash.window;
		lim = cc->pflash.window_size;
#ifdef CONFIG_BCMA_SFLASH
	} else if (cc->sflash.present) {
		base = cc->sflash.window;
		lim = cc->sflash.size;
#endif
	} else {
		pr_err("Couldn't find supported flash memory\n");
		return -ENXIO;
	}

	return bcm47xx_nvram_init_from_mem(base, lim);
}
#endif

static int nvram_init(void)
{
	switch (bcm47xx_bus_type) {
#ifdef CONFIG_BCM47XX_SSB
	case BCM47XX_BUS_TYPE_SSB:
		break;
#endif
#ifdef CONFIG_BCM47XX_BCMA
	case BCM47XX_BUS_TYPE_BCMA:
		return nvram_init_bcma();
#endif
	}
	/* TODO: Look for MTD "nvram" partition */

	return -ENXIO;
}

+11 −2
Original line number Diff line number Diff line
@@ -20,6 +20,9 @@
#include <linux/serial_core.h>
#include <linux/serial_reg.h>
#include <linux/time.h>
#ifdef CONFIG_BCM47XX
#include <bcm47xx_nvram.h>
#endif

enum bcma_boot_dev {
	BCMA_BOOT_DEV_UNK = 0,
@@ -323,10 +326,16 @@ static void bcma_core_mips_flash_detect(struct bcma_drv_mips *mcore)
	switch (boot_dev) {
	case BCMA_BOOT_DEV_PARALLEL:
	case BCMA_BOOT_DEV_SERIAL:
		/* TODO: Init NVRAM using BCMA_SOC_FLASH2 window */
#ifdef CONFIG_BCM47XX
		bcm47xx_nvram_init_from_mem(BCMA_SOC_FLASH2,
					    BCMA_SOC_FLASH2_SZ);
#endif
		break;
	case BCMA_BOOT_DEV_NAND:
		/* TODO: Init NVRAM using BCMA_SOC_FLASH1 window */
#ifdef CONFIG_BCM47XX
		bcm47xx_nvram_init_from_mem(BCMA_SOC_FLASH1,
					    BCMA_SOC_FLASH1_SZ);
#endif
		break;
	default:
		break;