From: Serge Semin <sergey.se...@baikalelectronics.ru> Since having and mapping the CDMM block is platform specific, then instead of just returning a zero-address, lets make the default CDMM base address search method (mips_cdmm_phys_base()) to do something useful. For instance to find the address in a dedicated dtb-node in order to support of-based platforms by default.
Signed-off-by: Serge Semin <sergey.se...@baikalelectronics.ru> Cc: Thomas Bogendoerfer <tsbog...@alpha.franken.de> Cc: Alexey Malahov <alexey.mala...@baikalelectronics.ru> Cc: Paul Burton <paulbur...@kernel.org> Cc: Ralf Baechle <r...@linux-mips.org> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: Arnd Bergmann <a...@arndb.de> Cc: Olof Johansson <o...@lixom.net> Cc: Rob Herring <robh...@kernel.org> Cc: linux-m...@vger.kernel.org Cc: linux...@vger.kernel.org Cc: devicet...@vger.kernel.org --- drivers/bus/mips_cdmm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/bus/mips_cdmm.c b/drivers/bus/mips_cdmm.c index 1b14256376d2..7faa8c049f07 100644 --- a/drivers/bus/mips_cdmm.c +++ b/drivers/bus/mips_cdmm.c @@ -16,6 +16,8 @@ #include <linux/platform_device.h> #include <linux/slab.h> #include <linux/smp.h> +#include <linux/of_address.h> +#include <linux/of.h> #include <asm/cdmm.h> #include <asm/hazards.h> #include <asm/mipsregs.h> @@ -337,9 +339,22 @@ static phys_addr_t mips_cdmm_cur_base(void) * Picking a suitable physical address at which to map the CDMM region is * platform specific, so this weak function can be overridden by platform * code to pick a suitable value if none is configured by the bootloader. + * By default this method tries to find a CDMM-specific node in the system + * dtb. Note that this won't work for early serial console. */ phys_addr_t __weak mips_cdmm_phys_base(void) { + struct device_node *np; + struct resource res; + int err; + + np = of_find_compatible_node(NULL, NULL, "mti,mips-cdmm"); + if (np) { + err = of_address_to_resource(np, 0, &res); + if (!err) + return res.start; + } + return 0; } -- 2.25.1