Tactility/Devices/cl32-v04/cl32-v04.dts
2026-10-12 20:29:29 +02:00

146 lines
3.6 KiB
Plaintext

/dts-v1/;
#include <tactility/bindings/root.h>
#include <tactility/bindings/esp32_ble.h>
#include <tactility/bindings/esp32_gpio.h>
#include <tactility/bindings/esp32_grove.h>
#include <tactility/bindings/esp32_i2c_master.h>
#include <tactility/bindings/esp32_spi.h>
#include <tactility/bindings/esp32_usbdevice.h>
#include <tactility/bindings/esp32_sdspi.h>
#include <tactility/bindings/esp32_wifi.h>
#include <bindings/bm8563.h>
#include <bindings/cl32_v4_light.h>
#include <bindings/cl32_v4_keyboard.h>
#include <bindings/cl32_v4_power.h>
#include <bindings/st7305.h>
#include <bindings/sx1262.h>
/ {
compatible = "root";
model = "CL-32";
gpio0 {
compatible = "espressif,esp32-gpio";
gpio-count = <49>;
};
wifi0 {
compatible = "espressif,esp32-wifi";
};
usbdevice0 {
compatible = "espressif,esp32-usbdevice";
usbdevicemsc0 {
compatible = "espressif,esp32-usbdevice-msc";
};
};
ble0 {
compatible = "espressif,esp32-ble";
};
// Top Stemma/Qwiic port 1 shares this bus with the RTC (SDA: pin 1 <-> SCL: pin 2). External
// I2C devices on that port are reachable via i2c0.
i2c0 {
compatible = "espressif,esp32-i2c-master";
port = <I2C_NUM_0>;
clock-frequency = <100000>;
pin-sda = <&gpio0 1 GPIO_FLAG_PULL_UP>;
pin-scl = <&gpio0 2 GPIO_FLAG_PULL_UP>;
rtc: bm8563 {
compatible = "belling,bm8563";
reg = <0x51>;
};
// The core chip provides both the keyboard and the power functions
keyboard {
compatible = "cl32-v4-keyboard";
reg = <0x08>;
};
power {
compatible = "cl32-v4-power";
reg = <0x08>;
};
back_light {
compatible = "cl32-v4-light";
reg = <0x08>;
brightness-register = <0x0F>;
timeout-register = <0x10>;
};
front_light {
compatible = "cl32-v4-light";
status = "disabled"; // Will be in future hardware
reg = <0x08>;
brightness-register = <0x11>;
timeout-register = <0x12>;
};
};
port_b: grove1 {
compatible = "espressif,esp32-grove";
defaultMode = <GROVE_MODE_I2C>;
pinSdaTx = <&gpio0 47 GPIO_FLAG_NONE>;
pinSclRx = <&gpio0 48 GPIO_FLAG_NONE>;
uartPort = <UART_NUM_1>;
i2cPort = <I2C_NUM_1>;
i2cClockFrequency = <100000>;
};
spi1 {
compatible = "espressif,esp32-spi";
host = <SPI2_HOST>;
cs-gpios = <&gpio0 7 GPIO_FLAG_NONE>,
<&gpio0 6 GPIO_FLAG_NONE>;
pin-mosi = <&gpio0 10 GPIO_FLAG_NONE>;
pin-miso = <&gpio0 11 GPIO_FLAG_NONE>;
pin-sclk = <&gpio0 9 GPIO_FLAG_NONE>;
max-transfer-size = <4096>;
sdcard@0 {
compatible = "espressif,esp32-sdspi";
frequency-khz = <20000>;
};
display@1 {
compatible = "sitronix,st7305";
pin-dc = <&gpio0 13 GPIO_FLAG_NONE>;
pin-reset = <&gpio0 12 GPIO_FLAG_NONE>;
pixel-clock-hz = <80000000>;
mirror-x;
mirror-y;
backlight = <&back_light>;
};
};
// Optional Mesh Card with a Seeed Wio-SX1262 module, detected at runtime.
// Schematic: https://github.com/CL-32/CL-32/tree/main/Add-on/CL-32-Mesh
spi2 {
compatible = "espressif,esp32-spi";
host = <SPI3_HOST>;
cs-gpios = <&gpio0 38 GPIO_FLAG_NONE>;
pin-mosi = <&gpio0 17 GPIO_FLAG_NONE>;
pin-miso = <&gpio0 16 GPIO_FLAG_NONE>;
pin-sclk = <&gpio0 18 GPIO_FLAG_NONE>;
// The module is powered by the 3.3 V rail. DIO3 powers the TCXO (1.7 V to 3.3 V, at least 200 mV
// below VCC). DIO2 enables the TX path of the RF switch and RF_SW (GPIO 15) the RX path.
radio@0 {
compatible = "semtech,sx1262";
reg = <0>;
pin-reset = <&gpio0 21 GPIO_FLAG_NONE>;
pin-dio1 = <&gpio0 39 GPIO_FLAG_NONE>;
pin-busy = <&gpio0 40 GPIO_FLAG_NONE>;
pin-rx-enable = <&gpio0 15 GPIO_FLAG_NONE>;
tcxo-millivolts = <1800>;
dio2-as-rf-switch;
};
};
};