Commit | Line | Data |
---|---|---|
3a8ab8af SR |
1 | HSI - High-speed Synchronous Serial Interface |
2 | ||
3 | 1. Introduction | |
4 | ~~~~~~~~~~~~~~~ | |
5 | ||
6 | High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol, | |
7 | that is optimized for die-level interconnect between an Application Processor | |
8 | and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and | |
9 | implemented by multiple vendors since then. | |
10 | ||
11 | The HSI interface supports full duplex communication over multiple channels | |
12 | (typically 8) and is capable of reaching speeds up to 200 Mbit/s. | |
13 | ||
14 | The serial protocol uses two signals, DATA and FLAG as combined data and clock | |
15 | signals and an additional READY signal for flow control. An additional WAKE | |
16 | signal can be used to wakeup the chips from standby modes. The signals are | |
17 | commonly prefixed by AC for signals going from the application die to the | |
18 | cellular die and CA for signals going the other way around. | |
19 | ||
20 | +------------+ +---------------+ | |
21 | | Cellular | | Application | | |
22 | | Die | | Die | | |
23 | | | - - - - - - CAWAKE - - - - - - >| | | |
24 | | T|------------ CADATA ------------>|R | | |
25 | | X|------------ CAFLAG ------------>|X | | |
26 | | |<----------- ACREADY ------------| | | |
27 | | | | | | |
28 | | | | | | |
29 | | |< - - - - - ACWAKE - - - - - - -| | | |
30 | | R|<----------- ACDATA -------------|T | | |
31 | | X|<----------- ACFLAG -------------|X | | |
32 | | |------------ CAREADY ----------->| | | |
33 | | | | | | |
34 | | | | | | |
35 | +------------+ +---------------+ | |
36 | ||
37 | 2. HSI Subsystem in Linux | |
38 | ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
39 | ||
40 | In the Linux kernel the hsi subsystem is supposed to be used for HSI devices. | |
41 | The hsi subsystem contains drivers for hsi controllers including support for | |
42 | multi-port controllers and provides a generic API for using the HSI ports. | |
43 | ||
44 | It also contains HSI client drivers, which make use of the generic API to | |
45 | implement a protocol used on the HSI interface. These client drivers can | |
46 | use an arbitrary number of channels. | |
47 | ||
48 | 3. hsi-char Device | |
49 | ~~~~~~~~~~~~~~~~~~ | |
50 | ||
51 | Each port automatically registers a generic client driver called hsi_char, | |
52 | which provides a charecter device for userspace representing the HSI port. | |
53 | It can be used to communicate via HSI from userspace. Userspace may | |
54 | configure the hsi_char device using the following ioctl commands: | |
55 | ||
56 | * HSC_RESET: | |
57 | - flush the HSI port | |
58 | ||
59 | * HSC_SET_PM | |
60 | - enable or disable the client. | |
61 | ||
62 | * HSC_SEND_BREAK | |
63 | - send break | |
64 | ||
65 | * HSC_SET_RX | |
66 | - set RX configuration | |
67 | ||
68 | * HSC_GET_RX | |
69 | - get RX configuration | |
70 | ||
71 | * HSC_SET_TX | |
72 | - set TX configuration | |
73 | ||
74 | * HSC_GET_TX | |
75 | - get TX configuration |