hsi.rst 3.1 KB

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