The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
--- Begin Message ---
Add support for SAMA5D2 ICP board.

Hardware:
- SoC: SAMAA5D27
- RAM: 512 MB DDR3L
- MMC: One stanard SD card interface
- USB: One USB host switch 4 ports with power switch,
       One USB device type Micro-AB
- CAN: 2 interfaces
- Ethernet: One Gigabit Ethernet PHY through HSIC,
            One ETH switchport
            One EtherCAT interface
- WiFi/BT: Footprint for IEEE 802.11 b/g/n Wi-Fi plus
           Bluetooth module (Wi-Fi/BT), suitable for
           Microchip WILC3000-MR110CA or WILC3000-MR110UA
- Debug port: One J-Link-OB/J-Link-CDC, one JTAG interface
- Leds: one RGB LED
- Buttons: reset, wakeup, 2 user buttons
- Expansion: one PIOBU/PIO connector, 3 mikrobus sockets
- Power mangament: PMIC (MCP16502), one power consumption device
                   (PAC1934)

Not working in Linux:
- EtherCAT interface: there is no Linux support integrated
- PAC1934: driver available at [1] but not integrated in Linux

Flashing:
- follow the procedure at [2]

[1] https://ww1.microchip.com/downloads/en/DeviceDoc/pac193x_linux_driver.zip
[2] 
https://www.linux4sam.org/bin/view/Linux4SAM/Sama5d2IcpMainPage#Create_a_SD_card_with_the_demo

Signed-off-by: Claudiu Beznea <claudiu.bez...@microchip.com>
---
 package/boot/at91bootstrap/Makefile           |  14 +
 package/boot/uboot-at91/Makefile              |   7 +
 target/linux/at91/image/sama5.mk              |  11 +
 .../linux/at91/patches-5.4/105-add-icp.patch  | 780 ++++++++++++++++++
 4 files changed, 812 insertions(+)
 create mode 100644 target/linux/at91/patches-5.4/105-add-icp.patch

diff --git a/package/boot/at91bootstrap/Makefile 
b/package/boot/at91bootstrap/Makefile
index f66472fa9c29..56e14c57703c 100644
--- a/package/boot/at91bootstrap/Makefile
+++ b/package/boot/at91bootstrap/Makefile
@@ -40,6 +40,18 @@ define AT91Bootstrap/at91sam9x5eksd_uboot
   BUILD_DEVICES:=atmel_at91sam9x25ek atmel_at91sam9x35ek
 endef
 
+define AT91Bootstrap/sama5d2_icpdf_qspi_uboot
+  TITLE:=AT91Bootstrap for SAMA5D2 ICP board (QSPI Flash)
+  BUILD_SUBTARGET:=sama5
+  BUILD_DEVICES:=microchip_sama5d2-icp
+endef
+
+define AT91Bootstrap/sama5d2_icpsd_uboot
+  TITLE:=AT91Bootstrap for SAMA5D2 ICP board (SDcard)
+  BUILD_SUBTARGET:=sama5
+  BUILD_DEVICES:=microchip_sama5d2-icp
+endef
+
 define AT91Bootstrap/sama5d2_xplaineddf_uboot
   TITLE:=AT91Bootstrap for SAMA5D2 Xplained board (SPI Flash)
   BUILD_SUBTARGET:=sama5
@@ -121,6 +133,8 @@ endef
 AT91BOOTSTRAP_TARGETS := \
        at91sam9x5eknf_uboot \
        at91sam9x5eksd_uboot \
+       sama5d2_icpdf_qspi_uboot \
+       sama5d2_icpsd_uboot \
        sama5d2_xplaineddf_uboot \
        sama5d2_xplaineddf_qspi_uboot \
        sama5d2_xplainedsd_uboot \
diff --git a/package/boot/uboot-at91/Makefile b/package/boot/uboot-at91/Makefile
index a8a71239a398..193f26dae471 100644
--- a/package/boot/uboot-at91/Makefile
+++ b/package/boot/uboot-at91/Makefile
@@ -59,6 +59,12 @@ define U-Boot/sama5d3_xplained_mmc
   BUILD_DEVICES:=microchip_sama5d3-xplained
 endef
 
+define U-Boot/sama5d2_icp_mmc
+  NAME:=SAMA5D2 ICP board (SDCard)
+  BUILD_SUBTARGET:=sama5
+  BUILD_DEVICES:=microchip_sama5d2-icp
+endef
+
 define U-Boot/sama5d2_xplained_spiflash
   NAME:=SAMA5D2 Xplained board (SPI Flash)
   BUILD_SUBTARGET:=sama5
