diff options
author | Santosh Yaraganavi <santoshsy@gmail.com> | 2012-02-29 01:41:50 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-03-27 03:26:28 -0400 |
commit | 7a3e97b0dc4bbac2ba7803564ab0057722689921 (patch) | |
tree | ace32dfcc94a0994b123cc1e3b3967eccd9a0ef3 /Documentation | |
parent | 0bd7f84211ad244607e28e9e8fbad0244d54e6f5 (diff) |
[SCSI] ufshcd: UFS Host controller driver
This patch adds support for Universal Flash Storage(UFS)
host controllers. The UFS host controller driver
includes host controller initialization method.
The Initialization process involves following steps:
- Initiate UFS Host Controller initialization process by writing
to Host controller enable register
- Configure UFS Host controller registers with host memory space
datastructure offsets.
- Unipro link startup procedure
- Check for connected device
- Configure UFS host controller to process requests
- Enable required interrupts
- Configure interrupt aggregation
[jejb: fix warnings in 32 bit compile]
Signed-off-by: Santosh Yaraganavi <santoshsy@gmail.com>
Signed-off-by: Vinayak Holikatti <vinholikatti@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@linaro.org>
Reviewed-by: Vishak G <vishak.g@samsung.com>
Reviewed-by: Girish K S <girish.shivananjappa@linaro.org>
Reviewed-by: Namjae Jeon <linkinjeon@gmail.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/scsi/00-INDEX | 2 | ||||
-rw-r--r-- | Documentation/scsi/ufs.txt | 133 |
2 files changed, 135 insertions, 0 deletions
diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX index b48ded55b555..b7dd6502bec5 100644 --- a/Documentation/scsi/00-INDEX +++ b/Documentation/scsi/00-INDEX | |||
@@ -94,3 +94,5 @@ sym53c8xx_2.txt | |||
94 | - info on second generation driver for sym53c8xx based adapters | 94 | - info on second generation driver for sym53c8xx based adapters |
95 | tmscsim.txt | 95 | tmscsim.txt |
96 | - info on driver for AM53c974 based adapters | 96 | - info on driver for AM53c974 based adapters |
97 | ufs.txt | ||
98 | - 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 000000000000..41a6164592aa --- /dev/null +++ b/Documentation/scsi/ufs.txt | |||
@@ -0,0 +1,133 @@ | |||
1 | Universal Flash Storage | ||
2 | ======================= | ||
3 | |||
4 | |||
5 | Contents | ||
6 | -------- | ||
7 | |||
8 | 1. Overview | ||
9 | 2. UFS Architecture Overview | ||
10 | 2.1 Application Layer | ||
11 | 2.2 UFS Transport Protocol(UTP) layer | ||
12 | 2.3 UFS Interconnect(UIC) Layer | ||
13 | 3. UFSHCD Overview | ||
14 | 3.1 UFS controller initialization | ||
15 | 3.2 UTP Transfer requests | ||
16 | 3.3 UFS error handling | ||
17 | 3.4 SCSI Error handling | ||
18 | |||
19 | |||
20 | 1. Overview | ||
21 | ----------- | ||
22 | |||
23 | Universal Flash Storage(UFS) is a storage specification for flash devices. | ||
24 | It is aimed to provide a universal storage interface for both | ||
25 | embedded and removable flash memory based storage in mobile | ||
26 | devices such as smart phones and tablet computers. The specification | ||
27 | is defined by JEDEC Solid State Technology Association. UFS is based | ||
28 | on MIPI M-PHY physical layer standard. UFS uses MIPI M-PHY as the | ||
29 | physical layer and MIPI Unipro as the link layer. | ||
30 | |||
31 | The main goals of UFS is to provide, | ||
32 | * Optimized performance: | ||
33 | For UFS version 1.0 and 1.1 the target performance is as follows, | ||
34 | Support for Gear1 is mandatory (rate A: 1248Mbps, rate B: 1457.6Mbps) | ||
35 | Support for Gear2 is optional (rate A: 2496Mbps, rate B: 2915.2Mbps) | ||
36 | Future version of the standard, | ||
37 | Gear3 (rate A: 4992Mbps, rate B: 5830.4Mbps) | ||
38 | * Low power consumption | ||
39 | * High random IOPs and low latency | ||
40 | |||
41 | |||
42 | 2. UFS Architecture Overview | ||
43 | ---------------------------- | ||
44 | |||
45 | UFS has a layered communication architecture which is based on SCSI | ||
46 | SAM-5 architectural model. | ||
47 | |||
48 | UFS communication architecture consists of following layers, | ||
49 | |||
50 | 2.1 Application Layer | ||
51 | |||
52 | The Application layer is composed of UFS command set layer(UCS), | ||
53 | Task Manager and Device manager. The UFS interface is designed to be | ||
54 | protocol agnostic, however SCSI has been selected as a baseline | ||
55 | protocol for versions 1.0 and 1.1 of UFS protocol layer. | ||
56 | UFS supports subset of SCSI commands defined by SPC-4 and SBC-3. | ||
57 | * UCS: It handles SCSI commands supported by UFS specification. | ||
58 | * Task manager: It handles task management functions defined by the | ||
59 | UFS which are meant for command queue control. | ||
60 | * Device manager: It handles device level operations and device | ||
61 | configuration operations. Device level operations mainly involve | ||
62 | device power management operations and commands to Interconnect | ||
63 | layers. Device level configurations involve handling of query | ||
64 | requests which are used to modify and retrieve configuration | ||
65 | information of the device. | ||
66 | |||
67 | 2.2 UFS Transport Protocol(UTP) layer | ||
68 | |||
69 | UTP layer provides services for | ||
70 | the higher layers through Service Access Points. UTP defines 3 | ||
71 | service access points for higher layers. | ||
72 | * UDM_SAP: Device manager service access point is exposed to device | ||
73 | manager for device level operations. These device level operations | ||
74 | are done through query requests. | ||
75 | * UTP_CMD_SAP: Command service access point is exposed to UFS command | ||
76 | set layer(UCS) to transport commands. | ||
77 | * UTP_TM_SAP: Task management service access point is exposed to task | ||
78 | manager to transport task management functions. | ||
79 | UTP transports messages through UFS protocol information unit(UPIU). | ||
80 | |||
81 | 2.3 UFS Interconnect(UIC) Layer | ||
82 | |||
83 | UIC is the lowest layer of UFS layered architecture. It handles | ||
84 | connection between UFS host and UFS device. UIC consists of | ||
85 | MIPI UniPro and MIPI M-PHY. UIC provides 2 service access points | ||
86 | to upper layer, | ||
87 | * UIC_SAP: To transport UPIU between UFS host and UFS device. | ||
88 | * UIO_SAP: To issue commands to Unipro layers. | ||
89 | |||
90 | |||
91 | 3. UFSHCD Overview | ||
92 | ------------------ | ||
93 | |||
94 | The UFS host controller driver is based on Linux SCSI Framework. | ||
95 | UFSHCD is a low level device driver which acts as an interface between | ||
96 | SCSI Midlayer and PCIe based UFS host controllers. | ||
97 | |||
98 | The current UFSHCD implementation supports following functionality, | ||
99 | |||
100 | 3.1 UFS controller initialization | ||
101 | |||
102 | The initialization module brings UFS host controller to active state | ||
103 | and prepares the controller to transfer commands/response between | ||
104 | UFSHCD and UFS device. | ||
105 | |||
106 | 3.2 UTP Transfer requests | ||
107 | |||
108 | Transfer request handling module of UFSHCD receives SCSI commands | ||
109 | from SCSI Midlayer, forms UPIUs and issues the UPIUs to UFS Host | ||
110 | controller. Also, the module decodes, responses received from UFS | ||
111 | host controller in the form of UPIUs and intimates the SCSI Midlayer | ||
112 | of the status of the command. | ||
113 | |||
114 | 3.3 UFS error handling | ||
115 | |||
116 | Error handling module handles Host controller fatal errors, | ||
117 | Device fatal errors and UIC interconnect layer related errors. | ||
118 | |||
119 | 3.4 SCSI Error handling | ||
120 | |||
121 | This is done through UFSHCD SCSI error handling routines registered | ||
122 | with SCSI Midlayer. Examples of some of the error handling commands | ||
123 | issues by SCSI Midlayer are Abort task, Lun reset and host reset. | ||
124 | UFSHCD Routines to perform these tasks are registered with | ||
125 | SCSI Midlayer through .eh_abort_handler, .eh_device_reset_handler and | ||
126 | .eh_host_reset_handler. | ||
127 | |||
128 | In this version of UFSHCD Query requests and power management | ||
129 | functionality are not implemented. | ||
130 | |||
131 | UFS Specifications can be found at, | ||
132 | UFS - http://www.jedec.org/sites/default/files/docs/JESD220.pdf | ||
133 | UFSHCI - http://www.jedec.org/sites/default/files/docs/JESD223.pdf | ||