diff options
author | Jonathan Corbet <corbet@lwn.net> | 2016-08-20 15:24:56 -0400 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2016-09-06 10:48:07 -0400 |
commit | 70fc1f547a91c137913a23a0f7a4a89c33930c6a (patch) | |
tree | 3bd2d3cd3af7ba92d129dc6648f698ce5314f7d0 /Documentation/driver-api | |
parent | dcec3c8c9aea9e779c59f420465381c0f3322913 (diff) |
docs: Pull the HSI documentation together
The HSI subsystem documentation was split across hsi.txt and the
device-drivers docbook. Now that the latter has been converted to Sphinx,
pull in the HSI document so that it's all in one place.
Acked-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/driver-api')
-rw-r--r-- | Documentation/driver-api/serial-interfaces.rst | 82 |
1 files changed, 78 insertions, 4 deletions
diff --git a/Documentation/driver-api/serial-interfaces.rst b/Documentation/driver-api/serial-interfaces.rst index d0d65e58c14b..07c58971a322 100644 --- a/Documentation/driver-api/serial-interfaces.rst +++ b/Documentation/driver-api/serial-interfaces.rst | |||
@@ -102,10 +102,84 @@ i2c_adapter devices which don't support those I2C operations. | |||
102 | High Speed Synchronous Serial Interface (HSI) | 102 | High Speed Synchronous Serial Interface (HSI) |
103 | ============================================= | 103 | ============================================= |
104 | 104 | ||
105 | High Speed Synchronous Serial Interface (HSI) is a serial interface | 105 | 1. Introduction |
106 | mainly used for connecting application engines (APE) with cellular modem | 106 | --------------- |
107 | engines (CMT) in cellular handsets. HSI provides multiplexing for up to | 107 | |
108 | 16 logical channels, low-latency and full duplex communication. | 108 | High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol, |
109 | that is optimized for die-level interconnect between an Application Processor | ||
110 | and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and | ||
111 | implemented by multiple vendors since then. | ||
112 | |||
113 | The HSI interface supports full duplex communication over multiple channels | ||
114 | (typically 8) and is capable of reaching speeds up to 200 Mbit/s. | ||
115 | |||
116 | The serial protocol uses two signals, DATA and FLAG as combined data and clock | ||
117 | signals and an additional READY signal for flow control. An additional WAKE | ||
118 | signal can be used to wakeup the chips from standby modes. The signals are | ||
119 | commonly prefixed by AC for signals going from the application die to the | ||
120 | cellular die and CA for signals going the other way around. | ||
121 | |||
122 | :: | ||
123 | |||
124 | +------------+ +---------------+ | ||
125 | | Cellular | | Application | | ||
126 | | Die | | Die | | ||
127 | | | - - - - - - CAWAKE - - - - - - >| | | ||
128 | | T|------------ CADATA ------------>|R | | ||
129 | | X|------------ CAFLAG ------------>|X | | ||
130 | | |<----------- ACREADY ------------| | | ||
131 | | | | | | ||
132 | | | | | | ||
133 | | |< - - - - - ACWAKE - - - - - - -| | | ||
134 | | R|<----------- ACDATA -------------|T | | ||
135 | | X|<----------- ACFLAG -------------|X | | ||
136 | | |------------ CAREADY ----------->| | | ||
137 | | | | | | ||
138 | | | | | | ||
139 | +------------+ +---------------+ | ||
140 | |||
141 | 2. HSI Subsystem in Linux | ||
142 | ------------------------- | ||
143 | |||
144 | In the Linux kernel the hsi subsystem is supposed to be used for HSI devices. | ||
145 | The hsi subsystem contains drivers for hsi controllers including support for | ||
146 | multi-port controllers and provides a generic API for using the HSI ports. | ||
147 | |||
148 | It also contains HSI client drivers, which make use of the generic API to | ||
149 | implement a protocol used on the HSI interface. These client drivers can | ||
150 | use an arbitrary number of channels. | ||
151 | |||
152 | 3. hsi-char Device | ||
153 | ------------------ | ||
154 | |||
155 | Each port automatically registers a generic client driver called hsi_char, | ||
156 | which provides a charecter device for userspace representing the HSI port. | ||
157 | It can be used to communicate via HSI from userspace. Userspace may | ||
158 | configure the hsi_char device using the following ioctl commands: | ||
159 | |||
160 | HSC_RESET | ||
161 | flush the HSI port | ||
162 | |||
163 | HSC_SET_PM | ||
164 | enable or disable the client. | ||
165 | |||
166 | HSC_SEND_BREAK | ||
167 | send break | ||
168 | |||
169 | HSC_SET_RX | ||
170 | set RX configuration | ||
171 | |||
172 | HSC_GET_RX | ||
173 | get RX configuration | ||
174 | |||
175 | HSC_SET_TX | ||
176 | set TX configuration | ||
177 | |||
178 | HSC_GET_TX | ||
179 | get TX configuration | ||
180 | |||
181 | The kernel HSI API | ||
182 | ------------------ | ||
109 | 183 | ||
110 | .. kernel-doc:: include/linux/hsi/hsi.h | 184 | .. kernel-doc:: include/linux/hsi/hsi.h |
111 | :internal: | 185 | :internal: |