bcma: only map wrapper if its address is available
The Chipcommon B core does not have a wrap address and it would fail here. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
89be7ceb80
commit
ecf47e9bb7
|
@ -134,12 +134,16 @@ static void bcma_host_soc_block_write(struct bcma_device *core,
|
||||||
|
|
||||||
static u32 bcma_host_soc_aread32(struct bcma_device *core, u16 offset)
|
static u32 bcma_host_soc_aread32(struct bcma_device *core, u16 offset)
|
||||||
{
|
{
|
||||||
|
if (WARN_ONCE(!core->io_wrap, "Accessed core has no wrapper/agent\n"))
|
||||||
|
return ~0;
|
||||||
return readl(core->io_wrap + offset);
|
return readl(core->io_wrap + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset,
|
static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset,
|
||||||
u32 value)
|
u32 value)
|
||||||
{
|
{
|
||||||
|
if (WARN_ONCE(!core->io_wrap, "Accessed core has no wrapper/agent\n"))
|
||||||
|
return;
|
||||||
writel(value, core->io_wrap + offset);
|
writel(value, core->io_wrap + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -421,10 +421,13 @@ static int bcma_get_next_core(struct bcma_bus *bus, u32 __iomem **eromptr,
|
||||||
core->io_addr = ioremap_nocache(core->addr, BCMA_CORE_SIZE);
|
core->io_addr = ioremap_nocache(core->addr, BCMA_CORE_SIZE);
|
||||||
if (!core->io_addr)
|
if (!core->io_addr)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
core->io_wrap = ioremap_nocache(core->wrap, BCMA_CORE_SIZE);
|
if (core->wrap) {
|
||||||
if (!core->io_wrap) {
|
core->io_wrap = ioremap_nocache(core->wrap,
|
||||||
iounmap(core->io_addr);
|
BCMA_CORE_SIZE);
|
||||||
return -ENOMEM;
|
if (!core->io_wrap) {
|
||||||
|
iounmap(core->io_addr);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue