User-space driver pinephone keyboard
Find a file
Ondrej Jirman 2fbc2e057e firmware: Implement scanning block
This allows to disable the keyboard. The firmware will never scan
for keys pressed in this mode, and it will powerdown the MCU most of the
time.
2021-08-02 10:12:48 +02:00
docs Initial commit 2021-06-14 00:10:49 +02:00
firmware firmware: Implement scanning block 2021-08-02 10:12:48 +02:00
keymaps Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
.gitignore Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
common.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
COPYING Initial commit 2021-06-14 00:10:49 +02:00
HACKING Add HACKING file 2021-06-16 14:32:28 +02:00
i2c-charger-ctl.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-debugger.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-flasher.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-inputd.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
i2c-selftest.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
Makefile Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
README Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
README.flashing Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
README.i2c-intf Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
TODO Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
usb-debugger.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
usb-flasher.c Increase the default flashing area size to 0x2000 2021-06-28 15:36:58 +02:00

FOSS firmware for pinephone keyboard
====================================

Features:

- Dual firmware architecture: stock firmware + optional user firmware.
- Stock firmware implements the full functionality of the keyboard.
  - Stock firmware is layout independent, it reports the raw status
    of the whole keyboard matrix.
  - Key maps and combinations can be arbitrarily changed in the keyboard
    driver without re-flashing the firmware.
  - Stock firmware should be sufficient for most users who will not want
    to do HW modifications to their keyboard to add more peripherals to
    the keyboard MCU.
  - Power efficient implementation using power-down feature of the MCU
    to save power as much as possible. (currently: 9 mW when idle, 20mW
    in active scanning mode - with at least one key pressed)
- Stock firmware is flashed in factory and allows flashing user firmware
  from the pinephone itself over I2C interface.
- User firmware can be used either for updates or for customizations
  (SW support for HW modifications of the keyboard)
- USB stack and tools for stock firmware flashing using ELAN's original
  bootloader to ease development of the stock firmware.
- Self-testing features to quickly test for issues with the keyboard matrix.
- Fully based on FOSS software, with no dependencies. You only need
  sdcc 4.1+ to build the firmware.

See demo video https://megous.com/dl/tmp/kb.mp4 and some technical overview https://xnux.eu/log/

You can support the project via donations at https://xnux.eu/contribute.html#toc-donations

See also Samuel's kernel driver:

  https://github.com/smaeul/linux/commits/wip/pp-keyboard

Enjoy!

	~megi