Based on kernel version 4.8. Page generated on 2016-10-06 23:16 EST.
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