ralink: dwc_otg->dwc2
[openwrt.git] / target / linux / bcm53xx / patches-3.14 / 140-bcma-only-map-wrap-if-it-is-not-null.patch
1 From c6516d2c672450fb27783866397a487511d90bba Mon Sep 17 00:00:00 2001
2 From: Hauke Mehrtens <hauke@hauke-m.de>
3 Date: Fri, 22 Aug 2014 08:44:52 +0200
4 Subject: [PATCH 08/17] bcma: only map wrapper if its address is available
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 The Chipcommon B core does not have a wrap address and it would fail here.
10
11 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
12 Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
13 ---
14  drivers/bcma/host_soc.c |  4 ++++
15  drivers/bcma/scan.c     | 11 +++++++----
16  2 files changed, 11 insertions(+), 4 deletions(-)
17
18 --- a/drivers/bcma/host_soc.c
19 +++ b/drivers/bcma/host_soc.c
20 @@ -137,12 +137,16 @@ static void bcma_host_soc_block_write(st
21  
22  static u32 bcma_host_soc_aread32(struct bcma_device *core, u16 offset)
23  {
24 +       if (WARN_ONCE(!core->io_wrap, "Accessed core has no wrapper/agent\n"))
25 +               return ~0;
26         return readl(core->io_wrap + offset);
27  }
28  
29  static void bcma_host_soc_awrite32(struct bcma_device *core, u16 offset,
30                                   u32 value)
31  {
32 +       if (WARN_ONCE(!core->io_wrap, "Accessed core has no wrapper/agent\n"))
33 +               return;
34         writel(value, core->io_wrap + offset);
35  }
36  
37 --- a/drivers/bcma/scan.c
38 +++ b/drivers/bcma/scan.c
39 @@ -421,10 +421,13 @@ static int bcma_get_next_core(struct bcm
40                 core->io_addr = ioremap_nocache(core->addr, BCMA_CORE_SIZE);
41                 if (!core->io_addr)
42                         return -ENOMEM;
43 -               core->io_wrap = ioremap_nocache(core->wrap, BCMA_CORE_SIZE);
44 -               if (!core->io_wrap) {
45 -                       iounmap(core->io_addr);
46 -                       return -ENOMEM;
47 +               if (core->wrap) {
48 +                       core->io_wrap = ioremap_nocache(core->wrap,
49 +                                                       BCMA_CORE_SIZE);
50 +                       if (!core->io_wrap) {
51 +                               iounmap(core->io_addr);
52 +                               return -ENOMEM;
53 +                       }
54                 }
55         }
56         return 0;