Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/boot/dts/microchip/at91-sam9x75_curiosity.dts
29271 views
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * at91-sam9x75_curiosity.dts - Device Tree file for Microchip SAM9X75 Curiosity board
 *
 * Copyright (C) 2023 Microchip Technology Inc. and its subsidiaries
 *
 * Author: Varshini Rajendran <[email protected]>
 */
/dts-v1/;
#include "sam9x7.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Microchip SAM9X75 Curiosity";
	compatible = "microchip,sam9x75-curiosity", "microchip,sam9x7", "atmel,at91sam9";

	aliases {
		i2c0 = &i2c6;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_key_gpio_default>;

		button-user {
			label = "USER";
			gpios = <&pioC 9 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_0>;
			wakeup-source;
		};
	};

	led-controller {
		compatible = "gpio-leds";

		led_red: led-red {
			label = "red";
			gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
			pinctrl-0 = <&pinctrl_red_led_gpio_default>;
		};

		led_green: led-green {
			label = "green";
			gpios = <&pioC 21 GPIO_ACTIVE_HIGH>;
			pinctrl-0 = <&pinctrl_green_led_gpio_default>;
		};

		led_blue: led-blue {
			label = "blue";
			gpios = <&pioC 20 GPIO_ACTIVE_HIGH>;
			pinctrl-0 = <&pinctrl_blue_led_gpio_default>;
			linux,default-trigger = "heartbeat";
		};
	};

	memory@20000000 {
		reg = <0x20000000 0x10000000>;
		device_type = "memory";
	};
};

&classd {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_classd_default>;
	atmel,pwm-type = "diff";
	atmel,non-overlap-time = <10>;
	status = "okay";
};

&dbgu {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_dbgu_default>;
	status = "okay";
};

&dma0 {
	status = "okay";
};

&flx6 {
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
	status = "okay";
};

&i2c6 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flx6_default>;
	i2c-analog-filter;
	i2c-digital-filter;
	i2c-digital-filter-width-ns = <35>;
	status = "okay";

	pmic@5b {
		compatible = "microchip,mcp16502";
		reg = <0x5b>;

		regulators {
			vdd_3v3: VDD_IO {
				regulator-name = "VDD_IO";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-mode = <4>;
				};
			};

			vddioddr: VDD_DDR {
				regulator-name = "VDD_DDR";
				regulator-min-microvolt = <1350000>;
				regulator-max-microvolt = <1350000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};
			};

			vddcore: VDD_CORE {
				regulator-name = "VDD_CORE";
				regulator-min-microvolt = <1150000>;
				regulator-max-microvolt = <1150000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-mode = <4>;
				};
			};

			dcdc4: VDD_OTHER {
				regulator-name = "VDD_OTHER";
				regulator-min-microvolt = <1150000>;
				regulator-max-microvolt = <1150000>;
				regulator-initial-mode = <2>;
				regulator-allowed-modes = <2>, <4>;
				regulator-ramp-delay = <3125>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
					regulator-mode = <4>;
				};

				regulator-state-mem {
					regulator-mode = <4>;
				};
			};

			vldo1: LDO1 {
				regulator-name = "LDO1";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;

				regulator-state-standby {
					regulator-on-in-suspend;
				};
			};

			vldo2: LDO2 {
				regulator-name = "LDO2";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;

				regulator-state-standby {
					regulator-on-in-suspend;
				};
			};
		};
	};
};

&flx7 {
	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
	status = "okay";
};

&i2c7 {
	dmas = <0>, <0>;
	i2c-analog-filter;
	i2c-digital-filter;
	i2c-digital-filter-width-ns = <35>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flx7_default>;
	status = "okay";

	power-monitor@10 {
		compatible = "microchip,pac1934";
		reg = <0x10>;
		#address-cells = <1>;
		#size-cells = <0>;

		channel@1 {
			reg = <0x1>;
			shunt-resistor-micro-ohms = <10000>;
			label = "VDD3V3";
		};

		channel@2 {
			reg = <0x2>;
			shunt-resistor-micro-ohms = <10000>;
			label = "DCDC4";
		};

		channel@3 {
			reg = <0x3>;
			shunt-resistor-micro-ohms = <10000>;
			label = "VDDCORE";
		};

		channel@4 {
			reg = <0x4>;
			shunt-resistor-micro-ohms = <10000>;
			label = "VDDIODDR";
		};
	};
};

