ARM: dts: add support for Laird SOM60 module and DVK boards
authorBen Whitten <ben.whitten@gmail.com>
Fri, 15 Jun 2018 13:40:55 +0000 (14:40 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 20 Jul 2018 08:05:10 +0000 (10:05 +0200)
This adds support for Lairds upcoming SOM module, featuring Marvell WiFi
and Bluetooth, 2Gb NAND / 1Gb LPDDR SDRAM, and an Atmel SAMA5D3 CPU.

Signed-off-by: Ben Whitten <ben.whitten@lairdtech.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/at91-dvk_som60.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-dvk_su60_somc.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-dvk_su60_somc_lcm.dtsi [new file with mode: 0644]
arch/arm/boot/dts/at91-som60.dtsi [new file with mode: 0644]

index adb48a10ae0898a2187958a402e1468477fa3115..b9c0d9d00a6e2417c47e5a2ab5a74ecc33d19023 100644 (file)
@@ -51,6 +51,7 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
        at91-sama5d2_ptc_ek.dtb \
        at91-sama5d2_xplained.dtb \
        at91-sama5d3_xplained.dtb \
+       at91-dvk_som60.dtb \
        at91-gatwick.dtb \
        at91-tse850-3.dtb \
        at91-wb50n.dtb \
diff --git a/arch/arm/boot/dts/at91-dvk_som60.dts b/arch/arm/boot/dts/at91-dvk_som60.dts
new file mode 100644 (file)
index 0000000..ededd5b
--- /dev/null
@@ -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 (file)
index 0000000..bb86f17
--- /dev/null
@@ -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,gt24c32a", "atmel,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 (file)
index 0000000..4b9176d
--- /dev/null
@@ -0,0 +1,90 @@
+// 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>
+ *
+ */
+
+/ {
+       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 {
+               compatible = "winstar,wf70gtiagdng0", "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";
+       };
+};
+
+&pinctrl {
+       board {
+               pinctrl_lcd_ctp_int: lcd_ctp_int {
+                        atmel,pins =
+                                <AT91_PIOC 28 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       ft5426@56 {
+               compatible = "focaltech,ft5426", "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 (file)
index 0000000..241682a
--- /dev/null
@@ -0,0 +1,230 @@
+// 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>;
+               };
+       };
+};
+
+&pinctrl {
+       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>;
+};