POGO keyboard cover (EF-DT860): STM32 keyboard + touchpad over I2C #8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Support for the Book Cover Keyboard that attaches to the POGO pins. Blocked on hardware — nobody has the accessory yet, so none of this is testable. Filed so the recon isn't redone.
Accessory is named in the downstream DT:
stm32,model_name = "EF-DT860".Transport — plain I2C, AP-side (no SSC/hypervisor wall)
From
sm8150-sec-gts6l-input-common.dtsi:qupv3_se8_i2c— upstream mainline already has this controller asi2c8: i2c@a80000insm8150.dtsi; our board DTS doesn't enable it yet, so it's an enable + pinctrl job, not a new bus.tlmm 124(stm32,irq_gpio), pinctrlkeypad_int_activestm32_vddo-supply = <&pogo_kbd_ldo_en>(+pogo_kbd_ldo_en_active)stm32,sda_gpio = <&tlmm 88>,stm32,scl_gpio = <&tlmm 89>— Samsung bitbangs these for MCU firmware update/recovery; not needed for normal operation.Downstream driver stack (~4.3k lines,
drivers/input/keyboard/stm/stm32l0/)stm32_pogo_i2c.cstm32_pogo_keyboard.cEV_KEYinput device (MSC_SCAN+ keycode table)stm32_pogo_touchpad.cinput_mtdevice (input_mt_slot,MT_TOOL_FINGER,BTN_LEFT/BTN_TOUCH)Both child drivers use stock Linux input APIs and should port near-verbatim — same shape as the fts1ba90a touchscreen port, without the display complexity. Much of the 2115-line core (MCU firmware update, factory self-test sysfs) can be dropped for a first cut.
The real unknown: the POGO FPGA
sm8150-sec-gts6l-input-common.dtsialso haspogo_fpga@1onqupv3_se18_spi:fpga,gpio_cdone = <&tlmm 108>,fpga,gpio_crst_b = <&tlmm 58>,gpio_reset = <&tlmm 57>, bitbangmiso/mosi/spi_clk/cs= tlmm 23/24/25/26fpga,fw_name = "fpga/pogo_gts5l.fw"It is not optional:
stm32_pogo_i2c.ccallsfpga_rstn_control(),fpga_rstn_high()andfpga_fw_download()on its attach/reset paths underCONFIG_POGO_FPGA(defconfig hasCONFIG_POGO_FPGA=y,CONFIG_USE_POGO=y).Two things in our favour:
CDONE/CRESET_Bnaming is textbook Lattice iCE40, and mainline already shipsdrivers/fpga/ice40-spi.c(lattice,ice40-fpga-mgr) — bitstream loading may be native rather than a port./firmware/vendor(TODO: confirmfpga/pogo_gts5l.fwis present — quick check, not yet done).Other pieces
CONFIG_MUIC_SUPPORT_KEYBOARDDOCK=y— dock detection runs partly through the SM5705 MUIC, and we already have sm5705 extcon in the tree.POGO_NOTIFIER_EVENTID_HALL) releases all keys when the cover is closed.CONFIG_KEYBOARD_STM32_POGO=y,CONFIG_POGO_FPGA=y,CONFIG_USE_POGO=y.Plan when hardware exists
fpga/pogo_gts5l.fwis in the vendor partition; add to the no-blob link-farm.i2c8+ pinctrl in our DTS; add the stm32 node, LDO, IRQ;i2cdetectfor 0x2A with the cover attached.ice40-spifor the bitstream; fall back to porting Samsung's bitbang sequence.Estimate: 1–2 sessions if the FPGA cooperates, 3 if it needs its own bring-up.