/* * at91-sama5d2_xplained.dts - Device Tree file for SAMA5D2 Xplained board * * Copyright (C) 2015 Atmel, * 2015 Nicolas Ferre * * 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 "sama5d2.dtsi" #include "sama5d2-pinfunc.h" #include #include / { model = "Atmel SAMA5D2 Xplained"; compatible = "atmel,sama5d2-xplained", "atmel,sama5d2", "atmel,sama5"; chosen { stdout-path = "serial0:115200n8"; }; memory { reg = <0x20000000 0x80000>; }; clocks { slow_xtal { clock-frequency = <32768>; }; main_xtal { clock-frequency = <12000000>; }; }; ahb { usb0: gadget@00300000 { atmel,vbus-gpio = <&pioA 31 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usba_vbus>; status = "okay"; }; usb1: ohci@00400000 { num-ports = <3>; atmel,vbus-gpio = <0 /* &pioA 41 GPIO_ACTIVE_HIGH */ &pioA 42 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>; non-removable; mmc-ddr-1_8v; status = "okay"; }; sdmmc1: sdio-host@b0000000 { bus-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sdmmc1_default>; status = "okay"; /* conflict with qspi0 */ }; apb { spi0: spi@f8000000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_spi0_default>; status = "okay"; m25p80@0 { compatible = "atmel,at25df321a"; reg = <0>; spi-max-frequency = <50000000>; }; }; macb0: ethernet@f8008000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_macb0_default &pinctrl_macb0_phy_irq>; phy-mode = "rmii"; status = "okay"; ethernet-phy@1 { reg = <0x1>; interrupt-parent = <&pioA>; interrupts = <73 IRQ_TYPE_LEVEL_LOW>; }; }; pdmic@f8018000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pdmic_default>; atmel,model = "PDMIC @ sama5d2_xplained"; atmel,mic-min-freq = <1000000>; atmel,mic-max-freq = <3246000>; atmel,mic-offset = <0x0>; status = "okay"; }; uart1: serial@f8020000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1_default>; atmel,use-dma-rx; atmel,use-dma-tx; status = "okay"; }; i2c0: i2c@f8028000 { dmas = <0>, <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c0_default>; i2c-sda-hold-time-ns = <350>; status = "okay"; pmic@5b { compatible = "active-semi,act8945a"; reg = <0x5b>; active-semi,vsel-high; active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>; active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>; active-semi,irq_gpios = <&pioA 45 GPIO_ACTIVE_LOW>; active-semi,input-voltage-threshold-microvolt = <6600>; active-semi,precondition-timeout = <40>; active-semi,total-timeout = <3>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>; status = "okay"; regulators { vdd_1v35_reg: REG_DCDC1 { regulator-name = "VDD_1V35"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-always-on; }; vdd_1v2_reg: REG_DCDC2 { regulator-name = "VDD_1V2"; regulator-min-microvolt = <1100000>; regulator-max-microvolt = <1300000>; regulator-always-on; }; vdd_3v3_reg: REG_DCDC3 { regulator-name = "VDD_3V3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; vdd_fuse_reg: REG_LDO1 { regulator-name = "VDD_FUSE"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-always-on; }; vdd_3v3_lp_reg: REG_LDO2 { regulator-name = "VDD_3V3_LP"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; vdd_led_reg: REG_LDO3 { regulator-name = "VDD_LED"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; }; vdd_sdhc_1v8_reg: REG_LDO4 { regulator-name = "VDD_SDHC_1V8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; }; }; }; }; flx0: flexcom@f8034000 { atmel,flexcom-mode = ; status = "disabled"; /* conflict with ISC_D2 & ISC_D3 data pins */ uart5: serial@200 { compatible = "atmel,at91sam9260-usart"; reg = <0x200 0x200>; interrupts = <19 IRQ_TYPE_LEVEL_HIGH 7>; clocks = <&flx0_clk>; clock-names = "usart"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flx0_default>; atmel,fifo-size = <32>; status = "okay"; }; }; shdwc@f8048010 { atmel,shdwc-debouncer = <976>; input@0 { reg = <0>; atmel,wakeup-type = "low"; }; }; watchdog@f8048040 { status = "okay"; }; uart3: serial@fc008000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart3_default>; status = "okay"; }; flx4: flexcom@fc018000 { atmel,flexcom-mode = ; status = "okay"; i2c2: 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 = "okay"; }; }; i2c1: i2c@fc028000 { dmas = <0>, <0>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1_default>; status = "okay"; at24@54 { compatible = "atmel,24c02"; reg = <0x54>; pagesize = <16>; }; }; adc: adc@fc030000 { vddana-supply = <&vdd_3v3_lp_reg>; vref-supply = <&vdd_3v3_lp_reg>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_adc_default>; status = "okay"; }; pinctrl@fc038000 { /* * There is no real pinmux for ADC, if the pin * is not requested by another peripheral then * the muxing is done when channel is enabled. * Requesting pins for ADC is GPIO is * encouraged to prevent conflicts and to * disable bias in order to be in the same * state when the pin is not muxed to the adc. */ pinctrl_adc_default: adc_default { pinmux = ; bias-disable; }; pinctrl_charger_chglev: charger_chglev { pinmux = ; bias-disable; }; pinctrl_charger_irq: charger_irq { pinmux = ; bias-disable; }; pinctrl_charger_lbo: charger_lbo { pinmux = ; bias-pull-up; }; pinctrl_flx0_default: flx0_default { pinmux = , ; bias-disable; }; pinctrl_flx4_default: flx4_default { pinmux = , ; bias-disable; }; pinctrl_i2c0_default: i2c0_default { pinmux = , ; bias-disable; }; pinctrl_i2c1_default: i2c1_default { pinmux = , ; bias-disable; }; pinctrl_key_gpio_default: key_gpio_default { pinmux = ; bias-pull-up; }; pinctrl_led_gpio_default: led_gpio_default { pinmux = , , ; bias-pull-up; }; pinctrl_macb0_default: macb0_default { pinmux = , , , , , , , , , ; bias-disable; }; pinctrl_macb0_phy_irq: macb0_phy_irq { pinmux = ; bias-disable; }; pinctrl_pdmic_default: pdmic_default { pinmux = , ; bias-disable; }; pinctrl_sdmmc0_default: sdmmc0_default { cmd_data { pinmux = , , , , , , , , ; bias-pull-up; }; ck_cd_rstn_vddsel { pinmux = , , , ; bias-disable; }; }; pinctrl_sdmmc1_default: sdmmc1_default { cmd_data { pinmux = , , , , ; bias-pull-up; }; conf-ck_cd { pinmux = , ; bias-disable; }; }; pinctrl_spi0_default: spi0_default { pinmux = , , , ; bias-disable; }; pinctrl_uart1_default: uart1_default { pinmux = , ; bias-disable; }; pinctrl_uart3_default: uart3_default { pinmux = , ; bias-disable; }; pinctrl_usb_default: usb_default { pinmux = ; bias-disable; }; pinctrl_usba_vbus: usba_vbus { pinmux = ; bias-disable; }; }; }; }; gpio_keys { compatible = "gpio-keys"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_key_gpio_default>; bp1 { label = "PB_USER"; gpios = <&pioA 41 GPIO_ACTIVE_LOW>; linux,code = <0x104>; }; }; leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_led_gpio_default>; status = "okay"; red { label = "red"; gpios = <&pioA 38 GPIO_ACTIVE_LOW>; }; green { label = "green"; gpios = <&pioA 37 GPIO_ACTIVE_LOW>; }; blue { label = "blue"; gpios = <&pioA 32 GPIO_ACTIVE_LOW>; linux,default-trigger = "heartbeat"; }; }; };