From: Santosh Yaraganavi <santoshsy@xxxxxxxxx> The document provides Universal Flash Storage(UFS) and UFS host controller driver overview. Signed-off-by: Santosh Yaraganavi <santoshsy@xxxxxxxxx> Reviewed-by: Vishak G <vishak.g@xxxxxxxxxxx> --- Documentation/scsi/00-INDEX | 2 + Documentation/scsi/ufs.txt | 89 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 0 deletions(-) create mode 100644 Documentation/scsi/ufs.txt diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX index b48ded5..b7dd650 100644 --- a/Documentation/scsi/00-INDEX +++ b/Documentation/scsi/00-INDEX @@ -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. diff --git a/Documentation/scsi/ufs.txt b/Documentation/scsi/ufs.txt new file mode 100644 index 0000000..bd797b9 --- /dev/null +++ b/Documentation/scsi/ufs.txt @@ -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 -- 1.7.5.4 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html