From patchwork Fri Feb 24 07:19:05 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Santosh Yaraganavi X-Patchwork-Id: 6916 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 82CD023EB0 for ; Fri, 24 Feb 2012 07:20:29 +0000 (UTC) Received: from mail-tul01m020-f180.google.com (mail-tul01m020-f180.google.com [209.85.214.180]) by fiordland.canonical.com (Postfix) with ESMTP id 239C0A1810C for ; Fri, 24 Feb 2012 07:20:29 +0000 (UTC) Received: by obbuo19 with SMTP id uo19so3230485obb.11 for ; Thu, 23 Feb 2012 23:20:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.50.156.225 with SMTP id wh1mr1224071igb.0.1330068028401; Thu, 23 Feb 2012 23:20:28 -0800 (PST) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.231.11.10 with SMTP id r10csp3930ibr; Thu, 23 Feb 2012 23:20:27 -0800 (PST) Received: by 10.68.134.41 with SMTP id ph9mr3414879pbb.5.1330068026274; Thu, 23 Feb 2012 23:20:26 -0800 (PST) Received: from mail-pw0-f50.google.com (mail-pw0-f50.google.com [209.85.160.50]) by mx.google.com with ESMTPS id z7si5078042pbm.36.2012.02.23.23.20.23 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 23 Feb 2012 23:20:26 -0800 (PST) Received-SPF: pass (google.com: domain of santoshsy@gmail.com designates 209.85.160.50 as permitted sender) client-ip=209.85.160.50; Authentication-Results: mx.google.com; spf=pass (google.com: domain of santoshsy@gmail.com designates 209.85.160.50 as permitted sender) smtp.mail=santoshsy@gmail.com; dkim=pass header.i=@gmail.com Received: by mail-pw0-f50.google.com with SMTP id wy7so2574906pbc.37 for ; Thu, 23 Feb 2012 23:20:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=uoI6xgVUT3/64t7qx9JF9TMTiQEZ3p2phGYrEQjhesM=; b=SYkBeN9pLIWqc4Qpw9CVqjSMuGs3Jymj0Efl7tyF0CjYi8xZXgaWMggdD3cg0ZWwX6 5Aycw8ycqZJqmRHPG478z56EbUb480MPaLgEq5R3SXglnVFwEUB90zPzRT5NeaAWXrAj IkksKb65AKDIq/7exgdHfQakobJlJ/3ZA7Ows= Received: by 10.68.222.194 with SMTP id qo2mr3393515pbc.20.1330068022917; Thu, 23 Feb 2012 23:20:22 -0800 (PST) Received: from localhost.localdomain ([115.113.119.130]) by mx.google.com with ESMTPS id e8sm3627150pbg.47.2012.02.23.23.20.16 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 23 Feb 2012 23:20:21 -0800 (PST) From: Santosh Y To: James.Bottomley@hansenpartnership.com Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, patches@linaro.org, linux-samsung-soc@vger.kernel.org, arnd@linaro.org, girish.shivananjappa@linaro.org, saugata.das@linaro.org, vishak.g@samsung.com, venkat@linaro.org, k.rajesh@samsung.com, yejin.moon@samsung.com, dsaxena@linaro.org, ilho215.lee@samsung.com, nala.la@samsung.com, stephen.doel@linaro.org, sreekumar.c@samsung.com, Santosh Yaraganavi Subject: [PATCH v2 5/5] Documentation: UFS Host Controller Driver Date: Fri, 24 Feb 2012 12:49:05 +0530 Message-Id: <1330067945-9128-6-git-send-email-santoshsy@gmail.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1330067945-9128-1-git-send-email-santoshsy@gmail.com> References: <1330067945-9128-1-git-send-email-santoshsy@gmail.com> X-Gm-Message-State: ALoCoQkWC8+KRuLzMWfDeDGaXkAVaV0OT5ewBzI2ofjtDq0twiK76tbBcESjyOa0Czr9veuyphOD From: Santosh Yaraganavi The document provides Universal Flash Storage(UFS) and UFS host controller driver overview. Signed-off-by: Santosh Yaraganavi Reviewed-by: Vishak G --- 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