cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

hsi.rst (3190B)


      1High Speed Synchronous Serial Interface (HSI)
      2=============================================
      3
      4Introduction
      5---------------
      6
      7High Speed Syncronous Interface (HSI) is a fullduplex, low latency protocol,
      8that is optimized for die-level interconnect between an Application Processor
      9and a Baseband chipset. It has been specified by the MIPI alliance in 2003 and
     10implemented by multiple vendors since then.
     11
     12The HSI interface supports full duplex communication over multiple channels
     13(typically 8) and is capable of reaching speeds up to 200 Mbit/s.
     14
     15The serial protocol uses two signals, DATA and FLAG as combined data and clock
     16signals and an additional READY signal for flow control. An additional WAKE
     17signal can be used to wakeup the chips from standby modes. The signals are
     18commonly prefixed by AC for signals going from the application die to the
     19cellular die and CA for signals going the other way around.
     20
     21::
     22
     23    +------------+                                 +---------------+
     24    |  Cellular  |                                 |  Application  |
     25    |    Die     |                                 |      Die      |
     26    |            | - - - - - - CAWAKE - - - - - - >|               |
     27    |           T|------------ CADATA ------------>|R              |
     28    |           X|------------ CAFLAG ------------>|X              |
     29    |            |<----------- ACREADY ------------|               |
     30    |            |                                 |               |
     31    |            |                                 |               |
     32    |            |< - - - - -  ACWAKE - - - - - - -|               |
     33    |           R|<----------- ACDATA -------------|T              |
     34    |           X|<----------- ACFLAG -------------|X              |
     35    |            |------------ CAREADY ----------->|               |
     36    |            |                                 |               |
     37    |            |                                 |               |
     38    +------------+                                 +---------------+
     39
     40HSI Subsystem in Linux
     41-------------------------
     42
     43In the Linux kernel the hsi subsystem is supposed to be used for HSI devices.
     44The hsi subsystem contains drivers for hsi controllers including support for
     45multi-port controllers and provides a generic API for using the HSI ports.
     46
     47It also contains HSI client drivers, which make use of the generic API to
     48implement a protocol used on the HSI interface. These client drivers can
     49use an arbitrary number of channels.
     50
     51hsi-char Device
     52------------------
     53
     54Each port automatically registers a generic client driver called hsi_char,
     55which provides a charecter device for userspace representing the HSI port.
     56It can be used to communicate via HSI from userspace. Userspace may
     57configure the hsi_char device using the following ioctl commands:
     58
     59HSC_RESET
     60 flush the HSI port
     61
     62HSC_SET_PM
     63 enable or disable the client.
     64
     65HSC_SEND_BREAK
     66 send break
     67
     68HSC_SET_RX
     69 set RX configuration
     70
     71HSC_GET_RX
     72 get RX configuration
     73
     74HSC_SET_TX
     75 set TX configuration
     76
     77HSC_GET_TX
     78 get TX configuration
     79
     80The kernel HSI API
     81------------------
     82
     83.. kernel-doc:: include/linux/hsi/hsi.h
     84   :internal:
     85
     86.. kernel-doc:: drivers/hsi/hsi_core.c
     87   :export:
     88