/* * 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"; }; clocks { slow_xtal { clock-frequency = <32768>; }; main_xtal { clock-frequency = <12000000>; }; }; ahb { usb0: gadget@300000 { atmel,vbus-gpio = <&pioA PIN_PA31 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usba_vbus>; status = "okay"; }; usb1: ohci@400000 { num-ports = <3>; atmel,vbus-gpio = <0 /* &pioA PIN_PB9 GPIO_ACTIVE_HIGH */ &pioA PIN_PB10 GPIO_ACTIVE_HIGH 0 >; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usb_default>; status = "okay"; }; usb2: ehci@500000 { 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 */ vqmmc-supply = <&vdd_3v3_reg>; vmmc-supply = <&vdd_3v3_reg>; }; 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 = ; }; }; tcb0: timer@f800c000 { timer0: timer@0 { compatible = "atmel,tcb-timer"; reg = <0>; }; timer1: timer@1 { compatible = "atmel,tcb-timer"; reg = <1>; }; }; 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; 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; }; }; charger { compatible = "active-semi,act8945a-charger"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>; interrupt-parent = <&pioA>; interrupts = ; active-semi,chglev-gpios = <&pioA PIN_PA12 GPIO_ACTIVE_HIGH>; active-semi,lbo-gpios = <&pioA PIN_PC8 GPIO_ACTIVE_LOW>; active-semi,input-voltage-threshold-microvolt = <6600>; active-semi,precondition-timeout = <40>; active-semi,total-timeout = <3>; status = "okay"; }; }; }; pwm0: pwm@f802c000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm0_pwm2_default>; status = "disabled"; /* conflict with leds */ }; 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 = <&pmc PMC_TYPE_PERIPHERAL 19>; clock-names = "usart"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_flx0_default>; atmel,fifo-size = <32>; status = "okay"; }; }; shdwc@f8048010 { atmel,shdwc-debouncer = <976>; atmel,wakeup-rtc-timer; input@0 { reg = <0>; atmel,wakeup-type = "low"; }; }; watchdog@f8048040 { status = "okay"; }; i2s0: i2s@f8050000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2s0_default>; status = "disabled"; /* conflict with can0 */ }; can0: can@f8054000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_can0_default>; status = "okay"; }; uart3: serial@fc008000 { atmel,use-dma-rx; atmel,use-dma-tx; 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 = <&pmc PMC_TYPE_PERIPHERAL 23>; 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 &pinctrl_adtrg_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_can0_default: can0_default { pinmux = , ; bias-disable; }; pinctrl_can1_default: can1_default { pinmux = , ; 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 = ; bias-pull-up; }; 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_classd_default: classd_default { 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_i2s0_default: i2s0_default { pinmux = , , , , ; bias-disable; }; pinctrl_i2s1_default: i2s1_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-disable; }; ck_cd_rstn_vddsel { pinmux = , , , ; bias-disable; }; }; pinctrl_sdmmc1_default: sdmmc1_default { cmd_data { pinmux = , , , , ; bias-disable; }; 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; }; pinctrl_pwm0_pwm2_default: pwm0_pwm2_default { pinmux = , ; bias-pull-up; }; }; classd: classd@fc048000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_classd_default>; atmel,pwm-type = "diff"; atmel,non-overlap-time = <10>; status = "okay"; }; i2s1: i2s@fc04c000 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2s1_default>; status = "disabled"; /* conflict with spi0, sdmmc1 */ }; 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>; bp1 { label = "PB_USER"; gpios = <&pioA PIN_PB9 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_PB6 GPIO_ACTIVE_LOW>; }; green { label = "green"; gpios = <&pioA PIN_PB5 GPIO_ACTIVE_LOW>; }; blue { label = "blue"; gpios = <&pioA PIN_PB0 GPIO_ACTIVE_LOW>; linux,default-trigger = "heartbeat"; }; }; };