                       Universal Flash Storage
                       =======================


Contents
--------

1. Overview
2. UFS Architecture Overview
  2.1 Application Layer
  2.2 UFS Transport Protocol(UTP) layer
  2.3 UFS Interconnect(UIC) Layer
3. UFSHCD Overview
  3.1 UFS controller initialization
  3.2 UTP Transfer requests
  3.3 UFS error handling
  3.4 SCSI Error handling


1. Overview
-----------

Universal Flash Storage(UFS) is a storage specification for flash devices.
It is aimed to provide a universal storage interface for both
embedded and removable flash memory based storage in mobile
devices such as smart phones and tablet computers. The specification
is defined by JEDEC Solid State Technology Association. UFS is based
on MIPI M-PHY physical layer standard. UFS uses MIPI M-PHY as the
physical layer and MIPI Unipro as the link layer.

The main goals of UFS is to provide,
 * Optimized performance:
   For UFS version 1.0 and 1.1 the target performance is as follows,
   Support for Gear1 is mandatory (rate A: 1248Mbps, rate B: 1457.6Mbps)
   Support for Gear2 is optional (rate A: 2496Mbps, rate B: 2915.2Mbps)
   Future version of the standard,
   Gear3 (rate A: 4992Mbps, rate B: 5830.4Mbps)
 * Low power consumption
 * High random IOPs and low latency


2. UFS Architecture Overview
----------------------------

UFS has a layered communication architecture which is based on SCSI
SAM-5 architectural model.

UFS communication architecture consists of following layers,

2.1 Application Layer

  The Application layer is composed of UFS command set layer(UCS),
  Task Manager and Device manager. The UFS interface is designed to be
  protocol agnostic, however SCSI has been selected as a baseline
  protocol for versions 1.0 and 1.1 of UFS protocol  layer.
  UFS supports subset of SCSI commands defined by SPC-4 and SBC-3.
  * UCS: It handles SCSI commands supported by UFS specification.
  * Task manager: It handles task management functions defined by the
     UFS which are meant for command queue control.
  * Device manager: It handles device level operations and device
     configuration operations. Device level operations mainly involve
     device power management operations and commands to Interconnect
     layers. Device level configurations involve handling of query
     requests which are used to modify and retrieve configuration
     information of the device.

2.2 UFS Transport Protocol(UTP) layer

  UTP layer provides services for
  the higher layers through Service Access Points. UTP defines 3
  service access points for higher layers.
  * UDM_SAP: Device manager service access point is exposed to device
    manager for device level operations. These device level operations
    are done through query requests.
  * UTP_CMD_SAP: Command service access point is exposed to UFS command
    set layer(UCS) to transport commands.
  * UTP_TM_SAP: Task management service access point is exposed to task
    manager to transport task management functions.
  UTP transports messages through UFS protocol information unit(UPIU).

2.3 UFS Interconnect(UIC) Layer

  UIC is the lowest layer of UFS layered architecture. It handles
  connection between UFS host and UFS device. UIC consists of
  MIPI UniPro and MIPI M-PHY. UIC provides 2 service access points
  to upper layer,
  * UIC_SAP: To transport UPIU between UFS host and UFS device.
  * UIO_SAP: To issue commands to Unipro layers.


3. UFSHCD Overview
------------------

The UFS host controller driver is based on Linux SCSI Framework.
UFSHCD is a low level device driver which acts as an interface between
SCSI Midlayer and PCIe based UFS host controllers.

The current UFSHCD implementation supports following functionality,

3.1 UFS controller initialization

  The initialization module brings UFS host controller to active state
  and prepares the controller to transfer commands/response between
  UFSHCD and UFS device.

3.2 UTP Transfer requests

  Transfer request handling module of UFSHCD receives SCSI commands
  from SCSI Midlayer, forms UPIUs and issues the UPIUs to UFS Host
  controller. Also, the module decodes, responses received from UFS
  host controller in the form of UPIUs and intimates the SCSI Midlayer
  of the status of the command.

3.3 UFS error handling

  Error handling module handles Host controller fatal errors,
  Device fatal errors and UIC interconnect layer related errors.

3.4 SCSI Error handling

  This is done through UFSHCD SCSI error handling routines registered
  with SCSI Midlayer. Examples of some of the error handling commands
  issues by SCSI Midlayer are Abort task, Lun reset and host reset.
  UFSHCD Routines to perform these tasks are registered with
  SCSI Midlayer through .eh_abort_handler, .eh_device_reset_handler and
  .eh_host_reset_handler.

In this version of UFSHCD Query requests and power management
functionality are not implemented.

UFS Specifications can be found at,
UFS - http://www.jedec.org/sites/default/files/docs/JESD220.pdf
UFSHCI - http://www.jedec.org/sites/default/files/docs/JESD223.pdf
