You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.9 KiB
75 lines
2.9 KiB
HSI - High-speed Synchronous Serial Interface |
|
|
|
1. Introduction |
|
~~~~~~~~~~~~~~~ |
|
|
|
High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol, |
|
that is optimized for die-level interconnect between an Application Processor |
|
and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and |
|
implemented by multiple vendors since then. |
|
|
|
The HSI interface supports full duplex communication over multiple channels |
|
(typically 8) and is capable of reaching speeds up to 200 Mbit/s. |
|
|
|
The serial protocol uses two signals, DATA and FLAG as combined data and clock |
|
signals and an additional READY signal for flow control. An additional WAKE |
|
signal can be used to wakeup the chips from standby modes. The signals are |
|
commonly prefixed by AC for signals going from the application die to the |
|
cellular die and CA for signals going the other way around. |
|
|
|
+------------+ +---------------+ |
|
| Cellular | | Application | |
|
| Die | | Die | |
|
| | - - - - - - CAWAKE - - - - - - >| | |
|
| T|------------ CADATA ------------>|R | |
|
| X|------------ CAFLAG ------------>|X | |
|
| |<----------- ACREADY ------------| | |
|
| | | | |
|
| | | | |
|
| |< - - - - - ACWAKE - - - - - - -| | |
|
| R|<----------- ACDATA -------------|T | |
|
| X|<----------- ACFLAG -------------|X | |
|
| |------------ CAREADY ----------->| | |
|
| | | | |
|
| | | | |
|
+------------+ +---------------+ |
|
|
|
2. HSI Subsystem in Linux |
|
~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
|
|
In the Linux kernel the hsi subsystem is supposed to be used for HSI devices. |
|
The hsi subsystem contains drivers for hsi controllers including support for |
|
multi-port controllers and provides a generic API for using the HSI ports. |
|
|
|
It also contains HSI client drivers, which make use of the generic API to |
|
implement a protocol used on the HSI interface. These client drivers can |
|
use an arbitrary number of channels. |
|
|
|
3. hsi-char Device |
|
~~~~~~~~~~~~~~~~~~ |
|
|
|
Each port automatically registers a generic client driver called hsi_char, |
|
which provides a charecter device for userspace representing the HSI port. |
|
It can be used to communicate via HSI from userspace. Userspace may |
|
configure the hsi_char device using the following ioctl commands: |
|
|
|
* HSC_RESET: |
|
- flush the HSI port |
|
|
|
* HSC_SET_PM |
|
- enable or disable the client. |
|
|
|
* HSC_SEND_BREAK |
|
- send break |
|
|
|
* HSC_SET_RX |
|
- set RX configuration |
|
|
|
* HSC_GET_RX |
|
- get RX configuration |
|
|
|
* HSC_SET_TX |
|
- set TX configuration |
|
|
|
* HSC_GET_TX |
|
- get TX configuration
|
|
|