Home | History | Annotate | Line # | Download | only in microchip
      1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
      2 /*
      3  * at91-sam9x60_curiosity.dts - Device Tree file for Microchip SAM9X60 Curiosity board
      4  *
      5  * Copyright (C) 2022 Microchip Technology Inc. and its subsidiaries
      6  *
      7  * Author: Durai Manickam KR <durai.manickamkr (a] microchip.com>
      8  */
      9 /dts-v1/;
     10 #include "sam9x60.dtsi"
     11 #include <dt-bindings/input/input.h>
     12 
     13 / {
     14 	model = "Microchip SAM9X60 Curiosity";
     15 	compatible = "microchip,sam9x60-curiosity", "microchip,sam9x60", "atmel,at91sam9";
     16 
     17 	aliases {
     18 		i2c0 = &i2c0;
     19 		i2c1 = &i2c6;
     20 		serial2 = &uart7;
     21 	};
     22 
     23 	chosen {
     24 		stdout-path = "serial0:115200n8";
     25 	};
     26 
     27 	memory@20000000 {
     28 		reg = <0x20000000 0x8000000>;
     29 	};
     30 
     31 	clocks {
     32 		slow_xtal {
     33 			clock-frequency = <32768>;
     34 		};
     35 
     36 		main_xtal {
     37 			clock-frequency = <24000000>;
     38 		};
     39 	};
     40 
     41 	gpio-keys {
     42 		compatible = "gpio-keys";
     43 		pinctrl-names = "default";
     44 		pinctrl-0 = <&pinctrl_key_gpio_default>;
     45 
     46 		button-user {
     47 			label = "PB_USER";
     48 			gpios = <&pioA 29 GPIO_ACTIVE_LOW>;
     49 			linux,code = <KEY_PROG1>;
     50 			wakeup-source;
     51 		};
     52 	};
     53 
     54 	leds {
     55 		compatible = "gpio-leds";
     56 		pinctrl-names = "default";
     57 		pinctrl-0 = <&pinctrl_gpio_leds>;
     58 
     59 		led-red {
     60 			label = "red";
     61 			gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
     62 		};
     63 
     64 		led-green {
     65 			label = "green";
     66 			gpios = <&pioD 19 GPIO_ACTIVE_HIGH>;
     67 		};
     68 
     69 		led-blue {
     70 			label = "blue";
     71 			gpios = <&pioD 21 GPIO_ACTIVE_HIGH>;
     72 			linux,default-trigger = "heartbeat";
     73 		};
     74 	};
     75 
     76 
     77 	vdd_1v8: regulator-0 {
     78 		compatible = "regulator-fixed";
     79 		regulator-always-on;
     80 		regulator-max-microvolt = <1800000>;
     81 		regulator-min-microvolt = <1800000>;
     82 		regulator-name = "VDD_1V8";
     83 	};
     84 
     85 	vdd_1v15: regulator-1 {
     86 		compatible = "regulator-fixed";
     87 		regulator-always-on;
     88 		regulator-max-microvolt = <1150000>;
     89 		regulator-min-microvolt = <1150000>;
     90 		regulator-name = "VDD_1V15";
     91 	};
     92 
     93 	vdd1_3v3: regulator-2 {
     94 		compatible = "regulator-fixed";
     95 		regulator-always-on;
     96 		regulator-max-microvolt = <3300000>;
     97 		regulator-min-microvolt = <3300000>;
     98 		regulator-name = "VDD1_3V3";
     99 	};
    100 };
    101 
    102 &adc {
    103 	vddana-supply = <&vdd1_3v3>;
    104 	vref-supply = <&vdd1_3v3>;
    105 	pinctrl-names = "default";
    106 	pinctrl-0 = <&pinctrl_adc_default &pinctrl_adtrg_default>;
    107 	status = "okay";
    108 };
    109 
    110 &can0 {
    111 	pinctrl-names = "default";
    112 	pinctrl-0 = <&pinctrl_can0_rx_tx>;
    113 	status = "disabled"; /* Conflict with dbgu. */
    114 };
    115 
    116 &can1 {
    117 	pinctrl-names = "default";
    118 	pinctrl-0 = <&pinctrl_can1_rx_tx>;
    119 	status = "okay";
    120 };
    121 
    122 &dbgu {
    123 	pinctrl-names = "default";
    124 	pinctrl-0 = <&pinctrl_dbgu>;
    125 	status = "okay"; /* Conflict with can0. */
    126 };
    127 
    128 &ebi {
    129 	pinctrl-names = "default";
    130 	pinctrl-0 = <&pinctrl_ebi_addr_nand &pinctrl_ebi_data_lsb>;
    131 	status = "okay";
    132 
    133 	nand_controller: nand-controller {
    134 		pinctrl-names = "default";
    135 		pinctrl-0 = <&pinctrl_nand_oe_we &pinctrl_nand_cs &pinctrl_nand_rb>;
    136 		status = "okay";
    137 
    138 		nand@3 {
    139 			reg = <0x3 0x0 0x800000>;
    140 			rb-gpios = <&pioD 5 GPIO_ACTIVE_HIGH>;
    141 			cs-gpios = <&pioD 4 GPIO_ACTIVE_HIGH>;
    142 			nand-bus-width = <8>;
    143 			nand-ecc-mode = "hw";
    144 			nand-ecc-strength = <8>;
    145 			nand-ecc-step-size = <512>;
    146 			nand-on-flash-bbt;
    147 			label = "atmel_nand";
    148 
    149 			partitions {
    150 				compatible = "fixed-partitions";
    151 				#address-cells = <1>;
    152 				#size-cells = <1>;
    153 
    154 				at91bootstrap@0 {
    155 					label = "at91bootstrap";
    156 					reg = <0x0 0x40000>;
    157 				};
    158 
    159 				uboot@40000 {
    160 					label = "u-boot";
    161 					reg = <0x40000 0xc0000>;
    162 				};
    163 
    164 				ubootenvred@100000 {
    165 					label = "U-Boot Env Redundant";
    166 					reg = <0x100000 0x40000>;
    167 				};
    168 
    169 				ubootenv@140000 {
    170 					label = "U-Boot Env";
    171 					reg = <0x140000 0x40000>;
    172 				};
    173 
    174 				dtb@180000 {
    175 					label = "device tree";
    176 					reg = <0x180000 0x80000>;
    177 				};
    178 
    179 				kernel@200000 {
    180 					label = "kernel";
    181 					reg = <0x200000 0x600000>;
    182 				};
    183 
    184 				rootfs@800000 {
    185 					label = "rootfs";
    186 					reg = <0x800000 0x1f800000>;
    187 				};
    188 			};
    189 		};
    190 	};
    191 };
    192 
    193 &flx0 {
    194 	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
    195 	status = "okay";
    196 
    197 	i2c0: i2c@600 {
    198 		dmas = <0>, <0>;
    199 		pinctrl-names = "default";
    200 		pinctrl-0 = <&pinctrl_flx0_default>;
    201 		i2c-analog-filter;
    202 		i2c-digital-filter;
    203 		i2c-digital-filter-width-ns = <35>;
    204 		status = "okay";
    205 
    206 		eeprom@53 {
    207 			compatible = "atmel,24c02";
    208 			reg = <0x53>;
    209 			pagesize = <16>;
    210 		};
    211 	};
    212 };
    213 
    214 &flx6 {
    215 	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
    216 	status = "okay";
    217 
    218 	i2c6: i2c@600 {
    219 		dmas = <0>, <0>;
    220 		pinctrl-names = "default";
    221 		pinctrl-0 = <&pinctrl_flx6_default>;
    222 		i2c-analog-filter;
    223 		i2c-digital-filter;
    224 		i2c-digital-filter-width-ns = <35>;
    225 		status = "disabled";
    226 	};
    227 };
    228 
    229 &flx7 {
    230 	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
    231 	status = "okay";
    232 
    233 	uart7: serial@200 {
    234 		pinctrl-names = "default";
    235 		pinctrl-0 = <&pinctrl_flx7_default>;
    236 		status = "okay";
    237 	};
    238 };
    239 
    240 &macb0 {
    241 	phy-mode = "rmii";
    242 	#address-cells = <1>;
    243 	#size-cells = <0>;
    244 	pinctrl-names = "default";
    245 	pinctrl-0 = <&pinctrl_macb0_rmii>;
    246 	status = "okay";
    247 
    248 	ethernet-phy@0 {
    249 		reg = <0x0>;
    250 		interrupt-parent = <&pioB>;
    251 		interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
    252 	};
    253 };
    254 
    255 &pinctrl {
    256 	adc {
    257 		pinctrl_adc_default: adc-default {
    258 			atmel,pins = <AT91_PIOB 14 AT91_PERIPH_A AT91_PINCTRL_NONE>;
    259 		};
    260 
    261 		pinctrl_adtrg_default: adtrg-default {
    262 			atmel,pins = <AT91_PIOB 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
    263 		};
    264 	};
    265 
    266 	can0 {
    267 		pinctrl_can0_rx_tx: can0-rx-tx {
    268 			atmel,pins =
    269 				<AT91_PIOA 9 AT91_PERIPH_B AT91_PINCTRL_NONE	/* CANRX0 */
    270 				 AT91_PIOA 10 AT91_PERIPH_B AT91_PINCTRL_NONE	/* CANTX0 */
    271 				 AT91_PIOC 9 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>;	/* Enable CAN Transceivers */
    272 		};
    273 	};
    274 
    275 	can1 {
    276 		pinctrl_can1_rx_tx: can1-rx-tx {
    277 			atmel,pins =
    278 				<AT91_PIOA 6 AT91_PERIPH_B AT91_PINCTRL_NONE	/* CANRX1 */
    279 				 AT91_PIOA 5 AT91_PERIPH_B AT91_PINCTRL_NONE	/* CANTX1 */
    280 				 AT91_PIOB 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>;	/* Enable CAN Transceivers */
    281 		};
    282 	};
    283 
    284 	dbgu {
    285 		pinctrl_dbgu: dbgu-0 {
    286 			atmel,pins = <AT91_PIOA 9 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
    287 				      AT91_PIOA 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;
    288 		};
    289 	};
    290 
    291 	ebi {
    292 		pinctrl_ebi_data_lsb: ebi-data-lsb {
    293 			atmel,pins =
    294 				<AT91_PIOD 6 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    295 				 AT91_PIOD 7 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    296 				 AT91_PIOD 8 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    297 				 AT91_PIOD 9 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    298 				 AT91_PIOD 10 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    299 				 AT91_PIOD 11 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    300 				 AT91_PIOD 12 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    301 				 AT91_PIOD 13 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
    302 		};
    303 
    304 		pinctrl_ebi_addr_nand: ebi-addr-nand {
    305 			atmel,pins =
    306 				<AT91_PIOD 2 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    307 				 AT91_PIOD 3 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
    308 		};
    309 	};
    310 
    311 	flexcom {
    312 		pinctrl_flx0_default: flx0-twi {
    313 			atmel,pins =
    314 				<AT91_PIOA 0 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
    315 				 AT91_PIOA 1 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
    316 		};
    317 
    318 		pinctrl_flx6_default: flx6-twi {
    319 			atmel,pins =
    320 				<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP
    321 				 AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
    322 		};
    323 
    324 		pinctrl_flx7_default: flx7-usart {
    325 			atmel,pins =
    326 				<AT91_PIOC 0 AT91_PERIPH_C AT91_PINCTRL_NONE
    327 				 AT91_PIOC 1 AT91_PERIPH_C AT91_PINCTRL_NONE>;
    328 		};
    329 	};
    330 
    331 	gpio-keys {
    332 		pinctrl_key_gpio_default: pinctrl-key-gpio {
    333 			atmel,pins = <AT91_PIOA 29 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
    334 		};
    335 	};
    336 
    337 	leds {
    338 		pinctrl_gpio_leds: gpio-leds {
    339 			atmel,pins = <AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
    340 				      AT91_PIOD 19 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
    341 				      AT91_PIOD 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
    342 		};
    343 	};
    344 
    345 	macb0 {
    346 		pinctrl_macb0_rmii: macb0-rmii-0 {
    347 			atmel,pins =
    348 				<AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB0 periph A */
    349 				 AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB1 periph A */
    350 				 AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB2 periph A */
    351 				 AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB3 periph A */
    352 				 AT91_PIOB 4 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB4 periph A */
    353 				 AT91_PIOB 5 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB5 periph A */
    354 				 AT91_PIOB 6 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB6 periph A */
    355 				 AT91_PIOB 7 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB7 periph A */
    356 				 AT91_PIOB 8 AT91_PERIPH_GPIO AT91_PINCTRL_NONE	/* PB8 IRQ GPIO */
    357 				 AT91_PIOB 9 AT91_PERIPH_A AT91_PINCTRL_NONE	/* PB9 periph A */
    358 				 AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_NONE>;	/* PB10 periph A */
    359 		};
    360 	};
    361 
    362 	nand {
    363 		pinctrl_nand_oe_we: nand-oe-we-0 {
    364 			atmel,pins =
    365 				<AT91_PIOD 0 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)
    366 				 AT91_PIOD 1 AT91_PERIPH_A (AT91_PINCTRL_NONE | AT91_PINCTRL_SLEWRATE_DIS)>;
    367 		};
    368 
    369 		pinctrl_nand_rb: nand-rb-0 {
    370 			atmel,pins =
    371 				<AT91_PIOD 5 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
    372 		};
    373 
    374 		pinctrl_nand_cs: nand-cs-0 {
    375 			atmel,pins =
    376 				<AT91_PIOD 4 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
    377 		};
    378 	};
    379 
    380 	pwm0 {
    381 		pinctrl_pwm0_0: pwm0-0 {
    382 			atmel,pins = <AT91_PIOB 12 AT91_PERIPH_B AT91_PINCTRL_NONE>;
    383 		};
    384 
    385 		pinctrl_pwm0_1: pwm0-1 {
    386 			atmel,pins = <AT91_PIOB 13 AT91_PERIPH_B AT91_PINCTRL_NONE>;
    387 		};
    388 
    389 		pinctrl_pwm0_2: pwm0-2 {
    390 			atmel,pins = <AT91_PIOD 16 AT91_PERIPH_B AT91_PINCTRL_NONE>;
    391 		};
    392 	};
    393 
    394 	sdmmc0 {
    395 		pinctrl_sdmmc0_default: sdmmc0 {
    396 			atmel,pins =
    397 				<AT91_PIOA 17 AT91_PERIPH_A (AT91_PINCTRL_DRIVE_STRENGTH_HI)				/* PA17 CK  periph A with pullup */
    398 				 AT91_PIOA 16 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA16 CMD periph A with pullup */
    399 				 AT91_PIOA 15 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA15 DAT0 periph A */
    400 				 AT91_PIOA 18 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA18 DAT1 periph A with pullup */
    401 				 AT91_PIOA 19 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA19 DAT2 periph A with pullup */
    402 				 AT91_PIOA 20 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)>;	/* PA20 DAT3 periph A with pullup */
    403 		};
    404 
    405 		pinctrl_sdmmc0_cd: sdmmc0-cd {
    406 			atmel,pins =
    407 				<AT91_PIOA 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
    408 		};
    409 	};
    410 
    411 	sdmmc1 {
    412 		pinctrl_sdmmc1_default: sdmmc1 {
    413 			atmel,pins =
    414 				<AT91_PIOA 13 AT91_PERIPH_B (AT91_PINCTRL_DRIVE_STRENGTH_HI)				/* PA13 CK periph B */
    415 				 AT91_PIOA 12 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA12 CMD periph B with pullup */
    416 				 AT91_PIOA 11 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA11 DAT0 periph B with pullup */
    417 				 AT91_PIOA 2 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA2 DAT1 periph B with pullup */
    418 				 AT91_PIOA 3 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)	/* PA3 DAT2 periph B with pullup */
    419 				 AT91_PIOA 4 AT91_PERIPH_B (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI)>;	/* PA4 DAT3 periph B with pullup */
    420 		};
    421 	};
    422 
    423 	usb0 {
    424 		pinctrl_usba_vbus: usba-vbus {
    425 			atmel,pins = <AT91_PIOA 27 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
    426 		};
    427 	};
    428 
    429 	usb1 {
    430 		pinctrl_usb_default: usb-default {
    431 			atmel,pins = <AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
    432 				      AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
    433 		};
    434 	};
    435 }; /* pinctrl */
    436 
    437 &pwm0 {
    438 	pinctrl-names = "default";
    439 	pinctrl-0 = <&pinctrl_pwm0_0 &pinctrl_pwm0_1 &pinctrl_pwm0_2>;
    440 	status = "okay";
    441 };
    442 
    443 &rtt {
    444 	atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
    445 };
    446 
    447 &sdmmc0 {
    448 	bus-width = <4>;
    449 	pinctrl-names = "default";
    450 	pinctrl-0 = <&pinctrl_sdmmc0_default &pinctrl_sdmmc0_cd>;
    451 	cd-gpios = <&pioA 25 GPIO_ACTIVE_LOW>;
    452 	disable-wp;
    453 	status = "okay";
    454 };
    455 
    456 &sdmmc1 {
    457 	bus-width = <4>;
    458 	pinctrl-names = "default";
    459 	pinctrl-0 = <&pinctrl_sdmmc1_default>;
    460 	disable-wp;
    461 	status = "okay";
    462 };
    463 
    464 &shutdown_controller {
    465 	debounce-delay-us = <976>;
    466 	status = "okay";
    467 
    468 	input@0 {
    469 		reg = <0>;
    470 	};
    471 };
    472 
    473 &tcb0 {
    474 	timer0: timer@0 {
    475 		compatible = "atmel,tcb-timer";
    476 		reg = <0>;
    477 	};
    478 
    479 	timer1: timer@1 {
    480 		compatible = "atmel,tcb-timer";
    481 		reg = <1>;
    482 	};
    483 };
    484 
    485 &usb0 {
    486 	atmel,vbus-gpio = <&pioA 27 GPIO_ACTIVE_HIGH>;
    487 	pinctrl-names = "default";
    488 	pinctrl-0 = <&pinctrl_usba_vbus>;
    489 	status = "okay";
    490 };
    491 
    492 &usb1 {
    493 	num-ports = <3>;
    494 	atmel,vbus-gpio = <0
    495 			   &pioD 18 GPIO_ACTIVE_HIGH
    496 			   &pioD 15 GPIO_ACTIVE_HIGH>;
    497 	pinctrl-names = "default";
    498 	pinctrl-0 = <&pinctrl_usb_default>;
    499 	status = "okay";
    500 };
    501 
    502 &usb2 {
    503 	status = "okay";
    504 };
    505 
    506 &watchdog {
    507 	status = "okay";
    508 };
    509