aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/driver-api
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2016-08-20 15:24:56 -0400
committerJonathan Corbet <corbet@lwn.net>2016-09-06 10:48:07 -0400
commit70fc1f547a91c137913a23a0f7a4a89c33930c6a (patch)
tree3bd2d3cd3af7ba92d129dc6648f698ce5314f7d0 /Documentation/driver-api
parentdcec3c8c9aea9e779c59f420465381c0f3322913 (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.rst82
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.
102High Speed Synchronous Serial Interface (HSI) 102High Speed Synchronous Serial Interface (HSI)
103============================================= 103=============================================
104 104
105High Speed Synchronous Serial Interface (HSI) is a serial interface 1051. Introduction
106mainly used for connecting application engines (APE) with cellular modem 106---------------
107engines (CMT) in cellular handsets. HSI provides multiplexing for up to 107
10816 logical channels, low-latency and full duplex communication. 108High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol,
109that is optimized for die-level interconnect between an Application Processor
110and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and
111implemented by multiple vendors since then.
112
113The HSI interface supports full duplex communication over multiple channels
114(typically 8) and is capable of reaching speeds up to 200 Mbit/s.
115
116The serial protocol uses two signals, DATA and FLAG as combined data and clock
117signals and an additional READY signal for flow control. An additional WAKE
118signal can be used to wakeup the chips from standby modes. The signals are
119commonly prefixed by AC for signals going from the application die to the
120cellular 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
1412. HSI Subsystem in Linux
142-------------------------
143
144In the Linux kernel the hsi subsystem is supposed to be used for HSI devices.
145The hsi subsystem contains drivers for hsi controllers including support for
146multi-port controllers and provides a generic API for using the HSI ports.
147
148It also contains HSI client drivers, which make use of the generic API to
149implement a protocol used on the HSI interface. These client drivers can
150use an arbitrary number of channels.
151
1523. hsi-char Device
153------------------
154
155Each port automatically registers a generic client driver called hsi_char,
156which provides a charecter device for userspace representing the HSI port.
157It can be used to communicate via HSI from userspace. Userspace may
158configure the hsi_char device using the following ioctl commands:
159
160HSC_RESET
161 flush the HSI port
162
163HSC_SET_PM
164 enable or disable the client.
165
166HSC_SEND_BREAK
167 send break
168
169HSC_SET_RX
170 set RX configuration
171
172HSC_GET_RX
173 get RX configuration
174
175HSC_SET_TX
176 set TX configuration
177
178HSC_GET_TX
179 get TX configuration
180
181The 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: