diff options
Diffstat (limited to 'target/linux/at91')
-rwxr-xr-x | target/linux/at91/base-files/lib/at91.sh | 3 | ||||
-rw-r--r-- | target/linux/at91/image/sama5.mk | 18 | ||||
-rw-r--r-- | target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch | 908 |
3 files changed, 924 insertions, 5 deletions
diff --git a/target/linux/at91/base-files/lib/at91.sh b/target/linux/at91/base-files/lib/at91.sh index 61921edd14..5d31b6741d 100755 --- a/target/linux/at91/base-files/lib/at91.sh +++ b/target/linux/at91/base-files/lib/at91.sh @@ -43,6 +43,9 @@ at91_board_detect() { *"SAMA5D3 Xplained") name="sama5d3_xplained" ;; + *"Atmel SAMA5D27 SOM1 EK") + name="sama5d27_som1_ek" + ;; *"SAMA5D2 Xplained") name="sama5d2_xplained" ;; diff --git a/target/linux/at91/image/sama5.mk b/target/linux/at91/image/sama5.mk index b87588877d..5960f40a3b 100644 --- a/target/linux/at91/image/sama5.mk +++ b/target/linux/at91/image/sama5.mk @@ -11,15 +11,15 @@ define Build/at91-sdcard $(foreach dts,$(DEVICE_DTS), \ mcopy -i $@.boot $(DTS_DIR)/$(dts).dtb \ - ::$(dts).dtb;) + ::$(dts).dtb) mcopy -i $@.boot \ $(BIN_DIR)/u-boot-$(DEVICE_NAME:at91-%=%)_mmc/u-boot.bin \ ::u-boot.bin - $(CP) $(BIN_DIR)/at91bootstrap-$(DEVICE_NAME:at91-%=%)sd*/at91bootstrap.bin \ - $@.BOOT.bin; \ - mcopy -i $@.boot $@.BOOT.bin ::BOOT.bin + mcopy -i $@.boot \ + $(BIN_DIR)/at91bootstrap-$(DEVICE_NAME:at91-%=%)sd*/at91bootstrap.bin \ + ::BOOT.bin ./gen_at91_sdcard_img.sh \ $@.img \ @@ -30,7 +30,7 @@ define Build/at91-sdcard gzip -nc9 $@.img > $@ - rm -f $@.img $@.boot $@.BOOT.bin + rm -f $@.img $@.boot endef define Device/evaluation-sdimage @@ -73,6 +73,14 @@ define Device/at91-sama5d4_xplained endef TARGET_DEVICES += at91-sama5d4_xplained +define Device/at91-sama5d27_som1_ek + $(Device/evaluation-dtb) + DEVICE_TITLE := Microchip(Atmel AT91) SAMA5D27 SOM1 Ek + KERNEL_SIZE := 6144k + $(Device/evaluation-sdimage) +endef +TARGET_DEVICES += at91-sama5d27_som1_ek + ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"") ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"") define Device/wb50n diff --git a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch new file mode 100644 index 0000000000..1a3945eb4a --- /dev/null +++ b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch @@ -0,0 +1,908 @@ +diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt +index 61ac757..9820227 100644 +--- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt ++++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt +@@ -35,7 +35,12 @@ right representation of the pin. + Optional properties: + - GENERIC_PINCONFIG: generic pinconfig options to use, bias-disable, + bias-pull-down, bias-pull-up, drive-open-drain, input-schmitt-enable, +-input-debounce, output-low, output-high. ++input-debounce, output-low, output-high, drive-strength. ++ ++Concerning the drive-strength property, the values accepted are ++ATMEL_PIO_DRVSTR_LO, ATMEL_PIO_DRVSTR_ME, ATMEL_PIO_DRVSTR_HI. The current ++depends on VDDIOP. You can find the details in the DC Characteristics table ++from the datasheet. + + Example: + +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 1218005..c88e426 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \ + wb45n.dtb + dtb-$(CONFIG_SOC_SAM_V7) += \ + at91-kizbox2.dtb \ ++ at91-sama5d27_som1_ek.dtb \ + at91-sama5d2_xplained.dtb \ + at91-sama5d3_xplained.dtb \ + sama5d31ek.dtb \ +diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi +new file mode 100644 +index 0000000..7d7575f +--- /dev/null ++++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi +@@ -0,0 +1,175 @@ ++/* ++ * at91-sama5d27_som1.dtsi - Device Tree file for SAMA5D27 SoM1 board ++ * ++ * Copyright (c) 2017, Microchip Technology Inc. ++ * 2017 Cristian Birsan <cristian.birsan@microchip.com> ++ * 2017 Claudiu Beznea <claudiu.beznea@microchip.com> ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#include "sama5d2.dtsi" ++#include "sama5d2-pinfunc.h" ++ ++/ { ++ model = "Atmel SAMA5D27 SoM1"; ++ compatible = "atmel,sama5d27-som1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5"; ++ ++ clocks { ++ slow_xtal { ++ clock-frequency = <32768>; ++ }; ++ ++ main_xtal { ++ clock-frequency = <24000000>; ++ }; ++ }; ++ ++ ahb { ++ apb { ++ qspi1: spi@f0024000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_qspi1_default>; ++ ++ flash@0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <80000000>; ++ m25p,fast-read; ++ ++ at91bootstrap@00000000 { ++ label = "at91bootstrap"; ++ reg = <0x00000000 0x00010000>; ++ }; ++ ++ bootloader@00010000 { ++ label = "bootloader"; ++ reg = <0x00010000 0x000a0000>; ++ }; ++ ++ bootloaderenv@000b0000 { ++ label = "bootloader env"; ++ reg = <0x000b0000 0x00010000>; ++ }; ++ ++ dtb@000c0000 { ++ label = "device tree"; ++ reg = <0x000c0000 0x0020000>; ++ }; ++ ++ kernel@000e0000 { ++ label = "kernel"; ++ reg = <0x000e0000 0x0400000>; ++ }; ++ }; ++ }; ++ ++ macb0: ethernet@f8008000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_macb0_default>; ++ phy-mode = "rmii"; ++ ++ ethernet-phy@0 { ++ reg = <0x0>; ++ interrupt-parent = <&pioA>; ++ interrupts = <PIN_PD31 IRQ_TYPE_LEVEL_LOW>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_macb0_phy_irq>; ++ }; ++ }; ++ ++ i2c0: i2c@f8028000 { ++ dmas = <0>, <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c0_default>; ++ status = "okay"; ++ ++ at24@50 { ++ compatible = "24c02"; ++ reg = <0x50>; ++ pagesize = <8>; ++ }; ++ }; ++ ++ pinctrl@fc038000 { ++ pinctrl_i2c0_default: i2c0_default { ++ pinmux = <PIN_PD21__TWD0>, ++ <PIN_PD22__TWCK0>; ++ bias-disable; ++ }; ++ ++ pinctrl_qspi1_default: qspi1_default { ++ sck_cs { ++ pinmux = <PIN_PB5__QSPI1_SCK>, ++ <PIN_PB6__QSPI1_CS>; ++ bias-disable; ++ }; ++ ++ data { ++ pinmux = <PIN_PB7__QSPI1_IO0>, ++ <PIN_PB8__QSPI1_IO1>, ++ <PIN_PB9__QSPI1_IO2>, ++ <PIN_PB10__QSPI1_IO3>; ++ bias-pull-up; ++ }; ++ }; ++ ++ pinctrl_macb0_default: macb0_default { ++ pinmux = <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_PD31__GPIO>; ++ bias-disable; ++ }; ++ }; ++ }; ++ }; ++}; +diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts +new file mode 100644 +index 0000000..fd12b68 +--- /dev/null ++++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts +@@ -0,0 +1,53 @@ ++/* ++ * at91-sama5d27_som1_ek.dts - Device Tree file for SAMA5D27-SOM1-EK board ++ * ++ * Copyright (c) 2017, Microchip Technology Inc. ++ * 2016 Nicolas Ferre <nicolas.ferre@atmel.com> ++ * 2017 Cristian Birsan <cristian.birsan@microchip.com> ++ * 2017 Claudiu Beznea <claudiu.beznea@microchip.com> ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++/dts-v1/; ++#include "at91-sama5d27_som1_ek_common.dtsi" ++ ++/ { ++ model = "Atmel SAMA5D27 SOM1 EK"; ++ compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5"; ++}; +diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi +new file mode 100644 +index 0000000..7201a8e +--- /dev/null ++++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi +@@ -0,0 +1,619 @@ ++/* ++ * at91-sama5d27_som1_ek_common.dtsi - Device Tree file for SAMA5D27-SOM1-EK board ++ * ++ * Copyright (c) 2017, Microchip Technology Inc. ++ * 2016 Nicolas Ferre <nicolas.ferre@atmel.com> ++ * 2017 Cristian Birsan <cristian.birsan@microchip.com> ++ * 2017 Claudiu Beznea <claudiu.beznea@microchip.com> ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This file is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This file is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#include "at91-sama5d27_som1.dtsi" ++#include <dt-bindings/mfd/atmel-flexcom.h> ++#include <dt-bindings/gpio/gpio.h> ++#include <dt-bindings/pinctrl/at91.h> ++ ++/ { ++ model = "Atmel SAMA5D27 SOM1 EK"; ++ compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5"; ++ ++ aliases { ++ serial0 = &uart1; /* DBGU */ ++ serial1 = &uart4; /* mikro BUS 1 */ ++ serial2 = &uart2; /* mikro BUS 2 */ ++ i2c1 = &i2c1; ++ i2c2 = &i2c2; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ ahb { ++ usb0: gadget@00300000 { ++ atmel,vbus-gpio = <&pioA PIN_PD20 GPIO_ACTIVE_HIGH>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usba_vbus>; ++ status = "okay"; ++ }; ++ ++ usb1: ohci@00400000 { ++ num-ports = <3>; ++ atmel,vbus-gpio = <0 /* &pioA PIN_PD20 GPIO_ACTIVE_HIGH */ ++ &pioA PIN_PA27 GPIO_ACTIVE_HIGH ++ 0 ++ >; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usb_default>; ++ status = "okay"; ++ }; ++ ++ usb2: ehci@00500000 { ++ status = "okay"; ++ }; ++ ++ sdmmc0: sdio-host@a0000000 { ++ bus-width = <8>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_sdmmc0_default>; ++ status = "okay"; ++ }; ++ ++ sdmmc1: sdio-host@b0000000 { ++ bus-width = <4>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_sdmmc1_default>; ++ status = "okay"; ++ }; ++ ++ apb { ++ hlcdc: hlcdc@f0000000 { ++ status = "disabled"; ++ ++ hlcdc-display-controller { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb>; ++ }; ++ ++ hlcdc_pwm: hlcdc-pwm { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_lcd_pwm>; ++ }; ++ }; ++ ++ pmc: pmc@f0014000 { ++ pmc_fast_restart { ++ compatible = "atmel,sama5d2-pmc-fast-startup"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ atmel,wakeup-rtc-timer; ++ ++ wkpin: input@0 { ++ reg = <0>; ++ }; ++ ++ gmac_wol: input@10 { ++ reg = <10>; ++ atmel,wakeup-active-high; ++ }; ++ }; ++ }; ++ ++ isc: isc@f0008000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_isc_base &pinctrl_isc_data_8bit &pinctrl_isc_data_9_10 &pinctrl_isc_data_11_12>; ++ status = "okay"; ++ }; ++ ++ qspi1: spi@f0024000 { ++ status = "okay"; ++ }; ++ ++ spi0: spi@f8000000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_spi0_default>; ++ status = "okay"; ++ }; ++ ++ macb0: ethernet@f8008000 { ++ status = "okay"; ++ }; ++ ++ uart1: serial@f8020000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart1_default>; ++ atmel,use-dma-rx; ++ atmel,use-dma-tx; ++ status = "okay"; ++ }; ++ ++ uart2: serial@f8024000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mikrobus2_uart>; ++ atmel,use-dma-rx; ++ atmel,use-dma-tx; ++ status = "okay"; ++ }; ++ ++ pwm0: pwm@f802c000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mikrobus1_pwm &pinctrl_mikrobus2_pwm>; ++ status = "disabled"; /* Conflict with leds. */ ++ }; ++ ++ flx1: flexcom@f8038000 { ++ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>; ++ status = "okay"; ++ ++ i2c2: i2c@600 { ++ compatible = "atmel,sama5d2-i2c"; ++ reg = <0x600 0x200>; ++ interrupts = <20 IRQ_TYPE_LEVEL_HIGH 7>; ++ dmas = <0>, <0>; ++ dma-names = "tx", "rx"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ clocks = <&flx1_clk>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mikrobus_i2c>; ++ atmel,fifo-size = <16>; ++ status = "okay"; ++ }; ++ }; ++ ++ shdwc@f8048010 { ++ atmel,shdwc-debouncer = <976>; ++ atmel,wakeup-rtc-timer; ++ ++ input@0 { ++ reg = <0>; ++ atmel,wakeup-type = "low"; ++ }; ++ }; ++ ++ watchdog@f8048040 { ++ status = "okay"; ++ }; ++ ++ uart3: serial@fc008000 { ++ atmel,use-dma-rx; ++ atmel,use-dma-tx; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_uart3_default>; ++ status = "disabled"; /* Conflict with isc. */ ++ }; ++ ++ uart4: serial@fc00c000 { ++ atmel,use-dma-rx; ++ atmel,use-dma-tx; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mikrobus1_uart>; ++ status = "okay"; ++ }; ++ ++ flx3: flexcom@fc014000 { ++ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>; ++ status = "disabled"; ++ ++ uart7: serial@200 { ++ compatible = "atmel,at91sam9260-usart"; ++ reg = <0x200 0x200>; ++ interrupts = <22 IRQ_TYPE_LEVEL_HIGH 7>; ++ clocks = <&flx3_clk>; ++ clock-names = "usart"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flx3_default>; ++ atmel,fifo-size = <32>; ++ status = "disabled"; /* Conflict with isc. */ ++ }; ++ ++ spi2: spi@400 { ++ compatible = "atmel,at91rm9200-spi"; ++ reg = <0x400 0x200>; ++ interrupts = <22 IRQ_TYPE_LEVEL_HIGH 7>; ++ clocks = <&flx3_clk>; ++ clock-names = "spi_clk"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flx3_default>; ++ atmel,fifo-size = <16>; ++ status = "disabled"; /* Conflict with isc. */ ++ }; ++ }; ++ ++ flx4: flexcom@fc018000 { ++ atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>; ++ status = "okay"; ++ ++ uart6: serial@200 { ++ compatible = "atmel,at91sam9260-usart"; ++ reg = <0x200 0x200>; ++ interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>; ++ clocks = <&flx4_clk>; ++ clock-names = "usart"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flx4_default>; ++ atmel,fifo-size = <32>; ++ status = "disabled"; /* Conflict with spi3 and i2c3. */ ++ }; ++ ++ spi3: spi@400 { ++ compatible = "atmel,at91rm9200-spi"; ++ reg = <0x400 0x200>; ++ interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>; ++ clocks = <&flx4_clk>; ++ clock-names = "spi_clk"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mikrobus_spi &pinctrl_mikrobus1_spi_cs &pinctrl_mikrobus2_spi_cs>; ++ atmel,fifo-size = <16>; ++ status = "okay"; ++ }; ++ ++ i2c3: i2c@600 { ++ compatible = "atmel,sama5d2-i2c"; ++ reg = <0x600 0x200>; ++ interrupts = <23 IRQ_TYPE_LEVEL_HIGH 7>; ++ dmas = <0>, <0>; ++ dma-names = "tx", "rx"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ clocks = <&flx4_clk>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_flx4_default>; ++ atmel,fifo-size = <16>; ++ status = "disabled"; /* Conflict with uart6 and spi3. */ ++ }; ++ }; ++ ++ i2c1: i2c@fc028000 { ++ dmas = <0>, <0>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_i2c1_default>; ++ status = "okay"; ++ }; ++ ++ pinctrl@fc038000 { ++ ++ pinctrl_lcd_base: pinctrl_lcd_base { ++ pinmux = <PIN_PC5__LCDVSYNC>, ++ <PIN_PC6__LCDHSYNC>, ++ <PIN_PC8__LCDDEN>, ++ <PIN_PC7__LCDPCK>; ++ bias-disable; ++ drive-strength = <ATMEL_PIO_DRVSTR_ME>; ++ }; ++ ++ pinctrl_lcd_rgb: pinctrl_lcd_rgb { ++ pinmux = <PIN_PB11__LCDDAT0>, ++ <PIN_PB12__LCDDAT1>, ++ <PIN_PB13__LCDDAT2>, ++ <PIN_PB14__LCDDAT3>, ++ <PIN_PB15__LCDDAT4>, ++ <PIN_PB16__LCDDAT5>, ++ <PIN_PB17__LCDDAT6>, ++ <PIN_PB18__LCDDAT7>, ++ <PIN_PB19__LCDDAT8>, ++ <PIN_PB20__LCDDAT9>, ++ <PIN_PB21__LCDDAT10>, ++ <PIN_PB22__LCDDAT11>, ++ <PIN_PB23__LCDDAT12>, ++ <PIN_PB24__LCDDAT13>, ++ <PIN_PB25__LCDDAT14>, ++ <PIN_PB26__LCDDAT15>, ++ <PIN_PB27__LCDDAT16>, ++ <PIN_PB28__LCDDAT17>, ++ <PIN_PB29__LCDDAT18>, ++ <PIN_PB30__LCDDAT19>, ++ <PIN_PB31__LCDDAT20>, ++ <PIN_PC0__LCDDAT21>, ++ <PIN_PC1__LCDDAT22>, ++ <PIN_PC2__LCDDAT23>; ++ bias-disable; ++ }; ++ ++ pinctrl_lcd_pwm: pinctrl_lcd_pwm { ++ pinmux = <PIN_PC3__LCDPWM>; ++ bias-disable; ++ }; ++ ++ pinctrl_can1_default: can1_default { ++ pinmux = <PIN_PC26__CANTX1>, ++ <PIN_PC27__CANRX1>; ++ bias-disable; ++ }; ++ ++ pinctrl_flx3_default: flx3_default { ++ pinmux = <PIN_PC20__FLEXCOM3_IO0>, ++ <PIN_PC19__FLEXCOM3_IO1>, ++ <PIN_PC18__FLEXCOM3_IO2>, ++ <PIN_PC21__FLEXCOM3_IO3>, ++ <PIN_PC22__FLEXCOM3_IO4>; ++ bias-disable; ++ }; ++ ++ pinctrl_i2c1_default: i2c1_default { ++ pinmux = <PIN_PD4__TWD1>, ++ <PIN_PD5__TWCK1>; ++ bias-disable; ++ }; ++ ++ pinctrl_isc_base: isc_base { ++ pinmux = <PIN_PC21__ISC_PCK>, ++ <PIN_PC22__ISC_VSYNC>, ++ <PIN_PC23__ISC_HSYNC>, ++ <PIN_PC24__ISC_MCK>; ++ bias-disable; ++ }; ++ ++ pinctrl_isc_data_8bit: isc_data_8bit { ++ pinmux = <PIN_PC20__ISC_D11>, ++ <PIN_PC19__ISC_D10>, ++ <PIN_PC18__ISC_D9>, ++ <PIN_PC17__ISC_D8>, ++ <PIN_PC16__ISC_D7>, ++ <PIN_PC15__ISC_D6>, ++ <PIN_PC14__ISC_D5>, ++ <PIN_PC13__ISC_D4>; ++ bias-disable; ++ }; ++ ++ pinctrl_isc_data_9_10: isc_data_9_10 { ++ pinmux = <PIN_PC12__ISC_D3>, ++ <PIN_PC11__ISC_D2>; ++ bias-disable; ++ }; ++ ++ pinctrl_isc_data_11_12: isc_data_11_12 { ++ pinmux = <PIN_PC10__ISC_D1>, ++ <PIN_PC9__ISC_D0>; ++ bias-disable; ++ }; ++ ++ pinctrl_key_gpio_default: key_gpio_default { ++ pinmux = <PIN_PA29__GPIO>; ++ bias-pull-up; ++ }; ++ ++ pinctrl_led_gpio_default: led_gpio_default { ++ pinmux = <PIN_PA10__GPIO>, ++ <PIN_PB1__GPIO>, ++ <PIN_PA31__GPIO>; ++ bias-pull-up; ++ }; ++ ++ 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>, ++ <PIN_PA6__SDMMC0_DAT4>, ++ <PIN_PA7__SDMMC0_DAT5>, ++ <PIN_PA8__SDMMC0_DAT6>, ++ <PIN_PA9__SDMMC0_DAT7>; ++ bias-disable; ++ }; ++ ++ ck_cd_vddsel { ++ pinmux = <PIN_PA0__SDMMC0_CK>, ++ <PIN_PA11__SDMMC0_VDDSEL>, ++ <PIN_PA13__SDMMC0_CD>; ++ bias-disable; ++ }; ++ }; ++ ++ pinctrl_sdmmc1_default: sdmmc1_default { ++ cmd_data { ++ pinmux = <PIN_PA28__SDMMC1_CMD>, ++ <PIN_PA18__SDMMC1_DAT0>, ++ <PIN_PA19__SDMMC1_DAT1>, ++ <PIN_PA20__SDMMC1_DAT2>, ++ <PIN_PA21__SDMMC1_DAT3>; ++ bias-disable; ++ }; ++ ++ conf-ck_cd { ++ pinmux = <PIN_PA22__SDMMC1_CK>, ++ <PIN_PA30__SDMMC1_CD>; ++ bias-disable; ++ }; ++ }; ++ ++ pinctrl_spi0_default: spi0_default { ++ pinmux = <PIN_PA14__SPI0_SPCK>, ++ <PIN_PA15__SPI0_MOSI>, ++ <PIN_PA16__SPI0_MISO>, ++ <PIN_PA17__SPI0_NPCS0>; ++ bias-disable; ++ }; ++ ++ pinctrl_uart1_default: uart1_default { ++ pinmux = <PIN_PD2__URXD1>, ++ <PIN_PD3__UTXD1>; ++ bias-disable; ++ }; ++ ++ pinctrl_uart3_default: uart3_default { ++ pinmux = <PIN_PC12__URXD3>, ++ <PIN_PC13__UTXD3>; ++ bias-disable; ++ }; ++ ++ pinctrl_usb_default: usb_default { ++ pinmux = <PIN_PA27__GPIO>, ++ <PIN_PD19__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_usba_vbus: usba_vbus { ++ pinmux = <PIN_PD20__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_an: mikrobus1_an { ++ pinmux = <PIN_PD25__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_an: mikrobus2_an { ++ pinmux = <PIN_PD26__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_rst: mikrobus1_rst { ++ pinmux = <PIN_PB2__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_rst: mikrobus2_rst { ++ pinmux = <PIN_PA26__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_spi_cs: mikrobus1_spi_cs { ++ pinmux = <PIN_PD0__FLEXCOM4_IO4>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_spi_cs: mikrobus2_spi_cs { ++ pinmux = <PIN_PC31__FLEXCOM4_IO3>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus_spi: mikrobus_spi { ++ pinmux = <PIN_PC28__FLEXCOM4_IO0>, ++ <PIN_PC29__FLEXCOM4_IO1>, ++ <PIN_PC30__FLEXCOM4_IO2>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_pwm: mikrobus1_pwm { ++ pinmux = <PIN_PB1__PWML1>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_pwm: mikrobus2_pwm { ++ pinmux = <PIN_PA31__PWML0>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_int: mikrobus1_int { ++ pinmux = <PIN_PB0__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_int: mikrobus2_int { ++ pinmux = <PIN_PA25__GPIO>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus1_uart: mikrobus1_uart { ++ pinmux = <PIN_PB3__URXD4>, ++ <PIN_PB4__UTXD4>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus2_uart: mikrobus2_uart { ++ pinmux = <PIN_PD23__URXD2>, ++ <PIN_PD24__UTXD2>; ++ bias-disable; ++ }; ++ ++ pinctrl_mikrobus_i2c: mikrobus1_i2c { ++ pinmux = <PIN_PA24__FLEXCOM1_IO0>, ++ <PIN_PA23__FLEXCOM1_IO1>; ++ bias-disable; ++ }; ++ ++ pinctrl_flx4_default: flx4_uart_default { ++ pinmux = <PIN_PC28__FLEXCOM4_IO0>, ++ <PIN_PC29__FLEXCOM4_IO1>, ++ <PIN_PC30__FLEXCOM4_IO2>, ++ <PIN_PC31__FLEXCOM4_IO3>, ++ <PIN_PD0__FLEXCOM4_IO4>; ++ bias-disable; ++ }; ++ }; ++ ++ can1: can@fc050000 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_can1_default>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ gpio_keys { ++ compatible = "gpio-keys"; ++ ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_key_gpio_default>; ++ ++ pb4 { ++ label = "USER"; ++ gpios = <&pioA PIN_PA29 GPIO_ACTIVE_LOW>; ++ linux,code = <0x104>; ++ 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_PA10 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"; ++ }; ++ }; ++}; +diff --git a/include/dt-bindings/pinctrl/at91.h b/include/dt-bindings/pinctrl/at91.h +index bbca3d0..88eb7d0 100644 +--- a/include/dt-bindings/pinctrl/at91.h ++++ b/include/dt-bindings/pinctrl/at91.h +@@ -37,4 +37,8 @@ + #define AT91_PERIPH_C 3 + #define AT91_PERIPH_D 4 + ++#define ATMEL_PIO_DRVSTR_LO 1 ++#define ATMEL_PIO_DRVSTR_ME 2 ++#define ATMEL_PIO_DRVSTR_HI 3 ++ + #endif /* __DT_BINDINGS_AT91_PINCTRL_H__ */ |