&i2s {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2s_default>;
	#sound-dai-cells = <0>;
	status = "okay";
};

&main_xtal {
	clock-frequency = <24000000>;
};

&pinctrl {
	classd {
		pinctrl_classd_default: classd-default {
			atmel,pins =
				<AT91_PIOA 18 AT91_PERIPH_C AT91_PINCTRL_PULL_UP>,
				<AT91_PIOA 19 AT91_PERIPH_C AT91_PINCTRL_PULL_DOWN>;
		};
	};

	dbgu {
		pinctrl_dbgu_default: dbgu-default {
			atmel,pins = <AT91_PIOA 26 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
				     <AT91_PIOA 27 AT91_PERIPH_A AT91_PINCTRL_NONE>;
		};
	};

	flexcom {
		pinctrl_flx6_default: flx6-default {
			atmel,pins =
				<AT91_PIOA 24 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
				<AT91_PIOA 25 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
		};

		pinctrl_flx7_default: flx7-default {
			atmel,pins =
				<AT91_PIOC 0 AT91_PERIPH_C AT91_PINCTRL_PULL_UP>,
				<AT91_PIOC 1 AT91_PERIPH_C AT91_PINCTRL_PULL_UP>;
		};
	};

	gpio-keys {
		pinctrl_key_gpio_default: key-gpio-default {
			atmel,pins = <AT91_PIOC 9 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};
	};

	i2s {
		pinctrl_i2s_default: i2s-default {
			atmel,pins =
				<AT91_PIOB 26 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SCK */
				<AT91_PIOB 15 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SWS */
				<AT91_PIOB 16 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SDIN */
				<AT91_PIOB 17 AT91_PERIPH_D AT91_PINCTRL_NONE>,		/* I2SDOUT */
				<AT91_PIOB 25 AT91_PERIPH_D AT91_PINCTRL_NONE>;		/* I2SMCK */
		};
	};

	led-controller {
		pinctrl_red_led_gpio_default: red-led-gpio-default {
			atmel,pins = <AT91_PIOC 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};
		pinctrl_green_led_gpio_default: green-led-gpio-default {
			atmel,pins = <AT91_PIOC 21 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};
		pinctrl_blue_led_gpio_default: blue-led-gpio-default {
			atmel,pins = <AT91_PIOC 20 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
		};
	};

	sdmmc0 {
		pinctrl_sdmmc0_default: sdmmc0-default {
			atmel,pins =
				<AT91_PIOA 2 AT91_PERIPH_A (AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,				/* PA2 CK  periph A with pullup */
				<AT91_PIOA 1 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA1 CMD periph A with pullup */
				<AT91_PIOA 0 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA0 DAT0 periph A */
				<AT91_PIOA 3 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA3 DAT1 periph A with pullup */
				<AT91_PIOA 4 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>,	/* PA4 DAT2 periph A with pullup */
				<AT91_PIOA 5 AT91_PERIPH_A (AT91_PINCTRL_PULL_UP | AT91_PINCTRL_DRIVE_STRENGTH_HI | AT91_PINCTRL_SLEWRATE_ENA)>;	/* PA5 DAT3 periph A with pullup */
		};
	};
}; /* pinctrl */

&poweroff {
	debounce-delay-us = <976>;
	status = "okay";

	input@0 {
		reg = <0>;
	};
};

&rtt {
	atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
};

&sdmmc0 {
	bus-width = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdmmc0_default>;
	cd-gpios = <&pioA 23 GPIO_ACTIVE_LOW>;
	disable-wp;
	status = "okay";
};

&slow_xtal {
	clock-frequency = <32768>;
};

&tcb {
	timer0: timer@0 {
		compatible = "atmel,tcb-timer";
		reg = <0>;
	};

	timer1: timer@1 {
		compatible = "atmel,tcb-timer";
		reg = <1>;
	};
};

&trng {
	status = "okay";
};

&watchdog {
	status = "okay";
};