diff options
author | Sebastian Reichel <sre@kernel.org> | 2014-02-28 19:07:54 -0500 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2014-05-04 03:49:46 -0400 |
commit | 3a8ab8af08cad8d3cf1ceff7e5a5da365ac6b63e (patch) | |
tree | 44d4c826224c0b0107849485187e9a845a931c84 | |
parent | d1db0eea852497762cab43b905b879dfcd3b8987 (diff) |
Documentation: HSI: Add some general description for the HSI subsystem
Add a document, which gives a rough introduction about what HSI
is and how its handled by the Linux kernel.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
-rw-r--r-- | Documentation/hsi.txt | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Documentation/hsi.txt b/Documentation/hsi.txt new file mode 100644 index 000000000000..6ac6cd51852a --- /dev/null +++ b/Documentation/hsi.txt | |||
@@ -0,0 +1,75 @@ | |||
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 | ||