T-Deck Max & Pro support updates (#582)
- Created kernel driver for T-Deck Max & Pro display (needs work, doesn't refresh reliably on T-Deck Pro) - Created T-Deck Pro device implementation (incubating)
This commit is contained in:
committed by
GitHub
parent
429125734a
commit
29e80cfd65
@@ -3,5 +3,5 @@ file(GLOB_RECURSE SOURCE_FILES source/*.c*)
|
||||
idf_component_register(
|
||||
SRCS ${SOURCE_FILES}
|
||||
INCLUDE_DIRS "source"
|
||||
REQUIRES Tactility GDEQ031T10 driver
|
||||
REQUIRES TactilityKernel
|
||||
)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
general.vendor=LilyGO
|
||||
general.name=T-Deck Max
|
||||
# SD card support is not yet working; remove once it is functional.
|
||||
# SD card support is not yet working, display driver is untested since refactoring; remove once it is functional.
|
||||
general.incubating=true
|
||||
|
||||
apps.launcherAppId=Launcher
|
||||
@@ -18,14 +18,17 @@ hardware.bluetooth=true
|
||||
# Internal until the SD card is verified working on this board; switch to SD then.
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
dependencies.useDeprecatedHal=false
|
||||
|
||||
display.size=3.1"
|
||||
display.shape=rectangle
|
||||
display.dpi=128
|
||||
|
||||
# The GDEQ031T10 e-paper is monochrome, but its driver renders via
|
||||
# LV_COLOR_FORMAT_I1 on its own display. The global LVGL color depth must stay
|
||||
# at 16: esp_lvgl_port refuses to compile with LV_COLOR_DEPTH_1 set.
|
||||
lvgl.colorDepth=16
|
||||
lvgl.colorDepth=8
|
||||
# Monochrome theme: the default colour theme renders accent-coloured UI that
|
||||
# thresholds to invisible on a 1bpp panel (enables CONFIG_LV_USE_THEME_MONO).
|
||||
lvgl.theme=Mono
|
||||
|
||||
cdn.warningMessage=Display not reliably working. Use at your own risk.
|
||||
|
||||
sdkconfig.CONFIG_LV_THEME_DEFAULT_TRANSITION_TIME=0
|
||||
|
||||
@@ -2,6 +2,7 @@ dependencies:
|
||||
- Platforms/platform-esp32
|
||||
- Drivers/xl9555-module
|
||||
- Drivers/cst66xx-module
|
||||
- Drivers/gdeq031t10-module
|
||||
- Drivers/tca8418-module
|
||||
- Drivers/sy6970-module
|
||||
- Drivers/bq27220-module
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <tactility/bindings/pwm_backlight.h>
|
||||
#include <bindings/xl9555.h>
|
||||
#include <bindings/cst66xx.h>
|
||||
#include <bindings/gdeq031t10.h>
|
||||
#include <bindings/tca8418.h>
|
||||
#include <bindings/sy6970.h>
|
||||
#include <bindings/bq27220.h>
|
||||
@@ -143,6 +144,17 @@
|
||||
// exceeds the default ~4 KB transfer limit. Raise the bus limit to fit it.
|
||||
max-transfer-size = <65536>;
|
||||
|
||||
display@0 {
|
||||
compatible = "gooddisplay,gdeq031t10";
|
||||
pin-dc = <&gpio0 35 GPIO_FLAG_NONE>;
|
||||
pin-reset = <&gpio0 9 GPIO_FLAG_NONE>;
|
||||
pin-busy = <&gpio0 37 GPIO_FLAG_NONE>;
|
||||
clock-speed-hz = <10000000>;
|
||||
// Default to a fast (~1s) refresh for the automatic ghost-clears so the
|
||||
// full-screen flash they cause is as short as possible.
|
||||
refresh-mode = <GDEQ031T10_REFRESH_FAST>;
|
||||
};
|
||||
|
||||
sdcard@1 {
|
||||
compatible = "espressif,esp32-sdspi";
|
||||
status = "disabled";
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
#include "devices/Display.h"
|
||||
|
||||
#include <Tactility/hal/Configuration.h>
|
||||
#include <tactility/check.h>
|
||||
#include <tactility/device.h>
|
||||
#include <tactility/drivers/esp32_spi.h>
|
||||
|
||||
using namespace tt::hal;
|
||||
|
||||
static bool initBoot() {
|
||||
// The LoRa and SD chip-selects share the EPD's SPI bus but aren't wired up
|
||||
// yet. spi0's start() already drives every cs-gpio high during kernel init;
|
||||
// re-assert deselection before the EPD driver first transacts, as a cheap
|
||||
// guard against either chip latching stray EPD command bytes (same pattern
|
||||
// as the esp32_sdspi mount path).
|
||||
auto* spi0 = device_find_by_name("spi0");
|
||||
check(spi0 != nullptr);
|
||||
esp32_spi_deselect_all_cs(spi0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static DeviceVector createDevices() {
|
||||
// Touch, keyboard and battery/charging are kernel drivers (cst66xx, tca8418, sy6970,
|
||||
// bq27220 - see the .dts), started independently of this HAL layer. Only the EPD
|
||||
// display remains on the deprecated HAL.
|
||||
return DeviceVector {
|
||||
createDisplay()
|
||||
};
|
||||
}
|
||||
|
||||
extern const Configuration hardwareConfiguration = {
|
||||
.initBoot = initBoot,
|
||||
.createDevices = createDevices
|
||||
};
|
||||
@@ -1,29 +0,0 @@
|
||||
#include "Display.h"
|
||||
|
||||
#include <Gdeq031t10Display.h>
|
||||
|
||||
// Pins from Xinyuan-LilyGO/T-Deck-MAX's lib/TDeckMaxBoard/src/TDeckMaxBoard.h and docs/pinmap.md.
|
||||
constexpr auto EPD_SPI_HOST = SPI2_HOST;
|
||||
constexpr auto EPD_PIN_CS = GPIO_NUM_34;
|
||||
constexpr auto EPD_PIN_DC = GPIO_NUM_35;
|
||||
constexpr auto EPD_PIN_RST = GPIO_NUM_9;
|
||||
constexpr auto EPD_PIN_BUSY = GPIO_NUM_37;
|
||||
|
||||
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay() {
|
||||
// Touch is a kernel driver (hynitron,cst66xx - see the .dts), discovered and fed to LVGL
|
||||
// independently of this display, so no touch device is passed into the configuration here.
|
||||
auto configuration = std::make_unique<Gdeq031t10Display::Configuration>(
|
||||
EPD_SPI_HOST,
|
||||
EPD_PIN_CS,
|
||||
EPD_PIN_DC,
|
||||
EPD_PIN_RST,
|
||||
EPD_PIN_BUSY,
|
||||
nullptr,
|
||||
10'000'000,
|
||||
// Default to a fast (~1s) refresh for the automatic ghost-clears so the
|
||||
// full-screen flash they cause is as short as possible.
|
||||
Gdeq031t10Display::RefreshMode::Fast
|
||||
);
|
||||
|
||||
return std::make_shared<Gdeq031t10Display>(std::move(configuration));
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <Tactility/hal/display/DisplayDevice.h>
|
||||
|
||||
std::shared_ptr<tt::hal::display::DisplayDevice> createDisplay();
|
||||
Reference in New Issue
Block a user