From 74c4acea0dbc8a270e584c01f13f61dcc87e4cbd Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Sun, 12 May 2013 23:54:03 +0400 Subject: [PATCH] of: separate out "generic" memory bank adding This patch separates out the "generic" memory segment registration function (of_add_memory_bank()) from of_add_memory(). The MIPS architecture has different view on memory resources than the ARM and PPC architectures so the "generic" of_add_memory_bank() is unusable for the MIPS architecture. We can add MIPS-specific of_add_memory_bank() into arch/mips code. Signed-off-by: Antony Pavlov Signed-off-by: Sascha Hauer --- drivers/of/Kconfig | 5 +++++ drivers/of/Makefile | 1 + drivers/of/base.c | 8 +------- drivers/of/mem_generic.c | 15 +++++++++++++++ include/of.h | 2 ++ 5 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 drivers/of/mem_generic.c diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index 56762e4f6..ffe063e0b 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig @@ -1,6 +1,11 @@ config OFTREE bool +config OFTREE_MEM_GENERIC + depends on OFTREE + depends on PPC || ARM + def_bool y + config DTC bool diff --git a/drivers/of/Makefile b/drivers/of/Makefile index d16a94624..c81bbec89 100644 --- a/drivers/of/Makefile +++ b/drivers/of/Makefile @@ -1,4 +1,5 @@ obj-y += base.o fdt.o +obj-$(CONFIG_OFTREE_MEM_GENERIC) += mem_generic.o obj-$(CONFIG_GPIOLIB) += gpio.o obj-y += partition.o obj-y += of_net.o diff --git a/drivers/of/base.c b/drivers/of/base.c index 838354982..1158132fa 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -873,7 +873,6 @@ int of_add_memory(struct device_node *node, bool dump) int na, nc; const __be32 *reg, *endp; int len, r = 0, ret; - static char str[6]; const char *device_type; ret = of_property_read_string(node, "device_type", &device_type); @@ -900,12 +899,7 @@ int of_add_memory(struct device_node *node, bool dump) if (size == 0) continue; - sprintf(str, "ram%d", r); - - barebox_add_memory_bank(str, base, size); - - if (dump) - pr_info("%s: %s: 0x%llx@0x%llx\n", node->name, str, size, base); + of_add_memory_bank(node, dump, r, base, size); r++; } diff --git a/drivers/of/mem_generic.c b/drivers/of/mem_generic.c new file mode 100644 index 000000000..9094243c0 --- /dev/null +++ b/drivers/of/mem_generic.c @@ -0,0 +1,15 @@ +#include +#include +#include + +void of_add_memory_bank(struct device_node *node, bool dump, int r, + u64 base, u64 size) +{ + static char str[6]; + + sprintf(str, "ram%d", r); + barebox_add_memory_bank(str, base, size); + + if (dump) + pr_info("%s: %s: 0x%llx@0x%llx\n", node->name, str, size, base); +} diff --git a/include/of.h b/include/of.h index 4dcf37e14..e0fc768e9 100644 --- a/include/of.h +++ b/include/of.h @@ -180,6 +180,8 @@ int of_device_is_stdout_path(struct device_d *dev); const char *of_get_model(void); void *of_flatten_dtb(struct device_node *node); int of_add_memory(struct device_node *node, bool dump); +void of_add_memory_bank(struct device_node *node, bool dump, int r, + u64 base, u64 size); #else static inline int of_parse_partitions(struct cdev *cdev, struct device_node *node)