From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1eV6eX-0002G8-2p for barebox@lists.infradead.org; Sat, 30 Dec 2017 02:13:39 +0000 Received: by mail-qt0-x242.google.com with SMTP id d4so55893809qtj.5 for ; Fri, 29 Dec 2017 18:13:26 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <20171227211839.2359-2-sam@ravnborg.org> References: <20171227211743.GA1084@ravnborg.org> <20171227211839.2359-2-sam@ravnborg.org> From: Andrey Smirnov Date: Fri, 29 Dec 2017 18:13:24 -0800 Message-ID: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH 2/5] at91sam9263ek: add DT file from Linux kernel v4.14-rc4 To: Sam Ravnborg Cc: Barebox List On Wed, Dec 27, 2017 at 1:18 PM, Sam Ravnborg wrote: > Include the at91sam9263ek.dts file from > linux kernel v4.14-rc4 and wire it up in the build. > > Prepare at91sam9263ek lowlevel_init.c to use DT. > > Signed-off-by: Sam Ravnborg > --- > arch/arm/boards/at91sam9263ek/lowlevel_init.c | 22 ++- > arch/arm/dts/Makefile | 2 +- > arch/arm/dts/at91sam9263ek.dts | 246 ++++++++++++++++++++++++++ > arch/arm/mach-at91/Kconfig | 7 + > 4 files changed, 273 insertions(+), 4 deletions(-) > create mode 100644 arch/arm/dts/at91sam9263ek.dts > > diff --git a/arch/arm/boards/at91sam9263ek/lowlevel_init.c b/arch/arm/boards/at91sam9263ek/lowlevel_init.c > index 3138bc7ca..86d7a79e9 100644 > --- a/arch/arm/boards/at91sam9263ek/lowlevel_init.c > +++ b/arch/arm/boards/at91sam9263ek/lowlevel_init.c > @@ -99,7 +99,7 @@ static void __bare_init at91sam9263ek_board_config(struct at91sam926x_board_cfg > AT91_RSTC_RSTTYP_WATCHDOG; > } > > -static void __bare_init at91sam9263ek_init(void) > +static void __bare_init at91sam9263ek_init(void *fdt) > { > struct at91sam926x_board_cfg cfg; > > @@ -112,14 +112,30 @@ static void __bare_init at91sam9263ek_init(void) > at91sam926x_board_init(&cfg); > > barebox_arm_entry(AT91_CHIPSELECT_1, at91_get_sdram_size(cfg.sdramc), > - NULL); > + fdt); > } > > +#ifdef CONFIG_MACH_AT91SAM9263EK_DT > +extern char __dtb_at91sam9263ek_start[]; > + > +ENTRY_FUNCTION(start_at91sam9263ek, r0, r1, r2) > +{ > + void *fdt; > + > + arm_cpu_lowlevel_init(); > + > + arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16); > + fdt = __dtb_at91sam9263ek_start - get_runtime_offset(); > + > + at91sam9263ek_init(fdt); > +} > +#else > ENTRY_FUNCTION(start_at91sam9263ek, r0, r1, r2) > { > arm_cpu_lowlevel_init(); > > arm_setup_stack(AT91SAM9263_SRAM0_BASE + AT91SAM9263_SRAM0_SIZE - 16); > > - at91sam9263ek_init(); > + at91sam9263ek_init(NULL); > } > +#endif I think you can get away with defining this function once if you do: if (IS_ENABLED(CONFIG_MACH_AT91SAM9263EK_DT)) fdt = __dtb_at91sam9263ek_start - get_runtime_offset(); else fdt = NULL; at91sam9263ek_init(fdt); > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index 4f13d4e37..0526a6f40 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -104,7 +104,7 @@ pbl-dtb-$(CONFIG_MACH_ZII_VF610_DEV) += \ > vf610-zii-cfu1-rev-a.dtb.o \ > vf610-zii-spu3-rev-a.dtb.o \ > vf610-zii-scu4-aib-rev-c.dtb.o > - > +pbl-dtb-$(CONFIG_MACH_AT91SAM9263EK_DT) += at91sam9263ek.dtb.o > pbl-dtb-$(CONFIG_MACH_AT91SAM9X5EK) += at91sam9x5ek.dtb.o > > clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts *.dtb.lzo > diff --git a/arch/arm/dts/at91sam9263ek.dts b/arch/arm/dts/at91sam9263ek.dts > new file mode 100644 > index 000000000..224748ecc > --- /dev/null > +++ b/arch/arm/dts/at91sam9263ek.dts > @@ -0,0 +1,246 @@ > +/* > + * at91sam9263ek.dts - Device Tree file for Atmel at91sam9263 reference board > + * > + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD > + * > + * Licensed under GPLv2 only > + */ > +/dts-v1/; > +#include "arm/at91sam9263.dtsi" > + AFAIU you are including this from the "dts/" directory, so you may as well use angle brackets to indicate that, e.g. #include . But more importantly, is there a way you can use and avoid bringing all of the code below in? The only reason I didn't do that for 9x5ek was because the kernel doesn't have a generic 9x5ek.dts and instead it has specific files for every value of "x", so to speak (9g45ek, 9g15ek, etc). E.g. something like this: https://git.pengutronix.de/cgit/barebox/tree/arch/arm/dts/vf610-zii-dev-rev-c.dts?h=next > +/ { > + model = "Atmel at91sam9263ek"; > + compatible = "atmel,at91sam9263ek", "atmel,at91sam9263", "atmel,at91sam9"; > + > + chosen { > + bootargs = "mem=64M root=/dev/mtdblock5 rw rootfstype=ubifs"; > + stdout-path = "serial0:115200n8"; > + }; > + > + memory { > + reg = <0x20000000 0x4000000>; > + }; > + > + clocks { > + slow_xtal { > + clock-frequency = <32768>; > + }; > + > + main_xtal { > + clock-frequency = <16367660>; > + }; > + }; > + > + ahb { > + apb { > + dbgu: serial@ffffee00 { > + status = "okay"; > + }; > + > + usart0: serial@fff8c000 { > + pinctrl-0 = < > + &pinctrl_usart0 > + &pinctrl_usart0_rts > + &pinctrl_usart0_cts>; > + status = "okay"; > + }; > + > + macb0: ethernet@fffbc000 { > + phy-mode = "rmii"; > + status = "okay"; > + }; > + > + usb1: gadget@fff78000 { > + atmel,vbus-gpio = <&pioA 25 GPIO_ACTIVE_HIGH>; > + status = "okay"; > + }; > + > + mmc0: mmc@fff80000 { > + pinctrl-0 = < > + &pinctrl_board_mmc0 > + &pinctrl_mmc0_clk > + &pinctrl_mmc0_slot0_cmd_dat0 > + &pinctrl_mmc0_slot0_dat1_3>; > + status = "okay"; > + slot@0 { > + reg = <0>; > + bus-width = <4>; > + cd-gpios = <&pioE 18 GPIO_ACTIVE_HIGH>; > + wp-gpios = <&pioE 19 GPIO_ACTIVE_HIGH>; > + }; > + }; > + > + pinctrl@fffff200 { > + mmc0 { > + pinctrl_board_mmc0: mmc0-board { > + atmel,pins = > + + AT91_PIOE 19 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PE19 gpio WP pin pull up */ > + }; > + }; > + }; > + > + spi0: spi@fffa4000 { > + status = "okay"; > + cs-gpios = <&pioA 5 0>, <0>, <0>, <0>; > + mtd_dataflash@0 { > + compatible = "atmel,at45", "atmel,dataflash"; > + spi-max-frequency = <50000000>; > + reg = <0>; > + }; > + }; > + > + watchdog@fffffd40 { > + status = "okay"; > + }; > + }; > + > + fb0: fb@0x00700000 { > + display = <&display0>; > + status = "okay"; > + > + display0: display { > + bits-per-pixel = <16>; > + atmel,lcdcon-backlight; > + atmel,dmacon = <0x1>; > + atmel,lcdcon2 = <0x80008002>; > + atmel,guard-time = <1>; > + > + display-timings { > + native-mode = <&timing0>; > + timing0: timing0 { > + clock-frequency = <4965000>; > + hactive = <240>; > + vactive = <320>; > + hback-porch = <1>; > + hfront-porch = <33>; > + vback-porch = <1>; > + vfront-porch = <0>; > + hsync-len = <5>; > + vsync-len = <1>; > + hsync-active = <1>; > + vsync-active = <1>; > + }; > + }; > + }; > + }; > + > + ebi0: ebi@10000000 { > + status = "okay"; > + > + nand_controller: nand-controller { > + status = "okay"; > + pinctrl-0 = <&pinctrl_nand_cs &pinctrl_nand_rb>; > + pinctrl-names = "default"; > + > + nand@3 { > + reg = <0x3 0x0 0x800000>; > + rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>; > + cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>; > + nand-bus-width = <8>; > + nand-ecc-mode = "soft"; > + nand-on-flash-bbt; > + label = "atmel_nand"; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + at91bootstrap@0 { > + label = "at91bootstrap"; > + reg = <0x0 0x20000>; > + }; > + > + barebox@20000 { > + label = "barebox"; > + reg = <0x20000 0x40000>; > + }; > + > + bareboxenv@60000 { > + label = "bareboxenv"; > + reg = <0x60000 0x20000>; > + }; > + > + bareboxenv2@80000 { > + label = "bareboxenv2"; > + reg = <0x80000 0x20000>; > + }; > + > + oftree@80000 { > + label = "oftree"; > + reg = <0xa0000 0x20000>; > + }; > + > + kernel@a0000 { > + label = "kernel"; > + reg = <0xc0000 0x400000>; > + }; > + > + rootfs@4a0000 { > + label = "rootfs"; > + reg = <0x4c0000 0x7800000>; > + }; > + > + data@7ca0000 { > + label = "data"; > + reg = <0x7cc0000 0x8340000>; > + }; > + }; > + }; > + }; > + }; > + > + usb0: ohci@00a00000 { > + num-ports = <2>; > + status = "okay"; > + atmel,vbus-gpio = <&pioA 24 GPIO_ACTIVE_HIGH > + &pioA 21 GPIO_ACTIVE_HIGH > + >; > + }; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + d3 { > + label = "d3"; > + gpios = <&pioB 7 GPIO_ACTIVE_HIGH>; > + linux,default-trigger = "heartbeat"; > + }; > + > + d2 { > + label = "d2"; > + gpios = <&pioC 29 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "nand-disk"; > + }; > + }; > + > + gpio_keys { > + compatible = "gpio-keys"; > + > + left_click { > + label = "left_click"; > + gpios = <&pioC 5 GPIO_ACTIVE_LOW>; > + linux,code = <272>; > + wakeup-source; > + }; > + > + right_click { > + label = "right_click"; > + gpios = <&pioC 4 GPIO_ACTIVE_LOW>; > + linux,code = <273>; > + wakeup-source; > + }; > + }; > + > + i2c-gpio-0 { > + status = "okay"; > + > + 24c512@50 { > + compatible = "24c512"; > + reg = <0x50>; > + pagesize = <128>; > + }; > + }; > +}; > diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig > index f5160ade1..5e9c575cc 100644 > --- a/arch/arm/mach-at91/Kconfig > +++ b/arch/arm/mach-at91/Kconfig > @@ -20,6 +20,13 @@ config COMMON_CLK_AT91 > select COMMON_CLK > select MFD_SYSCON > > +config MACH_AT91SAM9263EK_DT > + def_bool y > + depends on MACH_AT91SAM9263EK && OFDEVICE > + help > + Enabled for at91sam9263ek - evaluation kit. > + But only if we need the device tree (bootstrap do not use DT) > + > config HAVE_AT91_SMD > bool > > -- > 2.12.0 > > > _______________________________________________ > barebox mailing list > barebox@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox