Back to home page

OSCL-LXR

 
 

    


0001 High Speed Synchronous Serial Interface (HSI)
0002 =============================================
0003 
0004 Introduction
0005 ---------------
0006 
0007 High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol,
0008 that is optimized for die-level interconnect between an Application Processor
0009 and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and
0010 implemented by multiple vendors since then.
0011 
0012 The HSI interface supports full duplex communication over multiple channels
0013 (typically 8) and is capable of reaching speeds up to 200 Mbit/s.
0014 
0015 The serial protocol uses two signals, DATA and FLAG as combined data and clock
0016 signals and an additional READY signal for flow control. An additional WAKE
0017 signal can be used to wakeup the chips from standby modes. The signals are
0018 commonly prefixed by AC for signals going from the application die to the
0019 cellular die and CA for signals going the other way around.
0020 
0021 ::
0022 
0023     +------------+                                 +---------------+
0024     |  Cellular  |                                 |  Application  |
0025     |    Die     |                                 |      Die      |
0026     |            | - - - - - - CAWAKE - - - - - - >|               |
0027     |           T|------------ CADATA ------------>|R              |
0028     |           X|------------ CAFLAG ------------>|X              |
0029     |            |<----------- ACREADY ------------|               |
0030     |            |                                 |               |
0031     |            |                                 |               |
0032     |            |< - - - - -  ACWAKE - - - - - - -|               |
0033     |           R|<----------- ACDATA -------------|T              |
0034     |           X|<----------- ACFLAG -------------|X              |
0035     |            |------------ CAREADY ----------->|               |
0036     |            |                                 |               |
0037     |            |                                 |               |
0038     +------------+                                 +---------------+
0039 
0040 HSI Subsystem in Linux
0041 -------------------------
0042 
0043 In the Linux kernel the hsi subsystem is supposed to be used for HSI devices.
0044 The hsi subsystem contains drivers for hsi controllers including support for
0045 multi-port controllers and provides a generic API for using the HSI ports.
0046 
0047 It also contains HSI client drivers, which make use of the generic API to
0048 implement a protocol used on the HSI interface. These client drivers can
0049 use an arbitrary number of channels.
0050 
0051 hsi-char Device
0052 ------------------
0053 
0054 Each port automatically registers a generic client driver called hsi_char,
0055 which provides a charecter device for userspace representing the HSI port.
0056 It can be used to communicate via HSI from userspace. Userspace may
0057 configure the hsi_char device using the following ioctl commands:
0058 
0059 HSC_RESET
0060  flush the HSI port
0061 
0062 HSC_SET_PM
0063  enable or disable the client.
0064 
0065 HSC_SEND_BREAK
0066  send break
0067 
0068 HSC_SET_RX
0069  set RX configuration
0070 
0071 HSC_GET_RX
0072  get RX configuration
0073 
0074 HSC_SET_TX
0075  set TX configuration
0076 
0077 HSC_GET_TX
0078  get TX configuration
0079 
0080 The kernel HSI API
0081 ------------------
0082 
0083 .. kernel-doc:: include/linux/hsi/hsi.h
0084    :internal:
0085 
0086 .. kernel-doc:: drivers/hsi/hsi_core.c
0087    :export:
0088