summaryrefslogtreecommitdiff
path: root/doc/driver-model/UDM-twserial.txt
blob: 289416acde7219391324b8e267a0467ea2fa68de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
==================================
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/ .