@@ -119,6 +125,7 @@ UBOOT_TARGETS := \
        at91sam9x5ek_mmc \
        sama5d3_xplained_nandflash \
        sama5d3_xplained_mmc \
+       sama5d2_icp_mmc \
        sama5d2_xplained_mmc \
        sama5d2_xplained_spiflash \
        sama5d4_xplained_mmc \
diff --git a/target/linux/at91/image/sama5.mk b/target/linux/at91/image/sama5.mk
index d644f89266d1..d02d09e835ec 100644
--- a/target/linux/at91/image/sama5.mk
+++ b/target/linux/at91/image/sama5.mk
@@ -54,6 +54,17 @@ define Build/at91-sdcard
   rm -f $@.img $@.boot $@-uboot.env $@-uboot-env.txt)
 endef
 
+define Device/microchip_sama5d2-icp
+  $(Device/evaluation-dtb)
+  DEVICE_VENDOR := Microchip
+  DEVICE_MODEL := SAMA5D2 ICP
+  DEVICE_DTS := at91-sama5d2_icp
+  SUPPORTED_DEVICES := microchip,sama5d2-icp
+  KERNEL_SIZE := 6144k
+  $(Device/evaluation-sdimage)
+endef
+TARGET_DEVICES += microchip_sama5d2-icp
+
 define Device/microchip_sama5d2-xplained
   $(Device/evaluation-dtb)
   DEVICE_VENDOR := Microchip
