It never made sense to keep these documents together; move each into its own file. Drop the section numbering on hsi.txt on its way to its own file. Suggested-by: Sebastian Reichel <sre@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
		
			
				
	
	
		
			89 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| High Speed Synchronous Serial Interface (HSI)
 | |
| =============================================
 | |
| 
 | |
| 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 ----------->|               |
 | |
|     |            |                                 |               |
 | |
|     |            |                                 |               |
 | |
|     +------------+                                 +---------------+
 | |
| 
 | |
| 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.
 | |
| 
 | |
| 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
 | |
| 
 | |
| The kernel HSI API
 | |
| ------------------
 | |
| 
 | |
| .. kernel-doc:: include/linux/hsi/hsi.h
 | |
|    :internal:
 | |
| 
 | |
| .. kernel-doc:: drivers/hsi/hsi_core.c
 | |
|    :export:
 | |
| 
 |