1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- From c6516d2c672450fb27783866397a487511d90bba Mon Sep 17 00:00:00 2001
- From: Hauke Mehrtens <[email protected]>
- Date: Fri, 22 Aug 2014 08:44:52 +0200
- Subject: [PATCH 08/17] bcma: only map wrapper if its address is available
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- The Chipcommon B core does not have a wrap address and it would fail here.
- Signed-off-by: Hauke Mehrtens <[email protected]>
- Signed-off-by: Rafał Miłecki <[email protected]>
- ---
- drivers/bcma/host_soc.c | 4 ++++
- drivers/bcma/scan.c | 11 +++++++----
- 2 files changed, 11 insertions(+), 4 deletions(-)
- --- a/drivers/bcma/host_soc.c
- +++ b/drivers/bcma/host_soc.c
- @@ -137,12 +137,16 @@ static void bcma_host_soc_block_write(st
-
- 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);
- }
-
- static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset,
- u32 value)
- {
- + if (WARN_ONCE(!core->io_wrap, "Accessed core has no wrapper/agent\n"))
- + return;
- writel(value, core->io_wrap + offset);
- }
-
- --- a/drivers/bcma/scan.c
- +++ b/drivers/bcma/scan.c
- @@ -421,10 +421,13 @@ static int bcma_get_next_core(struct bcm
- core->io_addr = ioremap_nocache(core->addr, BCMA_CORE_SIZE);
- if (!core->io_addr)
- return -ENOMEM;
- - core->io_wrap = ioremap_nocache(core->wrap, BCMA_CORE_SIZE);
- - if (!core->io_wrap) {
- - iounmap(core->io_addr);
- - return -ENOMEM;
- + if (core->wrap) {
- + core->io_wrap = ioremap_nocache(core->wrap,
- + BCMA_CORE_SIZE);
- + if (!core->io_wrap) {
- + iounmap(core->io_addr);
- + return -ENOMEM;
- + }
- }
- }
- return 0;
|