diff --git a/target/linux/at91/patches-5.4/105-add-icp.patch 
b/target/linux/at91/patches-5.4/105-add-icp.patch
new file mode 100644
index 000000000000..a8f34bcdfa6a
--- /dev/null
+++ b/target/linux/at91/patches-5.4/105-add-icp.patch
@@ -0,0 +1,780 @@
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -48,6 +48,7 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
+       at91-kizbox2.dtb \
+       at91-nattis-2-natte-2.dtb \
+       at91-sama5d27_som1_ek.dtb \
++      at91-sama5d2_icp.dtb \
+       at91-sama5d2_ptc_ek.dtb \
+       at91-sama5d2_xplained.dtb \
+       at91-sama5d3_xplained.dtb \
+--- /dev/null
++++ b/arch/arm/boot/dts/at91-sama5d2_icp.dts
+@@ -0,0 +1,767 @@
++// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
++/*
++ * at91-sama5d2_icp.dts - Device Tree file for SAMA5D2-ICP board
++ *
++ *  Copyright (C) 2019 Microchip Technology Inc. and its subsidiaries
++ *
++ *    Author: Radu Pirea & Razvan Stefanescu,
++ *            Codrin Ciubotariu <codrin.ciubota...@microchip.com>,
++ *            Cristian Birsan <cristian.bir...@microchip.com>
++ */
++/dts-v1/;
++#include "sama5d2.dtsi"
++#include "sama5d2-pinfunc.h"
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++#include <dt-bindings/mfd/atmel-flexcom.h>
++
++/ {
++      model = "Microchip SAMA5D2-ICP";
++      compatible = "microchip,sama5d2-icp", "atmel,sama5d27", 
"atmel,sama5d2", "atmel,sama5";
++
++      aliases {
++              serial0 = &uart0;       /* debug uart0 + mikro BUS 1 */
++              serial1 = &uart1;       /* mikro BUS 3 */
++              serial3 = &uart3;       /* mikro BUS 2 */
++              serial5 = &uart7;       /* flx2 */
++              i2c0    = &i2c0;
++              i2c1    = &i2c1;
++      };
++
++      chosen {
++              stdout-path = "serial0:115200n8";
++      };
++
++      clocks {
++              slow_xtal {
++                      clock-frequency = <32768>;
++              };
++
++              main_xtal {
++                      clock-frequency = <12000000>;
++              };
++      };
++
++      gpio_keys {
++              compatible = "gpio-keys";
++
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_key_gpio_default>;
++              status = "okay";
++
++              sw4 {
++                      label = "USER_PB1";
++                      gpios = <&pioA PIN_PD0 GPIO_ACTIVE_LOW>;
++                      linux,code = <KEY_PROG1>;
++                      wakeup-source;
++              };
++      };
++
++      leds {
++              compatible = "gpio-leds";
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_led_gpio_default>;
++              status = "okay"; /* conflict with pwm0 */
++
++              red {
++                      label = "red";
++                      gpios = <&pioA PIN_PB0 GPIO_ACTIVE_HIGH>;
++              };
++
++              green {
++                      label = "green";
++                      gpios = <&pioA PIN_PB1 GPIO_ACTIVE_HIGH>;
++              };
++
++              blue {
++                      label = "blue";
++                      gpios = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>;
++                      linux,default-trigger = "heartbeat";
++              };
++      };
++};
++
++&adc {
++      vddana-supply = <&vdd_io_reg>;
++      vref-supply = <&vdd_io_reg>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
++      status = "okay";
++};
++
++&can0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_can0_default>;
++      status = "okay";
++};
++
++&can1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_can1_default>;
++      status = "okay";
++};
++
++&flx0 { /* mikrobus2 spi */
++      atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
++      status = "okay";
++
++      spi2: spi@400 {
++              dmas = <0>, <0>;
++              cs-gpios = <&pioA PIN_PC0 GPIO_ACTIVE_LOW>;
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_mikrobus2_spi &pinctrl_ksz_spi_cs>;
++              status = "okay";
++              #address-cells = <1>;
++              #size-cells = <0>;
++
++              switch0: ksz8563@0 {
++                      compatible = "microchip,ksz8563";
++                      reg = <0>;
++                      reset-gpios = <&pioA PIN_PD4 GPIO_ACTIVE_LOW>;
++
++                      spi-max-frequency = <500000>;
++                      spi-cpha;
++                      spi-cpol;
++
++                      ports {
++                              #address-cells = <1>;
++                              #size-cells = <0>;
++                              port@0 {
++                                      reg = <0>;
++                                      label = "lan1";
++                              };
++
++                              port@1 {
++                                      reg = <1>;
++                                      label = "lan2";
++                              };
++
++                              port@2 {
++                                      reg = <2>;
++                                      label = "cpu";
++                                      ethernet = <&macb0>;
++                                      phy-mode = "mii";
++                                      fixed-link {
++                                              speed = <100>;
++                                              full-duplex;
++                                      };
++                              };
++                      };
++              };
++      };
++};
++
++&flx2 {
++      atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
++      status = "okay";
++
++      uart7: serial@200 {
++              pinctrl-0 = <&pinctrl_flx2_default>;
++              pinctrl-names = "default";
++              atmel,use-dma-rx;
++              atmel,use-dma-tx;
++              status = "okay"; /* Conflict w/ qspi1. */
++      };
++};
++
++&flx3 { /* mikrobus1 spi */
++      atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
++      status = "okay";
++
++      spi5: spi@400 {
++              dmas = <0>, <0>;
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_mikrobus1_spi &pinctrl_mikrobus1_spi_cs>;
++              status = "okay";
++      };
++};
++
++&flx4 {
++      atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
++      status = "okay";
++
++      i2c6: i2c@600 {
++              dmas = <0>, <0>;
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_flx4_default>;
++              status = "okay";
++
++              mcp16502@5b {
++                      compatible = "microchip,mcp16502";
++                      reg = <0x5b>;
++                      status = "okay";
++                      lpm-gpios = <&pioBU 7 GPIO_ACTIVE_LOW>;
++
++                      regulators {
++                              vdd_io_reg: VDD_IO {
++                                      regulator-name = "VDD_IO";
++                                      regulator-min-microvolt = <1200000>;
++                                      regulator-max-microvolt = <3700000>;
++                                      regulator-initial-mode = <2>;
++                                      regulator-allowed-modes = <2>, <4>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-off-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++                              };
++
++                              VDD_DDR {
++                                      regulator-name = "VDD_DDR";
++                                      regulator-min-microvolt = <600000>;
++                                      regulator-max-microvolt = <1850000>;
++                                      regulator-initial-mode = <2>;
++                                      regulator-allowed-modes = <2>, <4>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-on-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++                              };
++
++                              VDD_CORE {
++                                      regulator-name = "VDD_CORE";
++                                      regulator-min-microvolt = <600000>;
++                                      regulator-max-microvolt = <1850000>;
++                                      regulator-initial-mode = <2>;
++                                      regulator-allowed-modes = <2>, <4>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-off-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++                              };
++
++                              VDD_OTHER {
++                                      regulator-name = "VDD_OTHER";
++                                      regulator-min-microvolt = <600000>;
++                                      regulator-max-microvolt = <1850000>;
++                                      regulator-initial-mode = <2>;
++                                      regulator-allowed-modes = <2>, <4>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-off-in-suspend;
++                                              regulator-mode = <4>;
++                                      };
++                              };
++
++                              LDO1 {
++                                      regulator-name = "LDO1";
++                                      regulator-min-microvolt = <1200000>;
++                                      regulator-max-microvolt = <3700000>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-off-in-suspend;
++                                      };
++                              };
++
++                              LDO2 {
++                                      regulator-name = "LDO2";
++                                      regulator-min-microvolt = <1200000>;
++                                      regulator-max-microvolt = <3700000>;
++                                      regulator-always-on;
++
++                                      regulator-state-standby {
++                                              regulator-on-in-suspend;
++                                      };
++
++                                      regulator-state-mem {
++                                              regulator-off-in-suspend;
++                                      };
++                              };
++
++                      };
++              };
++      };
++};
++
++&i2c0 { /* mikrobus i2c */
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_mikrobus_i2c>;
++      status = "okay";
++};
++
++&i2c1 {
++      dmas = <0>, <0>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_i2c1_default>;
++      status = "okay";
++
++      eeprom@50 {
++              compatible = "atmel,24c32";
++              reg = <0x50>;
++              pagesize = <16>;
++              status = "okay";
++      };
++
++      eeprom@52 {
++              compatible = "atmel,24c32";
++              reg = <0x52>;
++              pagesize = <16>;
++              status = "disabled";
++      };
++
++      eeprom@53 {
++              compatible = "atmel,24c32";
++              reg = <0x53>;
++              pagesize = <16>;
++              status = "disabled";
++      };
++};
++
++&macb0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq 
&pinctrl_macb0_rst>;
++      phy-mode = "mii";
++      status = "okay";
++
++      fixed-link {
++              speed = <100>;
++              full-duplex;
++      };
++};
++
++&pioA {
++      pinctrl_adc_default: adc_default {
++              pinmux = <PIN_PD24__GPIO>,
++                              <PIN_PD25__GPIO>,
++                              <PIN_PD26__GPIO>;
++              bias-disable;
++      };
++
++      /*
++       * The ADTRG pin can work on any edge type.
++       * In here it's being pulled up, so need to
++       * connect it to ground to get an edge e.g.
++       * Trigger can be configured on falling, rise
++       * or any edge, and the pull-up can be changed
++       * to pull-down or left floating according to
++       * needs.
++       */
++      pinctrl_adtrg_default: adtrg_default {
++              pinmux = <PIN_PD31__ADTRG>;
++              bias-pull-up;
++      };
++
++      pinctrl_flx4_default: flx4_default {
++              pinmux = <PIN_PC28__FLEXCOM4_IO0>,
++                       <PIN_PC29__FLEXCOM4_IO1>;
++              bias-disable;
++      };
++
++      pinctrl_can0_default: can0_default {
++              pinmux = <PIN_PC10__CANTX0>,
++                       <PIN_PC11__CANRX0>;
++              bias-disable;
++      };
++
++      pinctrl_can1_default: can1_default {
++              pinmux = <PIN_PC26__CANTX1>,
++                       <PIN_PC27__CANRX1>;
++              bias-disable;
++      };
++
++      pinctrl_i2c1_default: i2c1_default {
++              pinmux = <PIN_PD19__TWD1>,
++                       <PIN_PD20__TWCK1>;
++              bias-disable;
++      };
++
++      pinctrl_key_gpio_default: key_gpio_default {
++              pinmux = <PIN_PD0__GPIO>;
++              bias-pull-up;
++      };
++
++      pinctrl_led_gpio_default: led_gpio_default {
++              pinmux = <PIN_PB0__GPIO>,
++                       <PIN_PB1__GPIO>,
++                       <PIN_PA31__GPIO>;
++              bias-pull-up;
++      };
++
++      pinctrl_qspi1_default: qspi1_default {
++              pinmux = <PIN_PA6__QSPI1_SCK>,
++                       <PIN_PA7__QSPI1_IO0>,
++                       <PIN_PA8__QSPI1_IO1>,
++                       <PIN_PA9__QSPI1_IO2>,
++                       <PIN_PA10__QSPI1_IO3>,
++                       <PIN_PA11__QSPI1_CS>;
++              bias-disable;
++      };
++
++      pinctrl_sdmmc0_default: sdmmc0_default {
++              cmd_data {
++                      pinmux = <PIN_PA1__SDMMC0_CMD>,
++                               <PIN_PA2__SDMMC0_DAT0>,
++                               <PIN_PA3__SDMMC0_DAT1>,
++                               <PIN_PA4__SDMMC0_DAT2>,
++                               <PIN_PA5__SDMMC0_DAT3>;
++                      bias-disable;
++              };
++
++              ck_cd {
++                      pinmux = <PIN_PA0__SDMMC0_CK>,
++                               <PIN_PA13__SDMMC0_CD>;
++                      bias-disable;
++              };
++      };
++
++      pinctrl_sdmmc1_default: sdmmc1_default {
++              cmd_data {
++                      pinmux = <PIN_PA18__SDMMC1_DAT0>,
++                               <PIN_PA19__SDMMC1_DAT1>,
++                               <PIN_PA20__SDMMC1_DAT2>,
++                               <PIN_PA21__SDMMC1_DAT3>;
++                      bias-disable;
++              };
++
++              ck_cd {
++                      pinmux = <PIN_PA22__SDMMC1_CK>,
++                               <PIN_PA28__SDMMC1_CMD>;
++                      bias-disable;
++              };
++      };
++
++      pinctrl_mikrobus_i2c: mikrobus_i2c {
++              pinmux = <PIN_PD22__TWCK0>,
++                       <PIN_PD21__TWD0>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_an: mikrobus1_an {
++              pinmux = <PIN_PD26__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_rst: mikrobus1_rst {
++              pinmux = <PIN_PC5__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs {
++              pinmux = <PIN_PC21__FLEXCOM3_IO3>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_spi: mikrobus1_spi {
++              pinmux = <PIN_PC20__FLEXCOM3_IO0>,
++                       <PIN_PC19__FLEXCOM3_IO1>,
++                       <PIN_PC18__FLEXCOM3_IO2>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_pwm: mikrobus1_pwm {
++              pinmux = <PIN_PC4__TIOB1>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_int: mikrobus1_int {
++              pinmux = <PIN_PC3__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus1_uart: mikrobus1_uart {
++              pinmux = <PIN_PB26__URXD0>,
++                       <PIN_PB27__UTXD0>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_an: mikrobus2_an {
++              pinmux = <PIN_PD25__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_rst: mikrobus2_rst {
++              pinmux = <PIN_PB24__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs {
++              pinmux = <PIN_PB31__FLEXCOM0_IO3>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_spi: mikrobus2_spi {
++              pinmux = <PIN_PB28__FLEXCOM0_IO0>,
++                       <PIN_PB29__FLEXCOM0_IO1>,
++                       <PIN_PB30__FLEXCOM0_IO2>;
++              bias-disable;
++      };
++
++      pinctrl_ksz_spi_cs: ksz_spi_cs {
++              pinmux = <PIN_PC0__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_pwm: mikrobus2_pwm {
++              pinmux = <PIN_PB23__TIOB2>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_int: mikrobus2_int {
++              pinmux = <PIN_PB22__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus2_uart: mikrobus2_uart {
++              pinmux = <PIN_PC12__URXD3>,
++                       <PIN_PC13__UTXD3>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_an: mikrobus3_an {
++              pinmux = <PIN_PD24__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_rst: mikrobus3_rst {
++              pinmux = <PIN_PB21__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_spi_cs: mikrobus3_spi_cs {
++              pinmux = <PIN_PA17__SPI0_NPCS0>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_spi: mikrobus3_spi {
++              pinmux = <PIN_PA14__SPI0_SPCK>,
++                       <PIN_PA16__SPI0_MISO>,
++                       <PIN_PA15__SPI0_MOSI>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_pwm: mikrobus3_pwm {
++              pinmux = <PIN_PB20__TIOB3>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_int: mikrobus3_int {
++              pinmux = <PIN_PB18__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_mikrobus3_uart: mikrobus3_uart {
++              pinmux = <PIN_PC7__URXD1>,
++                       <PIN_PC8__UTXD1>;
++              bias-disable;
++      };
++
++      pinctrl_usb_default: usb_default {
++              pinmux = <PIN_PC17__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_usba_vbus: usba_vbus {
++              pinmux = <PIN_PD23__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_pwm0_pwm2_default: pwm0_pwm2_default {
++              pinmux = <PIN_PB5__PWMH2>,
++                       <PIN_PB6__PWML2>;
++              bias-pull-up;
++      };
++
++      pinctrl_macb0_default: macb0_default {
++              pinmux = <PIN_PD1__GRXCK>,
++                       <PIN_PD2__GTXER>,
++                       <PIN_PD5__GRX2>,
++                       <PIN_PD6__GRX3>,
++                       <PIN_PD7__GTX2>,
++                       <PIN_PD8__GTX3>,
++                       <PIN_PD9__GTXCK>,
++                       <PIN_PD10__GTXEN>,
++                       <PIN_PD11__GRXDV>,
++                       <PIN_PD12__GRXER>,
++                       <PIN_PD13__GRX0>,
++                       <PIN_PD14__GRX1>,
++                       <PIN_PD15__GTX0>,
++                       <PIN_PD16__GTX1>,
++                       <PIN_PD17__GMDC>,
++                       <PIN_PD18__GMDIO>;
++              bias-disable;
++      };
++
++      pinctrl_macb0_phy_irq: macb0_phy_irq {
++              pinmux = <PIN_PD3__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_macb0_rst: macb0_sw_rst {
++              pinmux = <PIN_PD4__GPIO>;
++              bias-disable;
++      };
++
++      pinctrl_flx2_default: flx2_default {
++              pinmux = <PIN_PA6__FLEXCOM2_IO0>,
++                       <PIN_PA7__FLEXCOM2_IO1>,
++                       <PIN_PA9__FLEXCOM2_IO3>,
++                       <PIN_PA10__FLEXCOM2_IO4>;
++              bias-disable;
++      };
++};
++
++&pwm0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_pwm0_pwm2_default>;
++      status = "disabled"; /* conflict with leds, HSIC */
++};
++
++&qspi1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_qspi1_default>;
++      status = "disabled"; /* Conflict with wilc_pwrseq, flx2 */
++
++      flash@0 {
++              #address-cells = <1>;
++              #size-cells = <1>;
++              compatible = "jedec,spi-nor";
++              reg = <0>;
++              spi-max-frequency = <80000000>;
++              spi-tx-bus-width = <4>;
++              spi-rx-bus-width = <4>;
++              m25p,fast-read;
++
++              at91bootstrap@0 {
++                      label = "qspi: at91bootstrap";
++                      reg = <0x00000000 0x00040000>;
++              };
++
++              bootloader@40000 {
++                      label = "qspi: bootloader";
++                      reg = <0x00040000 0x000c0000>;
++              };
++
++              bootloaderenvred@100000 {
++                      label = "qspi: bootloader env redundant";
++                      reg = <0x00100000 0x00040000>;
++              };
++
++              bootloaderenv@140000 {
++                      label = "qspi: bootloader env";
++                      reg = <0x00140000 0x00040000>;
++              };
++
++              dtb@180000 {
++                      label = "qspi: device tree";
++                      reg = <0x00180000 0x00080000>;
++              };
++
++              kernel@200000 {
++                      label = "qspi: kernel";
++                      reg = <0x00200000 0x00600000>;
++              };
++      };
++};
++
++&sdmmc0 {
++      no-1-8-v;
++      bus-width = <4>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_sdmmc0_default>;
++      status = "okay";
++};
++
++&shutdown_controller {
++      atmel,shdwc-debouncer = <976>;
++      atmel,wakeup-rtc-timer;
++
++      input@0 {
++              reg = <0>;
++      };
++};
++
++&spi0 {  /* mikrobus3 spi */
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_mikrobus3_spi &pinctrl_mikrobus3_spi_cs>;
++      status = "okay";
++};
++
++&tcb0 {
++      timer0: timer@0 {
++              compatible = "atmel,tcb-timer";
++              reg = <0>;
++      };
++
++      timer1: timer@1 {
++              compatible = "atmel,tcb-timer";
++              reg = <1>;
++      };
++};
++
++&uart0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_mikrobus1_uart>;
++      atmel,use-dma-rx;
++      atmel,use-dma-tx;
++      status = "okay";
++};
++
++&uart1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_mikrobus3_uart>;
++      atmel,use-dma-rx;
++      atmel,use-dma-tx;
++      status = "okay";
++};
++
++&uart3 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_mikrobus2_uart>;
++      atmel,use-dma-rx;
++      atmel,use-dma-tx;
++      status = "okay";
++};
++
++&usb0 {
++      atmel,vbus-gpio = <&pioA PIN_PD23 GPIO_ACTIVE_HIGH>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_usba_vbus>;
++      status = "okay";
++};
++
++&usb1 {
++      num-ports = <3>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&pinctrl_usb_default>;
++      status = "okay";
++};
++
++&usb2 {
++      phy_type = "hsic";
++      status = "okay";
++};
++
++&watchdog {
++      status = "okay";
++};
-- 
2.23.0



--- End Message ---
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to