base-files: define yes/no as valid boolean options
[openwrt.git] / target / linux / mvebu / patches-3.10 / 0043-bus-mvebu-mbus-Factor-out-initialization-details.patch
1 From 5be79ea0d2bcec8c7360cfe3e7a491e5f176fa84 Mon Sep 17 00:00:00 2001
2 From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
3 Date: Tue, 21 May 2013 10:44:54 -0300
4 Subject: [PATCH 043/203] bus: mvebu-mbus: Factor out initialization details
5
6 We introduce a common initialization function mvebu_mbus_common_init()
7 that will be used by both legacy and device-tree initialization code.
8 This patch is an intermediate step, which will allow to introduce the
9 DT binding for this driver in a less intrusive way.
10
11 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
12 Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
13 Tested-by: Andrew Lunn <andrew@lunn.ch>
14 Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
15 ---
16  drivers/bus/mvebu-mbus.c | 47 ++++++++++++++++++++++++++++++-----------------
17  1 file changed, 30 insertions(+), 17 deletions(-)
18
19 --- a/drivers/bus/mvebu-mbus.c
20 +++ b/drivers/bus/mvebu-mbus.c
21 @@ -847,26 +847,14 @@ static __init int mvebu_mbus_debugfs_ini
22  }
23  fs_initcall(mvebu_mbus_debugfs_init);
24  
25 -int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
26 -                          size_t mbuswins_size,
27 -                          phys_addr_t sdramwins_phys_base,
28 -                          size_t sdramwins_size)
29 +static int __init mvebu_mbus_common_init(struct mvebu_mbus_state *mbus,
30 +                                        phys_addr_t mbuswins_phys_base,
31 +                                        size_t mbuswins_size,
32 +                                        phys_addr_t sdramwins_phys_base,
33 +                                        size_t sdramwins_size)
34  {
35 -       struct mvebu_mbus_state *mbus = &mbus_state;
36 -       const struct of_device_id *of_id;
37         int win;
38  
39 -       for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
40 -               if (!strcmp(of_id->compatible, soc))
41 -                       break;
42 -
43 -       if (!of_id->compatible) {
44 -               pr_err("could not find a matching SoC family\n");
45 -               return -ENODEV;
46 -       }
47 -
48 -       mbus->soc = of_id->data;
49 -
50         mbus->mbuswins_base = ioremap(mbuswins_phys_base, mbuswins_size);
51         if (!mbus->mbuswins_base)
52                 return -ENOMEM;
53 @@ -887,3 +875,28 @@ int __init mvebu_mbus_init(const char *s
54  
55         return 0;
56  }
57 +
58 +int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
59 +                          size_t mbuswins_size,
60 +                          phys_addr_t sdramwins_phys_base,
61 +                          size_t sdramwins_size)
62 +{
63 +       const struct of_device_id *of_id;
64 +
65 +       for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
66 +               if (!strcmp(of_id->compatible, soc))
67 +                       break;
68 +
69 +       if (!of_id->compatible) {
70 +               pr_err("could not find a matching SoC family\n");
71 +               return -ENODEV;
72 +       }
73 +
74 +       mbus_state.soc = of_id->data;
75 +
76 +       return mvebu_mbus_common_init(&mbus_state,
77 +                       mbuswins_phys_base,
78 +                       mbuswins_size,
79 +                       sdramwins_phys_base,
80 +                       sdramwins_size);
81 +}