Linux Audio

Check our new training course

Loading...
/*
 * Copyright (c) 2023 Martin Kiepfer <mrmarteng@teleschirm.org>
 *
 * SPDX-License-Identifier: Apache-2.0
 */
/dts-v1/;

#include <espressif/esp32s3/esp32s3_fn8.dtsi>
#include "m5stack_stamps3-pinctrl.dtsi"
#include "m5stack_stamps3_connectors.dtsi"
#include <zephyr/dt-bindings/pwm/pwm.h>
#include <dt-bindings/led/led.h>
#include <dt-bindings/led/worldsemi_ws2812c.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>

/ {
	model = "M5Stack StampS3";
	compatible = "m5stack,stamps3";

	chosen {
		zephyr,sram = &sram0;
		zephyr,console = &usb_serial;
		zephyr,shell-uart = &usb_serial;
		zephyr,flash = &flash0;
		zephyr,code-partition = &slot0_partition;
	};

	aliases {
		sw0 = &user_button_0;
		watchdog0 = &wdt0;
		//pwm-0 = &ledc0;
		i2c-0 = &i2c0;
		led-strip = &status_rgb_led;
	};

	gpio_keys {
		compatible = "gpio-keys";

		/* This is the button that's underneath the LCD display  */
		user_button_0: button_0 {
			label = "User button 0";
			gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
			zephyr,code = <INPUT_KEY_0>;
		};
	};
};

&cpu0 {
	clock-frequency = <ESP32_CLK_CPU_240M>;
};

&cpu1 {
	clock-frequency = <ESP32_CLK_CPU_240M>;
};

&usb_serial {
	status = "okay";
};

&uart0 {
	status = "okay";
	current-speed = <115200>;
	pinctrl-0 = <&uart0_default>;
	pinctrl-names = "default";
};

&i2c0 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c0_default>;
	pinctrl-names = "default";
};

&i2c1 {
	status = "okay";
	clock-frequency = <I2C_BITRATE_STANDARD>;
	pinctrl-0 = <&i2c1_default>;
	pinctrl-names = "default";
};

&trng0 {
	status = "okay";
};

&mcpwm0 {
	status = "okay";
	pinctrl-0 = <&mcpwm0_default>;
	pinctrl-names = "default";
	prescale = <255>;
	prescale-timer0 = <100>;
	prescale-timer1 = <100>;
};

&ledc0 {
	pinctrl-0 = <&ledc0_default>;
	pinctrl-names = "default";
	status = "disabled";
	#address-cells = <1>;
	#size-cells = <0>;
	channel0@0 {
		reg = <0x0>;
		timer = <0>;
	};
	channel0@1 {
		reg = <0x1>;
		timer = <0>;
	};
};


&spi2 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	pinctrl-0 = <&spim2_default>;
	pinctrl-names = "default";
};

&spi3 {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";
	line-idle-low;
	pinctrl-0 = <&spim3_default>;
	pinctrl-names = "default";

	status_rgb_led: ws2812@0 {
		compatible = "worldsemi,ws2812-spi";
		reg = <0x0>;
		spi-max-frequency = <WS2812C_SPI_FREQ>;

		chain-length = <1>;
		color-mapping =	<LED_COLOR_ID_GREEN>,
			<LED_COLOR_ID_RED>,
			<LED_COLOR_ID_BLUE>;
		spi-one-frame = <WS2812C_ONE_FRAME>;
		spi-zero-frame = <WS2812C_ZERO_FRAME>;
		reset-delay = <250>;
	};
};

&gpio0 {
	status = "okay";
};

&gpio1 {
	status = "okay";
};

&wdt0 {
	status = "okay";
};

&timer0 {
	status = "okay";
};

&timer1 {
	status = "okay";
};

&flash0 {
	status = "okay";
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		boot_partition: partition@0 {
			label = "mcuboot";
			reg = <0x00000000 0x0000F000>;
			read-only;
		};

		slot0_partition: partition@10000 {
			label = "image-0";
			reg = <0x00010000 0x00100000>;
		};

		slot1_partition: partition@110000 {
			label = "image-1";
			reg = <0x00110000 0x00100000>;
		};

		scratch_partition: partition@210000 {
			label = "image-scratch";
			reg = <0x00210000 0x00040000>;
		};

		storage_partition: partition@250000 {
			label = "storage";
			reg = <0x00250000 0x00006000>;
		};
	};
};