| ================================== |
| TWserial device subsystem analysis |
| ================================== |
| |
| Tomas Hlavacek<tmshlvck@gmail.com> |
| 2012-03-21 |
| |
| I) Overview |
| ----------- |
| |
| U-Boot currently implements one common API for TWSerial devices. The interface |
| is defined in include/tws.h and comprises of functions: |
| |
| int tws_read(uchar *buffer, int len); |
| int tws_write(uchar *buffer, int len); |
| |
| The functions are implemented by a proper device driver in drivers/twserial |
| directory and the driver to be compiled in is selected in a Makefile. There is |
| only one driver present now. |
| |
| The driver depends on ad-hoc code in board specific data, namely functions: |
| |
| void tws_ce(unsigned bit); |
| void tws_wr(unsigned bit); |
| void tws_clk(unsigned bit); |
| void tws_data(unsigned bit); |
| unsigned tws_data_read(void); |
| void tws_data_config_output(unsigned output); |
| |
| implemented in include/configs/inka4x0.h . |
| |
| II) Approach |
| ------------ |
| |
| U-Boot TWserial drivers exports two simple functions and therefore the conversion |
| of the driver and creating a core for it is not needed. It should be consolidated |
| with include/configs/inka4x0.h and taken to the misc/ dir. |
| |
| |
| III) Analysis of in-tree drivers |
| -------------------------------- |
| |
| 1) drivers/twserial/soft_tws.c |
| ------------------------------ |
| The driver is the only TWserial driver. The ad-hoc part in |
| include/configs/inka4x0.h and the core soft_tws driver should be consolidated |
| to one compact driver and moved to misc/ . |