Commit 6bd6b3cb authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Jason Cooper

bus: mvebu-mbus: Factor out initialization details

We introduce a common initialization function mvebu_mbus_common_init()
that will be used by both legacy and device-tree initialization code.
This patch is an intermediate step, which will allow to introduce the
DT binding for this driver in a less intrusive way.
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: default avatarAndrew Lunn <andrew@lunn.ch>
Tested-by: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 89a7fbfb
...@@ -847,26 +847,14 @@ static __init int mvebu_mbus_debugfs_init(void) ...@@ -847,26 +847,14 @@ static __init int mvebu_mbus_debugfs_init(void)
} }
fs_initcall(mvebu_mbus_debugfs_init); fs_initcall(mvebu_mbus_debugfs_init);
int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base, static int __init mvebu_mbus_common_init(struct mvebu_mbus_state *mbus,
size_t mbuswins_size, phys_addr_t mbuswins_phys_base,
phys_addr_t sdramwins_phys_base, size_t mbuswins_size,
size_t sdramwins_size) phys_addr_t sdramwins_phys_base,
size_t sdramwins_size)
{ {
struct mvebu_mbus_state *mbus = &mbus_state;
const struct of_device_id *of_id;
int win; int win;
for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
if (!strcmp(of_id->compatible, soc))
break;
if (!of_id->compatible) {
pr_err("could not find a matching SoC family\n");
return -ENODEV;
}
mbus->soc = of_id->data;
mbus->mbuswins_base = ioremap(mbuswins_phys_base, mbuswins_size); mbus->mbuswins_base = ioremap(mbuswins_phys_base, mbuswins_size);
if (!mbus->mbuswins_base) if (!mbus->mbuswins_base)
return -ENOMEM; return -ENOMEM;
...@@ -887,3 +875,28 @@ int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base, ...@@ -887,3 +875,28 @@ int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
return 0; return 0;
} }
int __init mvebu_mbus_init(const char *soc, phys_addr_t mbuswins_phys_base,
size_t mbuswins_size,
phys_addr_t sdramwins_phys_base,
size_t sdramwins_size)
{
const struct of_device_id *of_id;
for (of_id = of_mvebu_mbus_ids; of_id->compatible; of_id++)
if (!strcmp(of_id->compatible, soc))
break;
if (!of_id->compatible) {
pr_err("could not find a matching SoC family\n");
return -ENODEV;
}
mbus_state.soc = of_id->data;
return mvebu_mbus_common_init(&mbus_state,
mbuswins_phys_base,
mbuswins_size,
sdramwins_phys_base,
sdramwins_size);
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment