diff mbox

[4/4] arm: dts: add support for Laird SOM60 module and DVK boards

Message ID 1528966340-23216-4-git-send-email-ben.whitten@lairdtech.com (mailing list archive)
State New, archived
Headers show

Commit Message

Ben Whitten June 14, 2018, 8:51 a.m. UTC
Signed-off-by: Ben Whitten <ben.whitten@lairdtech.com>
---
 arch/arm/boot/dts/Makefile                    |   3 +-
 arch/arm/boot/dts/at91-dvk_som60.dts          |  95 +++++++++++
 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi     | 159 ++++++++++++++++++
 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi |  96 +++++++++++
 arch/arm/boot/dts/at91-som60.dtsi             | 229 ++++++++++++++++++++++++++
 5 files changed, 581 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/boot/dts/at91-dvk_som60.dts
 create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
 create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
 create mode 100644 arch/arm/boot/dts/at91-som60.dtsi

Comments

Nicolas Ferre June 14, 2018, 1:14 p.m. UTC | #1
On 14/06/2018 at 10:51, Ben Whitten wrote:
> Signed-off-by: Ben Whitten <ben.whitten@lairdtech.com>
> ---
>   arch/arm/boot/dts/Makefile                    |   3 +-
>   arch/arm/boot/dts/at91-dvk_som60.dts          |  95 +++++++++++
>   arch/arm/boot/dts/at91-dvk_su60_somc.dtsi     | 159 ++++++++++++++++++
>   arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi |  96 +++++++++++
>   arch/arm/boot/dts/at91-som60.dtsi             | 229 ++++++++++++++++++++++++++
>   5 files changed, 581 insertions(+), 1 deletion(-)
>   create mode 100644 arch/arm/boot/dts/at91-dvk_som60.dts
>   create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
>   create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
>   create mode 100644 arch/arm/boot/dts/at91-som60.dtsi
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 486ab59..4d3d9ca 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -63,7 +63,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
>   	at91-sama5d4ek.dtb \
>   	at91-vinco.dtb \

About where you added dtbs...

>   	at91-wb50n.dtb \
> -	at91-gatwick.dtb
> +	at91-gatwick.dtb \
> +	at91-dvk_som60.dtb

1/ As they are based on sama5d3, I would like to see them between 
"at91-sama5d2_xplained.dtb" and "sama5d31ek.dtb"
2/ within this range, please sort all these 4 alphabetically
3/ don't laugh at me, I try to deal with our historical way of "sorting" 
entries in this Makefile for AT91... ;-)

BTW, I realize now that your "at91-wb45n.dtb" entry from patch 1 should 
go just after the "at91-kizboxmini.dts" (alphabetical order in 
at91sam9x5 "location").


>   dtb-$(CONFIG_ARCH_ATLAS6) += \
>   	atlas6-evb.dtb
>   dtb-$(CONFIG_ARCH_ATLAS7) += \
> diff --git a/arch/arm/boot/dts/at91-dvk_som60.dts b/arch/arm/boot/dts/at91-dvk_som60.dts
> new file mode 100644
> index 0000000..ededd5b
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91-dvk_som60.dts
> @@ -0,0 +1,95 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * at91-dvk_som60.dts - Device Tree file for the DVK SOM60 board
> + *
> + *  Copyright (C) 2018 Laird,
> + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> + *
> + */
> +/dts-v1/;
> +#include "at91-som60.dtsi"
> +#include "at91-dvk_su60_somc.dtsi"
> +#include "at91-dvk_su60_somc_lcm.dtsi"
> +
> +/ {
> +	model = "Laird DVK SOM60";
> +	compatible = "laird,dvk-som60", "laird,som60", "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
> +
> +	chosen {
> +		stdout-path = &dbgu;
> +		tick-timer = &pit;
> +	};
> +};
> +
> +&mmc0 {
> +	status = "okay";
> +};
> +
> +&spi0 {
> +	status = "okay";
> +};
> +
> +&ssc0 {
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	status = "okay";
> +};
> +
> +&i2c1 {
> +	status = "okay";
> +};
> +
> +&usart1 {
> +	status = "okay";
> +};
> +
> +&usart2 {
> +	status = "okay";
> +};
> +
> +&usart3 {
> +	status = "okay";
> +};
> +
> +&uart0 {
> +	status = "okay";
> +};
> +
> +&dbgu {
> +	status = "okay";
> +};
> +
> +&pit {
> +	status = "okay";
> +};
> +
> +&adc0 {
> +	status = "okay";
> +};
> +
> +&can1 {
> +	status = "okay";
> +};
> +
> +&macb0 {
> +	status = "okay";
> +};
> +
> +&macb1 {
> +	status = "okay";
> +};
> +
> +&usb0 {
> +	status = "okay";
> +};
> +
> +&usb1 {
> +	status = "okay";
> +};
> +
> +&usb2 {
> +	status = "okay";
> +};
> +
> diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> new file mode 100644
> index 0000000..6031c2f
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> @@ -0,0 +1,159 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * at91-dvk_su60_somc.dtsi - Device Tree file for the DVK SOM60 base board
> + *
> + *  Copyright (C) 2018 Laird,
> + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> + *
> + */
> +
> +/ {
> +	sound {
> +		compatible = "atmel,asoc-wm8904";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_pck2_as_audio_mck>;
> +
> +		atmel,model = "wm8904 @ DVK-SOM60";
> +		atmel,audio-routing =
> +			"Headphone Jack", "HPOUTL",
> +			"Headphone Jack", "HPOUTR",
> +			"IN2L", "Line In Jack",
> +			"IN2R", "Line In Jack",
> +			"Mic", "MICBIAS",
> +			"IN1L", "Mic";
> +
> +		atmel,ssc-controller = <&ssc0>;
> +		atmel,audio-codec = <&wm8904>;
> +
> +		status = "okay";
> +	};
> +};
> +
> +&mmc0 {
> +	status = "okay";
> +
> +	pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
> +	slot@0 {
> +		bus-width = <4>;
> +		cd-gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
> +		cd-inverted;
> +	};
> +};
> +
> +&spi0 {
> +	status = "okay";
> +
> +	/* spi0.0: 4M Flash Macronix MX25R4035FM1IL0 */
> +	spi-flash@0 {
> +		compatible = "mxicy,mx25u4035", "jedec,spi-nor";
> +		spi-max-frequency = <33000000>;
> +		reg = <0>;
> +	};
> +};
> +
> +&ssc0 {
> +	atmel,clk-from-rk-pin;
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	status = "okay";
> +
> +	wm8904: wm8904@1a {
> +		compatible = "wlf,wm8904";
> +		reg = <0x1a>;
> +		clocks = <&pck2>;
> +		clock-names = "mclk";
> +	};
> +};
> +
> +&i2c1 {
> +	status = "okay";
> +
> +	eeprom@87 {
> +		compatible = "giantec,24c32";

It must work, however...

I read in recent patches on dts directory that :

"We now require all at24 users to use the "atmel,<model>" fallback in 
device tree for different manufacturers."

Moreover, I don't see giantec in the vendor prefix list.


> +		reg = <87>;
> +		pagesize = <32>;
> +	};
> +};
> +
> +&usart1 {
> +	status = "okay";
> +};
> +
> +&usart2 {
> +	status = "okay";
> +};
> +
> +&usart3 {
> +	status = "okay";
> +};
> +
> +&uart0 {
> +	status = "okay";
> +};
> +
> +&dbgu {
> +	status = "okay";
> +};
> +
> +&pit {
> +	status = "okay";
> +};
> +
> +&adc0 {
> +	status = "okay";
> +};
> +
> +&can1 {
> +	status = "okay";
> +};
> +
> +&macb0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	status = "okay";
> +
> +	ethernet-phy@7 {
> +		reg = <7>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_geth_int>;
> +		interrupt-parent = <&pioB>;
> +		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> +		txen-skew-ps = <800>;
> +		txc-skew-ps = <3000>;
> +		rxdv-skew-ps = <400>;
> +		rxc-skew-ps = <3000>;
> +		rxd0-skew-ps = <400>;
> +		rxd1-skew-ps = <400>;
> +		rxd2-skew-ps = <400>;
> +		rxd3-skew-ps = <400>;
> +	};
> +};
> +
> +&macb1 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	status = "okay";
> +
> +	ethernet-phy@1 {
> +		reg = <1>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_eth_int>;
> +		interrupt-parent = <&pioC>;
> +		interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
> +	};
> +};
> +
> +&usb0 {
> +	status = "okay";
> +};
> +
> +&usb1 {
> +	status = "okay";
> +};
> +
> +&usb2 {
> +	status = "okay";
> +};
> +
> diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> new file mode 100644
> index 0000000..d98c644
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> @@ -0,0 +1,96 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * at91-dvk_su60_somc_lcm.dtsi - Device Tree file for the DVK SOM60 LCD board
> + *
> + *  Copyright (C) 2018 Laird,
> + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> + *
> + */
> +
> +/ {
> +	ahb {
> +		apb {
> +			pinctrl@fffff200 {
> +				board {
> +					pinctrl_lcd_ctp_int: lcd_ctp_int {
> +						 atmel,pins =
> +							 <AT91_PIOC 28 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
> +					};
> +				};
> +			};
> +		};
> +	};
> +
> +	backlight: backlight {
> +		compatible = "pwm-backlight";
> +		pwms = <&hlcdc_pwm 0 50000 0>;
> +		brightness-levels = <0 4 8 16 32 64 128 255>;
> +		default-brightness-level = <6>;
> +		status = "okay";
> +	};
> +
> +	panel: panel {
> +		/* Actually Winstar WF70GTIAGDNG0 */
> +		compatible = "innolux,at070tn92", "simple-panel";
> +		backlight = <&backlight>;
> +		power-supply = <&vcc_lcd_reg>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		status = "okay";
> +
> +		port@0 {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			reg = <0>;
> +
> +			panel_input: endpoint@0 {
> +				reg = <0>;
> +				remote-endpoint = <&hlcdc_panel_output>;
> +			};
> +		};
> +	};
> +
> +	vcc_lcd_reg: fixedregulator_lcd {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VCC LCM";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		regulator-boot-on;
> +		regulator-always-on;
> +		status = "okay";
> +	};
> +};
> +
> +&i2c1 {
> +	status = "okay";
> +
> +	ft5426@56 {
> +		/* Actually FT5426 */
> +		compatible = "edt,edt-ft5406";
> +		reg = <56>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_ctp_int>;
> +
> +		interrupt-parent = <&pioC>;
> +		interrupts = <28 IRQ_TYPE_EDGE_FALLING>;
> +
> +		touchscreen-size-x = <800>;
> +		touchscreen-size-y = <480>;
> +	};
> +};
> +
> +&hlcdc {
> +	status = "okay";
> +
> +	hlcdc-display-controller {
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
> +
> +		port@0 {
> +			hlcdc_panel_output: endpoint@0 {
> +				reg = <0>;
> +				remote-endpoint = <&panel_input>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm/boot/dts/at91-som60.dtsi b/arch/arm/boot/dts/at91-som60.dtsi
> new file mode 100644
> index 0000000..1843284
> --- /dev/null
> +++ b/arch/arm/boot/dts/at91-som60.dtsi
> @@ -0,0 +1,229 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * at91-som60.dtsi - Device Tree file for the SOM60 module
> + *
> + *  Copyright (C) 2018 Laird,
> + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> + *
> + */
> +#include "sama5d36.dtsi"
> +
> +/ {
> +	model = "Laird SOM60";
> +	compatible = "laird,som60", "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
> +
> +	chosen {
> +		stdout-path = &dbgu;
> +	};
> +
> +	memory {
> +		reg = <0x20000000 0x8000000>;
> +	};
> +
> +	clocks {
> +		slow_xtal {
> +			clock-frequency = <32768>;
> +		};
> +
> +		main_xtal {
> +			clock-frequency = <12000000>;
> +		};
> +	};
> +
> +	ahb {
> +		apb {
> +			pinctrl@fffff200 {
> +				board {
> +					pinctrl_mmc0_cd: mmc0_cd {
> +						atmel,pins =
> +							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> +					};
> +
> +					pinctrl_mmc0_en: mmc0_en {
> +						atmel,pins =
> +							<AT91_PIOE 30 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
> +					};
> +
> +					pinctrl_nand0_wp: nand0_wp {
> +						atmel,pins =
> +							<AT91_PIOE 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
> +					};
> +
> +					pinctrl_usb_vbus: usb_vbus {
> +						atmel,pins =
> +							<AT91_PIOE 20 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; /* Conflicts with USART2_SCK */
> +					};
> +
> +					pinctrl_usart2_sck: usart2_sck {
> +						atmel,pins =
> +							<AT91_PIOE 20 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_VBUS */
> +					};
> +
> +					pinctrl_usb_oc: usb_oc {
> +						atmel,pins =
> +							<AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with USART3_SCK */
> +					};
> +
> +					pinctrl_usart3_sck: usart3_sck {
> +						atmel,pins =
> +							<AT91_PIOE 15 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_OC */
> +					};
> +
> +					pinctrl_usba_vbus: usba_vbus {
> +					   atmel,pins =
> +							<AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> +					};
> +
> +					pinctrl_geth_int: geth_int {
> +						atmel,pins =
> +							<AT91_PIOB 25 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with USART1_SCK */
> +					};
> +
> +					pinctrl_usart1_sck: usart1_sck {
> +						atmel,pins =
> +							<AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* Conflicts with GETH_INT */
> +					};
> +
> +					pinctrl_eth_int: eth_int {
> +						atmel,pins =
> +							<AT91_PIOC 10 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> +					};
> +
> +					pinctrl_pck2_as_audio_mck: pck2_as_audio_mck {
> +						atmel,pins =
> +							<AT91_PIOC 15 AT91_PERIPH_B AT91_PINCTRL_NONE>;
> +					};
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&mmc0 {
> +	slot@0 {
> +		reg = <0>;
> +		bus-width = <8>;
> +	};
> +};
> +
> +&mmc1 {
> +	status = "okay";
> +	slot@0 {
> +		reg = <0>;
> +		bus-width = <4>;
> +	};
> +};
> +
> +&spi0 {
> +	cs-gpios = <&pioD 13 0>, <0>, <0>, <0>;
> +};
> +
> +&usart0 {
> +	atmel,use-dma-rx;
> +	atmel,use-dma-tx;
> +	status = "okay";
> +	pinctrl-0 = <&pinctrl_usart0 &pinctrl_usart0_rts_cts>;
> +};
> +
> +&usart1 {
> +	pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
> +};
> +
> +&usart2 {
> +	pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rts_cts>;
> +};
> +
> +&usart3 {
> +	pinctrl-0 = <&pinctrl_usart3 &pinctrl_usart3_rts_cts>;
> +};
> +
> +&adc0 {
> +	pinctrl-0 = <
> +		&pinctrl_adc0_adtrg
> +		&pinctrl_adc0_ad0
> +		&pinctrl_adc0_ad1
> +		&pinctrl_adc0_ad2
> +		&pinctrl_adc0_ad3
> +		&pinctrl_adc0_ad4
> +		&pinctrl_adc0_ad5
> +		>;
> +};
> +
> +&macb0 {
> +	phy-mode = "rgmii";
> +};
> +
> +&macb1 {
> +	phy-mode = "rmii";
> +};
> +
> +
> +&ebi {
> +	pinctrl-0 = <&pinctrl_ebi_nand_addr>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +};
> +
> +&nand_controller {
> +	status = "okay";
> +
> +	nand: nand@3 {
> +		reg = <0x3 0x0 0x2>;
> +		atmel,rb = <0>;
> +		nand-bus-width = <8>;
> +		nand-ecc-mode = "hw";
> +		nand-ecc-strength = <8>;
> +		nand-ecc-step-size = <512>;
> +		nand-on-flash-bbt;
> +		label = "atmel_nand";
> +
> +		partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			ubootspl@0 {
> +				label = "u-boot-spl";
> +				reg = <0x0 0x20000>;
> +			};
> +
> +			uboot@20000 {
> +				label = "u-boot";
> +				reg = <0x20000 0x80000>;
> +			};
> +
> +			ubootenv@a0000 {
> +				label = "u-boot-env";
> +				reg = <0xa0000 0x20000>;
> +			};
> +
> +			ubootenv@c0000 {
> +				label = "u-boot-env";
> +				reg = <0xc0000 0x20000>;
> +			};
> +
> +			ubi@e0000 {
> +				label = "ubi";
> +				reg = <0xe0000 0xfe00000>;
> +			};
> +		};
> +	};
> +};
> +
> +&usb0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usba_vbus>;
> +	atmel,vbus-gpio = <&pioC 14 GPIO_ACTIVE_HIGH>;
> +};
> +
> +&usb1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_usb_vbus &pinctrl_usb_oc>;
> +	num-ports = <3>;
> +	atmel,vbus-gpio = <0
> +		&pioE 20 GPIO_ACTIVE_HIGH
> +		0>;
> +	atmel,oc-gpio = <0
> +		&pioE 15 GPIO_ACTIVE_LOW
> +		0>;
> +};
>
Ben Whitten June 15, 2018, 8:57 a.m. UTC | #2
Thanks all for the reviews and comments, I will work on a new series.

> On 14/06/2018 at 10:51, Ben Whitten wrote:
> > Signed-off-by: Ben Whitten <ben.whitten@lairdtech.com>
> > ---
> >   arch/arm/boot/dts/Makefile                    |   3 +-
> >   arch/arm/boot/dts/at91-dvk_som60.dts          |  95 +++++++++++
> >   arch/arm/boot/dts/at91-dvk_su60_somc.dtsi     | 159
> ++++++++++++++++++
> >   arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi |  96 +++++++++++
> >   arch/arm/boot/dts/at91-som60.dtsi             | 229
> ++++++++++++++++++++++++++
> >   5 files changed, 581 insertions(+), 1 deletion(-)
> >   create mode 100644 arch/arm/boot/dts/at91-dvk_som60.dts
> >   create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> >   create mode 100644 arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> >   create mode 100644 arch/arm/boot/dts/at91-som60.dtsi
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index 486ab59..4d3d9ca 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -63,7 +63,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
> >   	at91-sama5d4ek.dtb \
> >   	at91-vinco.dtb \
> 
> About where you added dtbs...
> 
> >   	at91-wb50n.dtb \
> > -	at91-gatwick.dtb
> > +	at91-gatwick.dtb \
> > +	at91-dvk_som60.dtb
> 
> 1/ As they are based on sama5d3, I would like to see them between
> "at91-sama5d2_xplained.dtb" and "sama5d31ek.dtb"
> 2/ within this range, please sort all these 4 alphabetically
> 3/ don't laugh at me, I try to deal with our historical way of "sorting"
> entries in this Makefile for AT91... ;-)
> 
> BTW, I realize now that your "at91-wb45n.dtb" entry from patch 1 should
> go just after the "at91-kizboxmini.dts" (alphabetical order in
> at91sam9x5 "location").
> 
> 
> >   dtb-$(CONFIG_ARCH_ATLAS6) += \
> >   	atlas6-evb.dtb
> >   dtb-$(CONFIG_ARCH_ATLAS7) += \
> > diff --git a/arch/arm/boot/dts/at91-dvk_som60.dts
> b/arch/arm/boot/dts/at91-dvk_som60.dts
> > new file mode 100644
> > index 0000000..ededd5b
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/at91-dvk_som60.dts
> > @@ -0,0 +1,95 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * at91-dvk_som60.dts - Device Tree file for the DVK SOM60 board
> > + *
> > + *  Copyright (C) 2018 Laird,
> > + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> > + *
> > + */
> > +/dts-v1/;
> > +#include "at91-som60.dtsi"
> > +#include "at91-dvk_su60_somc.dtsi"
> > +#include "at91-dvk_su60_somc_lcm.dtsi"
> > +
> > +/ {
> > +	model = "Laird DVK SOM60";
> > +	compatible = "laird,dvk-som60", "laird,som60", "atmel,sama5d36",
> "atmel,sama5d3", "atmel,sama5";
> > +
> > +	chosen {
> > +		stdout-path = &dbgu;
> > +		tick-timer = &pit;
> > +	};
> > +};
> > +
> > +&mmc0 {
> > +	status = "okay";
> > +};
> > +
> > +&spi0 {
> > +	status = "okay";
> > +};
> > +
> > +&ssc0 {
> > +	status = "okay";
> > +};
> > +
> > +&i2c0 {
> > +	status = "okay";
> > +};
> > +
> > +&i2c1 {
> > +	status = "okay";
> > +};
> > +
> > +&usart1 {
> > +	status = "okay";
> > +};
> > +
> > +&usart2 {
> > +	status = "okay";
> > +};
> > +
> > +&usart3 {
> > +	status = "okay";
> > +};
> > +
> > +&uart0 {
> > +	status = "okay";
> > +};
> > +
> > +&dbgu {
> > +	status = "okay";
> > +};
> > +
> > +&pit {
> > +	status = "okay";
> > +};
> > +
> > +&adc0 {
> > +	status = "okay";
> > +};
> > +
> > +&can1 {
> > +	status = "okay";
> > +};
> > +
> > +&macb0 {
> > +	status = "okay";
> > +};
> > +
> > +&macb1 {
> > +	status = "okay";
> > +};
> > +
> > +&usb0 {
> > +	status = "okay";
> > +};
> > +
> > +&usb1 {
> > +	status = "okay";
> > +};
> > +
> > +&usb2 {
> > +	status = "okay";
> > +};
> > +
> > diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> > new file mode 100644
> > index 0000000..6031c2f
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
> > @@ -0,0 +1,159 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * at91-dvk_su60_somc.dtsi - Device Tree file for the DVK SOM60 base
> board
> > + *
> > + *  Copyright (C) 2018 Laird,
> > + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> > + *
> > + */
> > +
> > +/ {
> > +	sound {
> > +		compatible = "atmel,asoc-wm8904";
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_pck2_as_audio_mck>;
> > +
> > +		atmel,model = "wm8904 @ DVK-SOM60";
> > +		atmel,audio-routing =
> > +			"Headphone Jack", "HPOUTL",
> > +			"Headphone Jack", "HPOUTR",
> > +			"IN2L", "Line In Jack",
> > +			"IN2R", "Line In Jack",
> > +			"Mic", "MICBIAS",
> > +			"IN1L", "Mic";
> > +
> > +		atmel,ssc-controller = <&ssc0>;
> > +		atmel,audio-codec = <&wm8904>;
> > +
> > +		status = "okay";
> > +	};
> > +};
> > +
> > +&mmc0 {
> > +	status = "okay";
> > +
> > +	pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3
> &pinctrl_mmc0_cd>;
> > +	slot@0 {
> > +		bus-width = <4>;
> > +		cd-gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
> > +		cd-inverted;
> > +	};
> > +};
> > +
> > +&spi0 {
> > +	status = "okay";
> > +
> > +	/* spi0.0: 4M Flash Macronix MX25R4035FM1IL0 */
> > +	spi-flash@0 {
> > +		compatible = "mxicy,mx25u4035", "jedec,spi-nor";
> > +		spi-max-frequency = <33000000>;
> > +		reg = <0>;
> > +	};
> > +};
> > +
> > +&ssc0 {
> > +	atmel,clk-from-rk-pin;
> > +	status = "okay";
> > +};
> > +
> > +&i2c0 {
> > +	status = "okay";
> > +
> > +	wm8904: wm8904@1a {
> > +		compatible = "wlf,wm8904";
> > +		reg = <0x1a>;
> > +		clocks = <&pck2>;
> > +		clock-names = "mclk";
> > +	};
> > +};
> > +
> > +&i2c1 {
> > +	status = "okay";
> > +
> > +	eeprom@87 {
> > +		compatible = "giantec,24c32";
> 
> It must work, however...
> 
> I read in recent patches on dts directory that :
> 
> "We now require all at24 users to use the "atmel,<model>" fallback in
> device tree for different manufacturers."
> 
> Moreover, I don't see giantec in the vendor prefix list.

I see, I have added parts which are compatible and made note what the real
part is, should I typically be adding the real part to the compatible list and
update vendor prefixes if necessary?

> 
> > +		reg = <87>;
> > +		pagesize = <32>;
> > +	};
> > +};
> > +
> > +&usart1 {
> > +	status = "okay";
> > +};
> > +
> > +&usart2 {
> > +	status = "okay";
> > +};
> > +
> > +&usart3 {
> > +	status = "okay";
> > +};
> > +
> > +&uart0 {
> > +	status = "okay";
> > +};
> > +
> > +&dbgu {
> > +	status = "okay";
> > +};
> > +
> > +&pit {
> > +	status = "okay";
> > +};
> > +
> > +&adc0 {
> > +	status = "okay";
> > +};
> > +
> > +&can1 {
> > +	status = "okay";
> > +};
> > +
> > +&macb0 {
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> > +	status = "okay";
> > +
> > +	ethernet-phy@7 {
> > +		reg = <7>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_geth_int>;
> > +		interrupt-parent = <&pioB>;
> > +		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> > +		txen-skew-ps = <800>;
> > +		txc-skew-ps = <3000>;
> > +		rxdv-skew-ps = <400>;
> > +		rxc-skew-ps = <3000>;
> > +		rxd0-skew-ps = <400>;
> > +		rxd1-skew-ps = <400>;
> > +		rxd2-skew-ps = <400>;
> > +		rxd3-skew-ps = <400>;
> > +	};
> > +};
> > +
> > +&macb1 {
> > +	#address-cells = <1>;
> > +	#size-cells = <0>;
> > +	status = "okay";
> > +
> > +	ethernet-phy@1 {
> > +		reg = <1>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_eth_int>;
> > +		interrupt-parent = <&pioC>;
> > +		interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
> > +	};
> > +};
> > +
> > +&usb0 {
> > +	status = "okay";
> > +};
> > +
> > +&usb1 {
> > +	status = "okay";
> > +};
> > +
> > +&usb2 {
> > +	status = "okay";
> > +};
> > +
> > diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> > new file mode 100644
> > index 0000000..d98c644
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
> > @@ -0,0 +1,96 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * at91-dvk_su60_somc_lcm.dtsi - Device Tree file for the DVK SOM60 LCD
> board
> > + *
> > + *  Copyright (C) 2018 Laird,
> > + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> > + *
> > + */
> > +
> > +/ {
> > +	ahb {
> > +		apb {
> > +			pinctrl@fffff200 {
> > +				board {
> > +					pinctrl_lcd_ctp_int: lcd_ctp_int {
> > +						 atmel,pins =
> > +							 <AT91_PIOC 28
> AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
> > +					};
> > +				};
> > +			};
> > +		};
> > +	};
> > +
> > +	backlight: backlight {
> > +		compatible = "pwm-backlight";
> > +		pwms = <&hlcdc_pwm 0 50000 0>;
> > +		brightness-levels = <0 4 8 16 32 64 128 255>;
> > +		default-brightness-level = <6>;
> > +		status = "okay";
> > +	};
> > +
> > +	panel: panel {
> > +		/* Actually Winstar WF70GTIAGDNG0 */
> > +		compatible = "innolux,at070tn92", "simple-panel";
> > +		backlight = <&backlight>;
> > +		power-supply = <&vcc_lcd_reg>;
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		status = "okay";
> > +
> > +		port@0 {
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +			reg = <0>;
> > +
> > +			panel_input: endpoint@0 {
> > +				reg = <0>;
> > +				remote-endpoint = <&hlcdc_panel_output>;
> > +			};
> > +		};
> > +	};
> > +
> > +	vcc_lcd_reg: fixedregulator_lcd {
> > +		compatible = "regulator-fixed";
> > +		regulator-name = "VCC LCM";
> > +		regulator-min-microvolt = <5000000>;
> > +		regulator-max-microvolt = <5000000>;
> > +		regulator-boot-on;
> > +		regulator-always-on;
> > +		status = "okay";
> > +	};
> > +};
> > +
> > +&i2c1 {
> > +	status = "okay";
> > +
> > +	ft5426@56 {
> > +		/* Actually FT5426 */
> > +		compatible = "edt,edt-ft5406";
> > +		reg = <56>;
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_lcd_ctp_int>;
> > +
> > +		interrupt-parent = <&pioC>;
> > +		interrupts = <28 IRQ_TYPE_EDGE_FALLING>;
> > +
> > +		touchscreen-size-x = <800>;
> > +		touchscreen-size-y = <480>;
> > +	};
> > +};
> > +
> > +&hlcdc {
> > +	status = "okay";
> > +
> > +	hlcdc-display-controller {
> > +		pinctrl-names = "default";
> > +		pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
> > +
> > +		port@0 {
> > +			hlcdc_panel_output: endpoint@0 {
> > +				reg = <0>;
> > +				remote-endpoint = <&panel_input>;
> > +			};
> > +		};
> > +	};
> > +};
> > diff --git a/arch/arm/boot/dts/at91-som60.dtsi b/arch/arm/boot/dts/at91-
> som60.dtsi
> > new file mode 100644
> > index 0000000..1843284
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/at91-som60.dtsi
> > @@ -0,0 +1,229 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * at91-som60.dtsi - Device Tree file for the SOM60 module
> > + *
> > + *  Copyright (C) 2018 Laird,
> > + *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
> > + *
> > + */
> > +#include "sama5d36.dtsi"
> > +
> > +/ {
> > +	model = "Laird SOM60";
> > +	compatible = "laird,som60", "atmel,sama5d36", "atmel,sama5d3",
> "atmel,sama5";
> > +
> > +	chosen {
> > +		stdout-path = &dbgu;
> > +	};
> > +
> > +	memory {
> > +		reg = <0x20000000 0x8000000>;
> > +	};
> > +
> > +	clocks {
> > +		slow_xtal {
> > +			clock-frequency = <32768>;
> > +		};
> > +
> > +		main_xtal {
> > +			clock-frequency = <12000000>;
> > +		};
> > +	};
> > +
> > +	ahb {
> > +		apb {
> > +			pinctrl@fffff200 {
> > +				board {
> > +					pinctrl_mmc0_cd: mmc0_cd {
> > +						atmel,pins =
> > +							<AT91_PIOE 31
> AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> > +					};
> > +
> > +					pinctrl_mmc0_en: mmc0_en {
> > +						atmel,pins =
> > +							<AT91_PIOE 30
> AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
> > +					};
> > +
> > +					pinctrl_nand0_wp: nand0_wp {
> > +						atmel,pins =
> > +							<AT91_PIOE 14
> AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
> > +					};
> > +
> > +					pinctrl_usb_vbus: usb_vbus {
> > +						atmel,pins =
> > +							<AT91_PIOE 20
> AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; /* Conflicts with USART2_SCK
> */
> > +					};
> > +
> > +					pinctrl_usart2_sck: usart2_sck {
> > +						atmel,pins =
> > +							<AT91_PIOE 20
> AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_VBUS */
> > +					};
> > +
> > +					pinctrl_usb_oc: usb_oc {
> > +						atmel,pins =
> > +							<AT91_PIOE 15
> AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with
> USART3_SCK */
> > +					};
> > +
> > +					pinctrl_usart3_sck: usart3_sck {
> > +						atmel,pins =
> > +							<AT91_PIOE 15
> AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_OC */
> > +					};
> > +
> > +					pinctrl_usba_vbus: usba_vbus {
> > +					   atmel,pins =
> > +							<AT91_PIOC 14
> AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> > +					};
> > +
> > +					pinctrl_geth_int: geth_int {
> > +						atmel,pins =
> > +							<AT91_PIOB 25
> AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with
> USART1_SCK */
> > +					};
> > +
> > +					pinctrl_usart1_sck: usart1_sck {
> > +						atmel,pins =
> > +							<AT91_PIOB 25
> AT91_PERIPH_A AT91_PINCTRL_NONE>; /* Conflicts with GETH_INT */
> > +					};
> > +
> > +					pinctrl_eth_int: eth_int {
> > +						atmel,pins =
> > +							<AT91_PIOC 10
> AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
> > +					};
> > +
> > +					pinctrl_pck2_as_audio_mck:
> pck2_as_audio_mck {
> > +						atmel,pins =
> > +							<AT91_PIOC 15
> AT91_PERIPH_B AT91_PINCTRL_NONE>;
> > +					};
> > +				};
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&mmc0 {
> > +	slot@0 {
> > +		reg = <0>;
> > +		bus-width = <8>;
> > +	};
> > +};
> > +
> > +&mmc1 {
> > +	status = "okay";
> > +	slot@0 {
> > +		reg = <0>;
> > +		bus-width = <4>;
> > +	};
> > +};
> > +
> > +&spi0 {
> > +	cs-gpios = <&pioD 13 0>, <0>, <0>, <0>;
> > +};
> > +
> > +&usart0 {
> > +	atmel,use-dma-rx;
> > +	atmel,use-dma-tx;
> > +	status = "okay";
> > +	pinctrl-0 = <&pinctrl_usart0 &pinctrl_usart0_rts_cts>;
> > +};
> > +
> > +&usart1 {
> > +	pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
> > +};
> > +
> > +&usart2 {
> > +	pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rts_cts>;
> > +};
> > +
> > +&usart3 {
> > +	pinctrl-0 = <&pinctrl_usart3 &pinctrl_usart3_rts_cts>;
> > +};
> > +
> > +&adc0 {
> > +	pinctrl-0 = <
> > +		&pinctrl_adc0_adtrg
> > +		&pinctrl_adc0_ad0
> > +		&pinctrl_adc0_ad1
> > +		&pinctrl_adc0_ad2
> > +		&pinctrl_adc0_ad3
> > +		&pinctrl_adc0_ad4
> > +		&pinctrl_adc0_ad5
> > +		>;
> > +};
> > +
> > +&macb0 {
> > +	phy-mode = "rgmii";
> > +};
> > +
> > +&macb1 {
> > +	phy-mode = "rmii";
> > +};
> > +
> > +
> > +&ebi {
> > +	pinctrl-0 = <&pinctrl_ebi_nand_addr>;
> > +	pinctrl-names = "default";
> > +	status = "okay";
> > +};
> > +
> > +&nand_controller {
> > +	status = "okay";
> > +
> > +	nand: nand@3 {
> > +		reg = <0x3 0x0 0x2>;
> > +		atmel,rb = <0>;
> > +		nand-bus-width = <8>;
> > +		nand-ecc-mode = "hw";
> > +		nand-ecc-strength = <8>;
> > +		nand-ecc-step-size = <512>;
> > +		nand-on-flash-bbt;
> > +		label = "atmel_nand";
> > +
> > +		partitions {
> > +			compatible = "fixed-partitions";
> > +			#address-cells = <1>;
> > +			#size-cells = <1>;
> > +
> > +			ubootspl@0 {
> > +				label = "u-boot-spl";
> > +				reg = <0x0 0x20000>;
> > +			};
> > +
> > +			uboot@20000 {
> > +				label = "u-boot";
> > +				reg = <0x20000 0x80000>;
> > +			};
> > +
> > +			ubootenv@a0000 {
> > +				label = "u-boot-env";
> > +				reg = <0xa0000 0x20000>;
> > +			};
> > +
> > +			ubootenv@c0000 {
> > +				label = "u-boot-env";
> > +				reg = <0xc0000 0x20000>;
> > +			};
> > +
> > +			ubi@e0000 {
> > +				label = "ubi";
> > +				reg = <0xe0000 0xfe00000>;
> > +			};
> > +		};
> > +	};
> > +};
> > +
> > +&usb0 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_usba_vbus>;
> > +	atmel,vbus-gpio = <&pioC 14 GPIO_ACTIVE_HIGH>;
> > +};
> > +
> > +&usb1 {
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&pinctrl_usb_vbus &pinctrl_usb_oc>;
> > +	num-ports = <3>;
> > +	atmel,vbus-gpio = <0
> > +		&pioE 20 GPIO_ACTIVE_HIGH
> > +		0>;
> > +	atmel,oc-gpio = <0
> > +		&pioE 15 GPIO_ACTIVE_LOW
> > +		0>;
> > +};
> >
> 
> 
> --
> Nicolas Ferre
diff mbox

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 486ab59..4d3d9ca 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -63,7 +63,8 @@  dtb-$(CONFIG_SOC_SAM_V7) += \
 	at91-sama5d4ek.dtb \
 	at91-vinco.dtb \
 	at91-wb50n.dtb \
-	at91-gatwick.dtb
+	at91-gatwick.dtb \
+	at91-dvk_som60.dtb
 dtb-$(CONFIG_ARCH_ATLAS6) += \
 	atlas6-evb.dtb
 dtb-$(CONFIG_ARCH_ATLAS7) += \
diff --git a/arch/arm/boot/dts/at91-dvk_som60.dts b/arch/arm/boot/dts/at91-dvk_som60.dts
new file mode 100644
index 0000000..ededd5b
--- /dev/null
+++ b/arch/arm/boot/dts/at91-dvk_som60.dts
@@ -0,0 +1,95 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-dvk_som60.dts - Device Tree file for the DVK SOM60 board
+ *
+ *  Copyright (C) 2018 Laird,
+ *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
+ *
+ */
+/dts-v1/;
+#include "at91-som60.dtsi"
+#include "at91-dvk_su60_somc.dtsi"
+#include "at91-dvk_su60_somc_lcm.dtsi"
+
+/ {
+	model = "Laird DVK SOM60";
+	compatible = "laird,dvk-som60", "laird,som60", "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
+
+	chosen {
+		stdout-path = &dbgu;
+		tick-timer = &pit;
+	};
+};
+
+&mmc0 {
+	status = "okay";
+};
+
+&spi0 {
+	status = "okay";
+};
+
+&ssc0 {
+	status = "okay";
+};
+
+&i2c0 {
+	status = "okay";
+};
+
+&i2c1 {
+	status = "okay";
+};
+
+&usart1 {
+	status = "okay";
+};
+
+&usart2 {
+	status = "okay";
+};
+
+&usart3 {
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&dbgu {
+	status = "okay";
+};
+
+&pit {
+	status = "okay";
+};
+
+&adc0 {
+	status = "okay";
+};
+
+&can1 {
+	status = "okay";
+};
+
+&macb0 {
+	status = "okay";
+};
+
+&macb1 {
+	status = "okay";
+};
+
+&usb0 {
+	status = "okay";
+};
+
+&usb1 {
+	status = "okay";
+};
+
+&usb2 {
+	status = "okay";
+};
+
diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
new file mode 100644
index 0000000..6031c2f
--- /dev/null
+++ b/arch/arm/boot/dts/at91-dvk_su60_somc.dtsi
@@ -0,0 +1,159 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-dvk_su60_somc.dtsi - Device Tree file for the DVK SOM60 base board
+ *
+ *  Copyright (C) 2018 Laird,
+ *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
+ *
+ */
+
+/ {
+	sound {
+		compatible = "atmel,asoc-wm8904";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_pck2_as_audio_mck>;
+
+		atmel,model = "wm8904 @ DVK-SOM60";
+		atmel,audio-routing =
+			"Headphone Jack", "HPOUTL",
+			"Headphone Jack", "HPOUTR",
+			"IN2L", "Line In Jack",
+			"IN2R", "Line In Jack",
+			"Mic", "MICBIAS",
+			"IN1L", "Mic";
+
+		atmel,ssc-controller = <&ssc0>;
+		atmel,audio-codec = <&wm8904>;
+
+		status = "okay";
+	};
+};
+
+&mmc0 {
+	status = "okay";
+
+	pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
+	slot@0 {
+		bus-width = <4>;
+		cd-gpios = <&pioE 31 GPIO_ACTIVE_HIGH>;
+		cd-inverted;
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	/* spi0.0: 4M Flash Macronix MX25R4035FM1IL0 */
+	spi-flash@0 {
+		compatible = "mxicy,mx25u4035", "jedec,spi-nor";
+		spi-max-frequency = <33000000>;
+		reg = <0>;
+	};
+};
+
+&ssc0 {
+	atmel,clk-from-rk-pin;
+	status = "okay";
+};
+
+&i2c0 {
+	status = "okay";
+
+	wm8904: wm8904@1a {
+		compatible = "wlf,wm8904";
+		reg = <0x1a>;
+		clocks = <&pck2>;
+		clock-names = "mclk";
+	};
+};
+
+&i2c1 {
+	status = "okay";
+
+	eeprom@87 {
+		compatible = "giantec,24c32";
+		reg = <87>;
+		pagesize = <32>;
+	};
+};
+
+&usart1 {
+	status = "okay";
+};
+
+&usart2 {
+	status = "okay";
+};
+
+&usart3 {
+	status = "okay";
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&dbgu {
+	status = "okay";
+};
+
+&pit {
+	status = "okay";
+};
+
+&adc0 {
+	status = "okay";
+};
+
+&can1 {
+	status = "okay";
+};
+
+&macb0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	ethernet-phy@7 {
+		reg = <7>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_geth_int>;
+		interrupt-parent = <&pioB>;
+		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
+		txen-skew-ps = <800>;
+		txc-skew-ps = <3000>;
+		rxdv-skew-ps = <400>;
+		rxc-skew-ps = <3000>;
+		rxd0-skew-ps = <400>;
+		rxd1-skew-ps = <400>;
+		rxd2-skew-ps = <400>;
+		rxd3-skew-ps = <400>;
+	};
+};
+
+&macb1 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	ethernet-phy@1 {
+		reg = <1>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_eth_int>;
+		interrupt-parent = <&pioC>;
+		interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+	};
+};
+
+&usb0 {
+	status = "okay";
+};
+
+&usb1 {
+	status = "okay";
+};
+
+&usb2 {
+	status = "okay";
+};
+
diff --git a/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
new file mode 100644
index 0000000..d98c644
--- /dev/null
+++ b/arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi
@@ -0,0 +1,96 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-dvk_su60_somc_lcm.dtsi - Device Tree file for the DVK SOM60 LCD board
+ *
+ *  Copyright (C) 2018 Laird,
+ *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
+ *
+ */
+
+/ {
+	ahb {
+		apb {
+			pinctrl@fffff200 {
+				board {
+					pinctrl_lcd_ctp_int: lcd_ctp_int {
+						 atmel,pins =
+							 <AT91_PIOC 28 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
+					};
+				};
+			};
+		};
+	};
+
+	backlight: backlight {
+		compatible = "pwm-backlight";
+		pwms = <&hlcdc_pwm 0 50000 0>;
+		brightness-levels = <0 4 8 16 32 64 128 255>;
+		default-brightness-level = <6>;
+		status = "okay";
+	};
+
+	panel: panel {
+		/* Actually Winstar WF70GTIAGDNG0 */
+		compatible = "innolux,at070tn92", "simple-panel";
+		backlight = <&backlight>;
+		power-supply = <&vcc_lcd_reg>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		status = "okay";
+
+		port@0 {
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0>;
+
+			panel_input: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&hlcdc_panel_output>;
+			};
+		};
+	};
+
+	vcc_lcd_reg: fixedregulator_lcd {
+		compatible = "regulator-fixed";
+		regulator-name = "VCC LCM";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-boot-on;
+		regulator-always-on;
+		status = "okay";
+	};
+};
+
+&i2c1 {
+	status = "okay";
+
+	ft5426@56 {
+		/* Actually FT5426 */
+		compatible = "edt,edt-ft5406";
+		reg = <56>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_lcd_ctp_int>;
+
+		interrupt-parent = <&pioC>;
+		interrupts = <28 IRQ_TYPE_EDGE_FALLING>;
+
+		touchscreen-size-x = <800>;
+		touchscreen-size-y = <480>;
+	};
+};
+
+&hlcdc {
+	status = "okay";
+
+	hlcdc-display-controller {
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
+
+		port@0 {
+			hlcdc_panel_output: endpoint@0 {
+				reg = <0>;
+				remote-endpoint = <&panel_input>;
+			};
+		};
+	};
+};
diff --git a/arch/arm/boot/dts/at91-som60.dtsi b/arch/arm/boot/dts/at91-som60.dtsi
new file mode 100644
index 0000000..1843284
--- /dev/null
+++ b/arch/arm/boot/dts/at91-som60.dtsi
@@ -0,0 +1,229 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * at91-som60.dtsi - Device Tree file for the SOM60 module
+ *
+ *  Copyright (C) 2018 Laird,
+ *		  2018 Ben Whitten <ben.whitten@lairdtech.com>
+ *
+ */
+#include "sama5d36.dtsi"
+
+/ {
+	model = "Laird SOM60";
+	compatible = "laird,som60", "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
+
+	chosen {
+		stdout-path = &dbgu;
+	};
+
+	memory {
+		reg = <0x20000000 0x8000000>;
+	};
+
+	clocks {
+		slow_xtal {
+			clock-frequency = <32768>;
+		};
+
+		main_xtal {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	ahb {
+		apb {
+			pinctrl@fffff200 {
+				board {
+					pinctrl_mmc0_cd: mmc0_cd {
+						atmel,pins =
+							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
+					};
+
+					pinctrl_mmc0_en: mmc0_en {
+						atmel,pins =
+							<AT91_PIOE 30 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+					};
+
+					pinctrl_nand0_wp: nand0_wp {
+						atmel,pins =
+							<AT91_PIOE 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
+					};
+
+					pinctrl_usb_vbus: usb_vbus {
+						atmel,pins =
+							<AT91_PIOE 20 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; /* Conflicts with USART2_SCK */
+					};
+
+					pinctrl_usart2_sck: usart2_sck {
+						atmel,pins =
+							<AT91_PIOE 20 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_VBUS */
+					};
+
+					pinctrl_usb_oc: usb_oc {
+						atmel,pins =
+							<AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with USART3_SCK */
+					};
+
+					pinctrl_usart3_sck: usart3_sck {
+						atmel,pins =
+							<AT91_PIOE 15 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* Conflicts with USB_OC */
+					};
+
+					pinctrl_usba_vbus: usba_vbus {
+					   atmel,pins =
+							<AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
+					};
+
+					pinctrl_geth_int: geth_int {
+						atmel,pins =
+							<AT91_PIOB 25 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* Conflicts with USART1_SCK */
+					};
+
+					pinctrl_usart1_sck: usart1_sck {
+						atmel,pins =
+							<AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* Conflicts with GETH_INT */
+					};
+
+					pinctrl_eth_int: eth_int {
+						atmel,pins =
+							<AT91_PIOC 10 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
+					};
+
+					pinctrl_pck2_as_audio_mck: pck2_as_audio_mck {
+						atmel,pins =
+							<AT91_PIOC 15 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+					};
+				};
+			};
+		};
+	};
+};
+
+&mmc0 {
+	slot@0 {
+		reg = <0>;
+		bus-width = <8>;
+	};
+};
+
+&mmc1 {
+	status = "okay";
+	slot@0 {
+		reg = <0>;
+		bus-width = <4>;
+	};
+};
+
+&spi0 {
+	cs-gpios = <&pioD 13 0>, <0>, <0>, <0>;
+};
+
+&usart0 {
+	atmel,use-dma-rx;
+	atmel,use-dma-tx;
+	status = "okay";
+	pinctrl-0 = <&pinctrl_usart0 &pinctrl_usart0_rts_cts>;
+};
+
+&usart1 {
+	pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
+};
+
+&usart2 {
+	pinctrl-0 = <&pinctrl_usart2 &pinctrl_usart2_rts_cts>;
+};
+
+&usart3 {
+	pinctrl-0 = <&pinctrl_usart3 &pinctrl_usart3_rts_cts>;
+};
+
+&adc0 {
+	pinctrl-0 = <
+		&pinctrl_adc0_adtrg
+		&pinctrl_adc0_ad0
+		&pinctrl_adc0_ad1
+		&pinctrl_adc0_ad2
+		&pinctrl_adc0_ad3
+		&pinctrl_adc0_ad4
+		&pinctrl_adc0_ad5
+		>;
+};
+
+&macb0 {
+	phy-mode = "rgmii";
+};
+
+&macb1 {
+	phy-mode = "rmii";
+};
+
+
+&ebi {
+	pinctrl-0 = <&pinctrl_ebi_nand_addr>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&nand_controller {
+	status = "okay";
+
+	nand: nand@3 {
+		reg = <0x3 0x0 0x2>;
+		atmel,rb = <0>;
+		nand-bus-width = <8>;
+		nand-ecc-mode = "hw";
+		nand-ecc-strength = <8>;
+		nand-ecc-step-size = <512>;
+		nand-on-flash-bbt;
+		label = "atmel_nand";
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			ubootspl@0 {
+				label = "u-boot-spl";
+				reg = <0x0 0x20000>;
+			};
+
+			uboot@20000 {
+				label = "u-boot";
+				reg = <0x20000 0x80000>;
+			};
+
+			ubootenv@a0000 {
+				label = "u-boot-env";
+				reg = <0xa0000 0x20000>;
+			};
+
+			ubootenv@c0000 {
+				label = "u-boot-env";
+				reg = <0xc0000 0x20000>;
+			};
+
+			ubi@e0000 {
+				label = "ubi";
+				reg = <0xe0000 0xfe00000>;
+			};
+		};
+	};
+};
+
+&usb0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usba_vbus>;
+	atmel,vbus-gpio = <&pioC 14 GPIO_ACTIVE_HIGH>;
+};
+
+&usb1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_usb_vbus &pinctrl_usb_oc>;
+	num-ports = <3>;
+	atmel,vbus-gpio = <0
+		&pioE 20 GPIO_ACTIVE_HIGH
+		0>;
+	atmel,oc-gpio = <0
+		&pioE 15 GPIO_ACTIVE_LOW
+		0>;
+};