1/* 2 * sama5d3xmb_cmp.dts - Device Tree file for SAMA5D3x CMP mother board 3 * 4 * Copyright (C) 2016 Atmel, 5 * 6 * This file is dual-licensed: you can use it either under the terms 7 * of the GPL or the X11 license, at your option. Note that this dual 8 * licensing only applies to this file, and not this project as a 9 * whole. 10 * 11 * a) This file is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU General Public License as 13 * published by the Free Software Foundation; either version 2 of the 14 * License, or (at your option) any later version. 15 * 16 * This file is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * Or, alternatively, 22 * 23 * b) Permission is hereby granted, free of charge, to any person 24 * obtaining a copy of this software and associated documentation 25 * files (the "Software"), to deal in the Software without 26 * restriction, including without limitation the rights to use, 27 * copy, modify, merge, publish, distribute, sublicense, and/or 28 * sell copies of the Software, and to permit persons to whom the 29 * Software is furnished to do so, subject to the following 30 * conditions: 31 * 32 * The above copyright notice and this permission notice shall be 33 * included in all copies or substantial portions of the Software. 34 * 35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42 * OTHER DEALINGS IN THE SOFTWARE. 43 */ 44#include "sama5d3xcm_cmp.dtsi" 45 46/ { 47 compatible = "atmel,sama5d3xmb-cmp", "atmel,sama5d3xcm-cmp", "atmel,sama5d3", "atmel,sama5"; 48 49 ahb { 50 apb { 51 mmc0: mmc@f0000000 { 52 pinctrl-names = "default"; 53 pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>; 54 status = "okay"; 55 slot@0 { 56 reg = <0>; 57 bus-width = <4>; 58 cd-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>; 59 }; 60 }; 61 62 spi0: spi@f0004000 { 63 dmas = <0>, <0>; /* Do not use DMA for spi0 */ 64 65 m25p80@0 { 66 compatible = "atmel,at25df321a"; 67 spi-max-frequency = <50000000>; 68 reg = <0>; 69 }; 70 }; 71 72 ssc0: ssc@f0008000 { 73 atmel,clk-from-rk-pin; 74 }; 75 76 /* 77 * i2c0 conflicts with ISI: 78 * disable it to allow the use of ISI 79 * can not enable audio when i2c0 disabled 80 */ 81 i2c0: i2c@f0014000 { 82 wm8904: wm8904@1a { 83 compatible = "wlf,wm8904"; 84 reg = <0x1a>; 85 clocks = <&pck0>; 86 clock-names = "mclk"; 87 }; 88 }; 89 90 i2c1: i2c@f0018000 { 91 ov2640: camera@30 { 92 compatible = "ovti,ov2640"; 93 reg = <0x30>; 94 pinctrl-names = "default"; 95 pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>; 96 resetb-gpios = <&pioE 24 GPIO_ACTIVE_LOW>; 97 pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>; 98 /* use pck1 for the master clock of ov2640 */ 99 clocks = <&pck1>; 100 clock-names = "xvclk"; 101 assigned-clocks = <&pck1>; 102 assigned-clock-rates = <25000000>; 103 104 port { 105 ov2640_0: endpoint { 106 remote-endpoint = <&isi_0>; 107 bus-width = <8>; 108 }; 109 }; 110 }; 111 }; 112 113 usart1: serial@f0020000 { 114 dmas = <0>, <0>; /* Do not use DMA for usart1 */ 115 pinctrl-names = "default"; 116 pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>; 117 status = "okay"; 118 }; 119 120 isi: isi@f0034000 { 121 port { 122 isi_0: endpoint { 123 remote-endpoint = <&ov2640_0>; 124 bus-width = <8>; 125 vsync-active = <1>; 126 hsync-active = <1>; 127 }; 128 }; 129 }; 130 131 mmc1: mmc@f8000000 { 132 pinctrl-names = "default"; 133 pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>; 134 status = "okay"; 135 slot@0 { 136 reg = <0>; 137 bus-width = <4>; 138 cd-gpios = <&pioD 18 GPIO_ACTIVE_HIGH>; 139 }; 140 }; 141 142 adc0: adc@f8018000 { 143 pinctrl-names = "default", "sleep"; 144 pinctrl-0 = < 145 &pinctrl_adc0_adtrg 146 &pinctrl_adc0_ad0 147 &pinctrl_adc0_ad1 148 &pinctrl_adc0_ad2 149 &pinctrl_adc0_ad3 150 &pinctrl_adc0_ad4 151 >; 152 pinctrl-1 = < 153 &pinctrl_adc0_adtrg_sleep 154 &pinctrl_adc0_ad0_sleep 155 &pinctrl_adc0_ad1_sleep 156 &pinctrl_adc0_ad2_sleep 157 &pinctrl_adc0_ad3_sleep 158 &pinctrl_adc0_ad4_sleep 159 >; 160 status = "okay"; 161 }; 162 163 macb1: ethernet@f802c000 { 164 phy-mode = "rmii"; 165 166 #address-cells = <1>; 167 #size-cells = <0>; 168 phy0: ethernet-phy@1 { 169 /*interrupt-parent = <&pioE>;*/ 170 /*interrupts = <30 IRQ_TYPE_EDGE_FALLING>;*/ 171 reg = <1>; 172 }; 173 }; 174 175 pinctrl@fffff200 { 176 adc0 { 177 pinctrl_adc0_adtrg_sleep: adc0_adtrg_1 { 178 atmel,pins = 179 <AT91_PIOD 19 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 180 }; 181 pinctrl_adc0_ad0_sleep: adc0_ad0_1 { 182 atmel,pins = 183 <AT91_PIOD 20 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 184 }; 185 pinctrl_adc0_ad1_sleep: adc0_ad1_1 { 186 atmel,pins = 187 <AT91_PIOD 21 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 188 }; 189 pinctrl_adc0_ad2_sleep: adc0_ad2_1 { 190 atmel,pins = 191 <AT91_PIOD 22 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 192 }; 193 pinctrl_adc0_ad3_sleep: adc0_ad3_1 { 194 atmel,pins = 195 <AT91_PIOD 23 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 196 }; 197 pinctrl_adc0_ad4_sleep: adc0_ad4_1 { 198 atmel,pins = 199 <AT91_PIOD 24 AT91_PERIPH_GPIO (AT91_PINCTRL_OUTPUT | AT91_PINCTRL_OUTPUT_VAL(0))>; 200 }; 201 }; 202 203 board { 204 pinctrl_gpio_keys: gpio_keys { 205 atmel,pins = 206 <AT91_PIOE 27 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; 207 }; 208 209 pinctrl_mmc0_cd: mmc0_cd { 210 atmel,pins = 211 <AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; 212 }; 213 214 pinctrl_mmc1_cd: mmc1_cd { 215 atmel,pins = 216 <AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; 217 }; 218 219 pinctrl_pck0_as_audio_mck: pck0_as_audio_mck { 220 atmel,pins = 221 <AT91_PIOD 30 AT91_PERIPH_B AT91_PINCTRL_NONE>; 222 }; 223 224 pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 { 225 atmel,pins = 226 <AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_NONE>; 227 }; 228 229 pinctrl_sensor_reset: sensor_reset-0 { 230 atmel,pins = 231 <AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; 232 }; 233 234 pinctrl_sensor_power: sensor_power-0 { 235 atmel,pins = 236 <AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; 237 }; 238 239 pinctrl_usba_vbus: usba_vbus { 240 atmel,pins = 241 <AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; 242 }; 243 }; 244 }; 245 246 dbgu: serial@ffffee00 { 247 dmas = <0>, <0>; /* Do not use DMA for dbgu */ 248 status = "okay"; 249 }; 250 251 watchdog@fffffe40 { 252 status = "okay"; 253 }; 254 }; 255 256 usb0: gadget@500000 { 257 atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>; 258 pinctrl-names = "default"; 259 pinctrl-0 = <&pinctrl_usba_vbus>; 260 status = "okay"; 261 }; 262 }; 263 264 sound { 265 compatible = "atmel,asoc-wm8904"; 266 pinctrl-names = "default"; 267 pinctrl-0 = <&pinctrl_pck0_as_audio_mck>; 268 269 atmel,model = "wm8904 @ SAMA5D3EK"; 270 atmel,audio-routing = 271 "Headphone Jack", "HPOUTL", 272 "Headphone Jack", "HPOUTR", 273 "IN2L", "Line In Jack", 274 "IN2R", "Line In Jack", 275 "Mic", "MICBIAS", 276 "IN1L", "Mic"; 277 278 atmel,ssc-controller = <&ssc0>; 279 atmel,audio-codec = <&wm8904>; 280 281 status = "disabled"; 282 }; 283 284 /* Conflict with LCD pins */ 285 gpio_keys { 286 compatible = "gpio-keys"; 287 status = "okay"; 288 289 #address-cells = <1>; 290 #size-cells = <0>; 291 pinctrl-names = "default"; 292 pinctrl-0 = <&pinctrl_gpio_keys>; 293 294 pb_user1 { 295 label = "pb_user1"; 296 gpios = <&pioE 27 GPIO_ACTIVE_HIGH>; 297 linux,code = <0x100>; 298 wakeup-source; 299 }; 300 }; 301}; 302