| The U-Boot Driver Model Project |
| =============================== |
| Keyboard input analysis |
| ======================= |
| Marek Vasut <marek.vasut@gmail.com> |
| 2012-02-20 |
| |
| I) Overview |
| ----------- |
| |
| The keyboard drivers are most often registered with STDIO subsystem. There are |
| components of the keyboard drivers though, which operate in severe ad-hoc |
| manner, often being related to interrupt-driven keypress reception. This |
| components will require the most sanitization of all parts of keyboard input |
| subsystem. |
| |
| Otherwise, the keyboard is no different from other standard input but with the |
| necessity to decode scancodes. These are decoded using tables provided by |
| keyboard drivers. These tables are often driver specific. |
| |
| II) Approach |
| ------------ |
| |
| The most problematic part is the interrupt driven keypress reception. For this, |
| the buffers that are currently shared throughout the whole U-Boot would need to |
| be converted into driver's private data. |
| |
| III) Analysis of in-tree drivers |
| -------------------------------- |
| |
| board/mpl/common/kbd.c |
| ---------------------- |
| This driver is a classic STDIO driver, no problem with conversion is expected. |
| Only necessary change will be to move this driver to a proper location. |
| |
| board/rbc823/kbd.c |
| ------------------ |
| This driver is a classic STDIO driver, no problem with conversion is expected. |
| Only necessary change will be to move this driver to a proper location. |
| |
| drivers/input/keyboard.c |
| ------------------------ |
| This driver is special in many ways. Firstly because this is a universal stub |
| driver for converting scancodes from i8042 and the likes. Secondly because the |
| buffer is filled by various other ad-hoc implementations of keyboard input by |
| using this buffer as an extern. This will need to be fixed by allowing drivers |
| to pass certain routines to this driver via platform data. |