Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+75
+75
Documentation/hsi.txt
··· 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