Files
tactility/Devices/m5stack-core2/m5stack,core2.dts
T
2026-07-22 21:11:12 +02:00

134 lines
3.3 KiB
Devicetree

/dts-v1/;
#include <tactility/bindings/root.h>
#include <tactility/bindings/esp32_wifi_pinned.h>
#include <tactility/bindings/esp32_gpio.h>
#include <tactility/bindings/esp32_grove.h>
#include <tactility/bindings/esp32_i2c.h>
#include <tactility/bindings/esp32_i2s.h>
#include <tactility/bindings/esp32_sdspi.h>
#include <tactility/bindings/esp32_spi.h>
#include <tactility/bindings/esp32_uart.h>
#include <bindings/mpu6886.h>
#include <bindings/bm8563.h>
#include <bindings/axp192.h>
#include <bindings/ft5x06.h>
#include <bindings/ili9341.h>
#include <bindings/dummy_i2s_amp.h>
#include <bindings/pdm_mic.h>
// Reference: https://docs.m5stack.com/en/core/Core2
/ {
compatible = "root";
model = "M5Stack Core2";
wifi0 {
compatible = "espressif,esp32-wifi-pinned";
status = "disabled";
};
gpio0 {
compatible = "espressif,esp32-gpio";
gpio-count = <40>;
};
i2c_internal {
compatible = "espressif,esp32-i2c";
port = <I2C_NUM_0>;
clock-frequency = <400000>;
pin-sda = <&gpio0 21 GPIO_FLAG_NONE>;
pin-scl = <&gpio0 22 GPIO_FLAG_NONE>;
mpu6886 {
compatible = "invensense,mpu6886";
reg = <0x68>;
};
bm8563 {
compatible = "belling,bm8563";
reg = <0x51>;
};
axp192 {
compatible = "x-powers,axp192";
reg = <0x34>;
dcdc1-enable; // ESP32 + peripherals main 3V3 rail - must stay on
dcdc1-voltage = <3300>;
dcdc3-enable; // LCD backlight
dcdc3-voltage = <3300>;
ldo2-enable; // LCD logic + SD card
ldo2-voltage = <3300>;
// ldo3 (vibration motor) intentionally left disabled
exten-enable; // 5V boost (speaker amp etc.)
gpio1-pwm; // GPIO1 as PWM1 output, drives the notification LED
gpio1-pwm1-duty-cycle = <255>; // 255 = LED off
};
// FT6x36 driver doesn't reliably work when power cycling,
// or when the driver was powering on with its own power supply (not USB-C).
// The driver would not find the device and init would fail.
touch {
compatible = "focaltech,ft5x06";
reg = <0x38>;
x-max = <320>;
y-max = <240>;
pin-interrupt = <&gpio0 39 GPIO_FLAG_NONE>;
};
};
port_a: grove0 {
compatible = "espressif,esp32-grove";
defaultMode = <GROVE_MODE_I2C>;
pinSdaTx = <&gpio0 32 GPIO_FLAG_NONE>;
pinSclRx = <&gpio0 33 GPIO_FLAG_NONE>;
uartPort = <UART_NUM_1>;
i2cPort = <I2C_NUM_1>;
i2cClockFrequency = <400000>;
};
spi0 {
compatible = "espressif,esp32-spi";
host = <SPI2_HOST>;
cs-gpios = <&gpio0 5 GPIO_FLAG_NONE>, // Display
<&gpio0 4 GPIO_FLAG_NONE>; // SD card
pin-mosi = <&gpio0 23 GPIO_FLAG_NONE>;
pin-miso = <&gpio0 38 GPIO_FLAG_NONE>;
pin-sclk = <&gpio0 18 GPIO_FLAG_NONE>;
display@0 {
compatible = "ilitek,ili9341";
horizontal-resolution = <320>;
vertical-resolution = <240>;
invert-color;
bgr-order;
pixel-clock-hz = <40000000>;
pin-dc = <&gpio0 15 GPIO_FLAG_NONE>;
};
sdcard@1 {
compatible = "espressif,esp32-sdspi";
frequency-khz = <20000>;
};
};
i2s0 {
compatible = "espressif,esp32-i2s";
port = <I2S_NUM_0>;
pin-bclk = <&gpio0 12 GPIO_FLAG_NONE>;
pin-ws = <&gpio0 0 GPIO_FLAG_NONE>;
pin-data-out = <&gpio0 2 GPIO_FLAG_NONE>;
pin-data-in = <&gpio0 34 GPIO_FLAG_NONE>;
};
speaker0 {
compatible = "nsiway,ns4168";
i2s = <&i2s0>;
};
mic0 {
compatible = "generic,spm1423";
i2s = <&i2s0>;
channels = <1>;
};
};