Files
Ken Van Hoeylandt d896657bf9 Device migrations, drivers and fixes (#571)
Device migrations:

- cyd-4848S040c
- guition-jc1060p470ciwy
- guition-jc2432w328c
- guition-jc3248w535c (known issue with display and touch, Shadowtrance will look into it)
- guition-jc8048w550c
- heltec-wifi-lora-32-v3
- lilygo-tdeck-max (excluding graphics)
- lilygo-tdisplay
- lilygo-tdisplay-s3
- lilygo-tdongle-s3
- lilygo-tlora-pager

Driver migrations:

- Implemented haptic driver interface in kernel
- AXS15231b
- BQ25896
- BQ27220
- CST328
- CST6xx
- DRV2605
- JD9165
- Custom LilyGO driver for T-Lora Pager
- SSD1306
- ST7701
- ST7735
- SY6970
- TCA8418

Fixes/improvements:

- Boot app: support for multiple power devices, improved UI
- lvgl_devices and related code: fixes for mapping
- Support for arrays in dts parser
2026-07-18 15:01:42 +02:00

75 lines
2.7 KiB
YAML

description: >
Texas Instruments TCA8418 I2C keypad matrix scanner. Exposed as a generic KEYBOARD_TYPE
device: the driver only scans the matrix and reports raw key events, while the character
layout comes entirely from the keymap-lc/keymap-uc/keymap-sy devicetree properties, so the
same driver works for any board's physical key layout.
include: ["i2c-device.yaml"]
compatible: "ti,tca8418"
bus: i2c
properties:
rows:
type: int
required: true
description: Number of keypad matrix rows wired (max 8)
columns:
type: int
required: true
description: Number of keypad matrix columns wired (max 10)
reverse-columns:
type: boolean
default: false
description: >
Some boards wire columns in reverse of their silkscreen/keymap order; when true, the raw
hardware column is mirrored (columns-1-col) before indexing into the keymap arrays and
before comparing against shift-row/shift-col/sym-row/sym-col.
keymap-lc:
type: array
element-type: uint8_t
required: true
description: >
Base (lowercase) layer keymap, rows*columns bytes in row-major order (already in
silkscreen/keymap column order - see reverse-columns). 0 = no key at this position (e.g.
a blank matrix position, or a position handled as a modifier via shift-row/shift-col/
sym-row/sym-col instead). Non-zero bytes are sent as-is via KeyboardKeyData::key (ASCII
or an LVGL LV_KEY_* code).
keymap-uc:
type: array
element-type: uint8_t
description: >
Uppercase/shift layer keymap, same shape as keymap-lc. Omit if this keyboard has no
separate uppercase layer (shift-row/shift-col should then also be left unset).
keymap-sy:
type: array
element-type: uint8_t
description: >
Symbol layer keymap, same shape as keymap-lc. Omit if this keyboard has no symbol layer
(sym-row/sym-col should then also be left unset).
shift-row:
type: int
default: 255
description: Matrix row (keymap column order) of the shift/uppercase modifier key, 255 if none
shift-col:
type: int
default: 255
description: Matrix column (keymap column order) of the shift/uppercase modifier key, 255 if none
sym-row:
type: int
default: 255
description: Matrix row (keymap column order) of the symbol-layer modifier key, 255 if none
sym-col:
type: int
default: 255
description: Matrix column (keymap column order) of the symbol-layer modifier key, 255 if none
pin-reset:
type: phandles
default: GPIO_PIN_SPEC_NONE
description: Optional reset GPIO pin, pulsed once at start (20 ms assert, 60 ms settle)
reset-active-high:
type: boolean
default: false
description: Whether the reset pin is active high