Go to file
Ondrej Jirman 31c41b7d9e Drop I2C bit functions, to make timing easier to modify
I2C to the charger now has clean 100kHz timing. One read command now takes
400us, and one write command takes 300us to execute.
2021-09-05 02:26:55 +02:00
docs Add final PCB photos/schematics 2021-08-31 15:09:21 +02:00
firmware Drop I2C bit functions, to make timing easier to modify 2021-09-05 02:26:55 +02:00
keymaps Fix keymap generator, drop prototype keymap 2021-08-31 19:00:49 +02:00
.gitignore Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
bin2pgd.c Add bin2pgd tool 2021-08-31 14:29:21 +02:00
common.c common: Improve crc8 generation 2021-08-02 10:13:06 +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 Drop I2C bit functions, to make timing easier to modify 2021-09-05 02:26:55 +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 Make i2c flasger reset the app block flag 2021-09-05 01:53:42 +02:00
i2c-inputd.c Update inputd to make it work with the latest firmware API 2021-08-31 19:01:43 +02:00
i2c-selftest.c Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
Makefile Drop prototype keyboard build 2021-08-31 19:00:18 +02:00
README Implement flashing over I2C and user/stock firmware support 2021-06-28 15:09:47 +02:00
README.flashing README.flashing: fix few typos 2021-08-02 12:18:34 +02:00
README.i2c-intf firmware: Post-revert fixup 2021-08-05 02:27:39 +02:00
README.testing Update TODO and I2C interface description 2021-08-02 12:13:56 +02:00
TODO Update TODO 2021-08-05 03:40:40 +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 Dump option ROM when reading flash over USB 2021-08-31 14:29:50 +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