@@ -94,3 +94,5 @@ sym53c8xx_2.txt
- info on second generation driver for sym53c8xx based adapters
tmscsim.txt
- info on driver for AM53c974 based adapters
+ufs.txt
+ - info on Universal Flash Storage(UFS) and UFS host controller driver.
new file mode 100644
@@ -0,0 +1,89 @@
+UFS:
+Universal Flash Storage 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
+
+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,
+
+* Application Layer: It 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.
+
+* 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).
+
+* UFS Interconnect Layer(UIC): This 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.
+
+UFSHCD:
+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,
+- 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.
+- 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.
+- UFS error handling: Error handling module handles Host controller
+ fatal errors, Device fatal errors and UIC interconnect layer related
+ errors.
+- 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