Don't allocate address space for bmoca on host CPU
Previously, bmoca defined a platform device that erroneously reserved
the address space 0x10600000-0x107ffd97 on the host (ARM) CPU which does
not make sense. Said interval applies to address space on the BCM6803
not the ARM CPU.
This is the content of /proc/iomem from before the change:
GSAFSJ1403E0024# cat /proc/iomem
00000000-02bfffff : System RAM
03400000-03ffffff : ddr
04000000-3fffffff : System RAM
04008000-04510fff : Kernel text
0453e000-045b23c7 : Kernel data
10600000-107ffd97 : bmoca.0
83000000-83001fff : iram
904500d0-904500d8 : comcerto_wdt
Change-Id: I892ad68aa9116e749ddbe16b0a2e5b72ca48ab1e
diff --git a/3.3/bmoca.c b/3.3/bmoca.c
index e8f1829..4d9a906 100644
--- a/3.3/bmoca.c
+++ b/3.3/bmoca.c
@@ -2382,7 +2382,10 @@
static int moca_probe(struct platform_device *pdev)
{
struct moca_priv_data *priv;
+#if !defined(CONFIG_BCM_6802_MoCA)
struct resource *mres, *ires = NULL;
+#endif
+ unsigned long long base;
int minor, err = 0;
struct moca_platform_data *pd = pdev->dev.platform_data;
@@ -2461,6 +2464,12 @@
goto bad;
}
+#if defined(CONFIG_BCM_6802_MoCA)
+ base = pd->spi_base;
+ priv->base = (void *)pd->spi_base;
+ priv->irq = pd->spi->irq;
+ priv->i2c_base = (void *)pd->bcm3450_i2c_base;
+#else
mres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@@ -2470,11 +2479,7 @@
goto bad;
}
-#if defined(CONFIG_BCM_6802_MoCA)
- priv->base = (void *)mres->start;
- priv->irq = pd->spi->irq;
- priv->i2c_base = (void *)pd->bcm3450_i2c_base;
-#else
+ base = mres->start;
priv->base = ioremap(mres->start, mres->end - mres->start + 1);
priv->irq = ires->start;
priv->i2c_base = ioremap(pd->bcm3450_i2c_base, sizeof(struct bsc_regs));
@@ -2496,7 +2501,7 @@
printk(KERN_INFO "bmoca: adding minor #%d at base 0x%08llx, IRQ %d, "
"I2C 0x%08llx/0x%02x\n", priv->minor,
- (unsigned long long)mres->start, priv->irq,
+ base, priv->irq,
(unsigned long long)pd->bcm3450_i2c_base, pd->bcm3450_i2c_addr);
minor_tbl[priv->minor] = priv;
diff --git a/bmoca-6802.c b/bmoca-6802.c
index 5714cad..78910ae 100644
--- a/bmoca-6802.c
+++ b/bmoca-6802.c
@@ -87,6 +87,7 @@
.bcm3450_i2c_base = 0x10406200,
.bcm3450_i2c_addr = 0x70,
+ .spi_base = 0x10600000,
.hw_rev = HWREV_MOCA_20_GEN22,
.rf_band = MOCA_BAND_EXT_D,
.chip_id = 0,
@@ -98,24 +99,11 @@
#endif
};
-static struct resource moca_lan_resources[] = {
- [0] = {
- .start = 0x10600000,
- .end = 0x107ffd97,
- .flags = IORESOURCE_MEM,
- },
- [1] = { /* Not used for 6802, define for bmoca */
- .start = 0,
- .end = 0,
- .flags = IORESOURCE_IRQ,
- }
-};
-
static struct platform_device moca_lan_plat_dev = {
.name = "bmoca",
.id = 0,
- .num_resources = ARRAY_SIZE(moca_lan_resources),
- .resource = moca_lan_resources,
+ .num_resources = 0,
+ .resource = NULL,
.dev = {
.platform_data = &moca_lan_data,
.release = bogus_release,
@@ -128,6 +116,7 @@
.bcm3450_i2c_base = 0x10406200,
.bcm3450_i2c_addr = 0x70,
+ .spi_base = 0x10600000,
.hw_rev = HWREV_MOCA_20_GEN22,
.chip_id = 0,
@@ -142,24 +131,11 @@
#endif
};
-static struct resource moca_wan_resources[] = {
- [0] = {
- .start = 0x10600000,
- .end = 0x107ffd97,
- .flags = IORESOURCE_MEM,
- },
- [1] = { /* Not used for 6802, define for bmoca */
- .start = 0,
- .end = 0,
- .flags = IORESOURCE_IRQ,
- }
-};
-
static struct platform_device moca_wan_plat_dev = {
.name = "bmoca",
.id = 1,
- .num_resources = ARRAY_SIZE(moca_wan_resources),
- .resource = moca_wan_resources,
+ .num_resources = 0,
+ .resource = NULL,
.dev = {
.platform_data = &moca_wan_data,
.release = bogus_release,
diff --git a/bmoca.h b/bmoca.h
index 0c238f5..3014df6 100644
--- a/bmoca.h
+++ b/bmoca.h
@@ -160,6 +160,8 @@
phys_addr_t bcm3450_i2c_base;
int bcm3450_i2c_addr;
+ u32 spi_base;
+
u32 hw_rev; /* this is the chip_id */
u32 rf_band;