From 3ef903c1c5fb5bdd9d78a7d899868f7c47c5087e Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Mon, 8 Sep 2014 10:53:04 +0400 Subject: net: ethoc: add device tree support Signed-off-by: Antony Pavlov Cc: Franck Jullien Signed-off-by: Sascha Hauer --- drivers/net/ethoc.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'drivers') diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c index 679e1e552a..35d7d4623b 100644 --- a/drivers/net/ethoc.c +++ b/drivers/net/ethoc.c @@ -565,8 +565,14 @@ static int ethoc_probe(struct device_d *dev) return 0; } +static struct of_device_id ethoc_dt_ids[] = { + { .compatible = "opencores,ethoc", }, + { } +}; + static struct driver_d ethoc_driver = { .name = "ethoc", .probe = ethoc_probe, + .of_compatible = DRV_OF_COMPAT(ethoc_dt_ids), }; device_platform_driver(ethoc_driver); -- cgit v1.2.3 From 9a585cd7327d0bdcfc51e120c1b7f5f45354116b Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Mon, 8 Sep 2014 10:53:05 +0400 Subject: openrisc: add initial device tree support Signed-off-by: Antony Pavlov Cc: Franck Jullien Signed-off-by: Sascha Hauer --- arch/openrisc/Kconfig | 9 +++++++++ arch/openrisc/Makefile | 7 +++++++ arch/openrisc/cpu/barebox.lds.S | 2 ++ arch/openrisc/dts/Makefile | 5 +++++ arch/openrisc/lib/Makefile | 1 + arch/openrisc/lib/dtb.c | 44 +++++++++++++++++++++++++++++++++++++++++ drivers/of/Kconfig | 2 +- 7 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 arch/openrisc/dts/Makefile create mode 100644 arch/openrisc/lib/dtb.c (limited to 'drivers') diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index 23c6a71f3a..483ae6db4a 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig @@ -1,5 +1,6 @@ config OPENRISC bool + select OFTREE select HAS_CACHE select HAVE_CONFIGURABLE_MEMORY_LAYOUT select HAVE_DEFAULT_ENVIRONMENT_NEW @@ -11,6 +12,14 @@ config ARCH_TEXT_BASE hex default 0x00000000 +config BUILTIN_DTB + bool "link a DTB into the barebox image" + depends on OFTREE + +config BUILTIN_DTB_NAME + string "DTB to build into the barebox image" + depends on BUILTIN_DTB + choice prompt "Select your board" diff --git a/arch/openrisc/Makefile b/arch/openrisc/Makefile index fd8bbbf4d7..b0c8566e4e 100644 --- a/arch/openrisc/Makefile +++ b/arch/openrisc/Makefile @@ -19,3 +19,10 @@ common-y += arch/openrisc/lib/ common-y += arch/openrisc/cpu/ lds-y += arch/openrisc/cpu/barebox.lds + +common-$(CONFIG_BUILTIN_DTB) += arch/openrisc/dts/ + +dts := arch/openrisc/dts + +%.dtb: scripts + $(Q)$(MAKE) $(build)=$(dts) $(dts)/$@ diff --git a/arch/openrisc/cpu/barebox.lds.S b/arch/openrisc/cpu/barebox.lds.S index add9181e13..dbecdbfbfc 100644 --- a/arch/openrisc/cpu/barebox.lds.S +++ b/arch/openrisc/cpu/barebox.lds.S @@ -69,6 +69,8 @@ SECTIONS __usymtab : { BAREBOX_SYMS } > ram ___usymtab_end = .; + .dtb : { BAREBOX_DTB() } > ram + __etext = .; /* End of text and rodata section */ . = ALIGN(4); diff --git a/arch/openrisc/dts/Makefile b/arch/openrisc/dts/Makefile new file mode 100644 index 0000000000..6d6c9a3ce0 --- /dev/null +++ b/arch/openrisc/dts/Makefile @@ -0,0 +1,5 @@ + +BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME)) +obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o + +clean-files := *.dtb *.dtb.S diff --git a/arch/openrisc/lib/Makefile b/arch/openrisc/lib/Makefile index 0b3cc5068c..62082feed0 100644 --- a/arch/openrisc/lib/Makefile +++ b/arch/openrisc/lib/Makefile @@ -5,3 +5,4 @@ obj-y += muldi3.o obj-y += lshrdi3.o obj-y += ashldi3.o obj-y += ashrdi3.o +obj-$(CONFIG_BUILTIN_DTB) += dtb.o diff --git a/arch/openrisc/lib/dtb.c b/arch/openrisc/lib/dtb.c new file mode 100644 index 0000000000..4f63a7760f --- /dev/null +++ b/arch/openrisc/lib/dtb.c @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2014 Antony Pavlov + * + * Based on arch/arm/cpu/dtb.c: + * Copyright (C) 2013 Sascha Hauer , Pengutronix + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#include +#include +#include + +extern char __dtb_start[]; + +static int of_openrisc_init(void) +{ + struct device_node *root; + + root = of_get_root_node(); + if (root) + return 0; + + root = of_unflatten_dtb(__dtb_start); + if (root) { + pr_debug("using internal DTB\n"); + of_set_root_node(root); + if (IS_ENABLED(CONFIG_OFDEVICE)) + of_probe(); + } + + return 0; +} +core_initcall(of_openrisc_init); diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig index 81955063d7..97a1d933ec 100644 --- a/drivers/of/Kconfig +++ b/drivers/of/Kconfig @@ -4,7 +4,7 @@ config OFTREE config OFTREE_MEM_GENERIC depends on OFTREE - depends on PPC || ARM || ARCH_EFI + depends on PPC || ARM || ARCH_EFI || OPENRISC def_bool y config DTC -- cgit v1.2.3