.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-or-later */ |
---|
1 | 2 | /* |
---|
2 | 3 | * drivers/scsi/ufs/unipro.h |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2013 Samsung Electronics Co., Ltd. |
---|
5 | | - * |
---|
6 | | - * This program is free software; you can redistribute it and/or modify |
---|
7 | | - * it under the terms of the GNU General Public License as published by |
---|
8 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
9 | | - * (at your option) any later version. |
---|
10 | 6 | */ |
---|
11 | 7 | |
---|
12 | 8 | #ifndef _UNIPRO_H_ |
---|
.. | .. |
---|
68 | 64 | #define CFGRXOVR4 0x00E9 |
---|
69 | 65 | #define RXSQCTRL 0x00B5 |
---|
70 | 66 | #define CFGRXOVR6 0x00BF |
---|
| 67 | +#define RX_HS_G1_SYNC_LENGTH_CAP 0x008B |
---|
| 68 | +#define RX_HS_G1_PREP_LENGTH_CAP 0x008C |
---|
| 69 | +#define RX_HS_G2_SYNC_LENGTH_CAP 0x0094 |
---|
| 70 | +#define RX_HS_G3_SYNC_LENGTH_CAP 0x0095 |
---|
| 71 | +#define RX_HS_G2_PREP_LENGTH_CAP 0x0096 |
---|
| 72 | +#define RX_HS_G3_PREP_LENGTH_CAP 0x0097 |
---|
| 73 | +#define RX_ADV_GRANULARITY_CAP 0x0098 |
---|
| 74 | +#define RX_MIN_ACTIVATETIME_CAP 0x008F |
---|
| 75 | +#define RX_HIBERN8TIME_CAP 0x0092 |
---|
| 76 | +#define RX_ADV_HIBERN8TIME_CAP 0x0099 |
---|
| 77 | +#define RX_ADV_MIN_ACTIVATETIME_CAP 0x009A |
---|
| 78 | + |
---|
71 | 79 | |
---|
72 | 80 | #define is_mphy_tx_attr(attr) (attr < RX_MODE) |
---|
| 81 | +#define RX_ADV_FINE_GRAN_STEP(x) ((((x) & 0x3) << 1) | 0x1) |
---|
| 82 | +#define SYNC_LEN_FINE(x) ((x) & 0x3F) |
---|
| 83 | +#define SYNC_LEN_COARSE(x) ((1 << 6) | ((x) & 0x3F)) |
---|
| 84 | +#define PREP_LEN(x) ((x) & 0xF) |
---|
| 85 | + |
---|
73 | 86 | #define RX_MIN_ACTIVATETIME_UNIT_US 100 |
---|
74 | 87 | #define HIBERN8TIME_UNIT_US 100 |
---|
75 | 88 | |
---|
.. | .. |
---|
128 | 141 | #define PA_PACPREQEOBTIMEOUT 0x1591 |
---|
129 | 142 | #define PA_HIBERN8TIME 0x15A7 |
---|
130 | 143 | #define PA_LOCALVERINFO 0x15A9 |
---|
| 144 | +#define PA_GRANULARITY 0x15AA |
---|
131 | 145 | #define PA_TACTIVATE 0x15A8 |
---|
132 | 146 | #define PA_PACPFRAMECOUNT 0x15C0 |
---|
133 | 147 | #define PA_PACPERRORCOUNT 0x15C1 |
---|
.. | .. |
---|
150 | 164 | #define PA_SLEEPNOCONFIGTIME 0x15A2 |
---|
151 | 165 | #define PA_STALLNOCONFIGTIME 0x15A3 |
---|
152 | 166 | #define PA_SAVECONFIGTIME 0x15A4 |
---|
| 167 | +#define PA_TXHSADAPTTYPE 0x15D4 |
---|
| 168 | + |
---|
| 169 | +/* Adpat type for PA_TXHSADAPTTYPE attribute */ |
---|
| 170 | +#define PA_REFRESH_ADAPT 0x00 |
---|
| 171 | +#define PA_INITIAL_ADAPT 0x01 |
---|
| 172 | +#define PA_NO_ADAPT 0x03 |
---|
153 | 173 | |
---|
154 | 174 | #define PA_TACTIVATE_TIME_UNIT_US 10 |
---|
155 | 175 | #define PA_HIBERN8_TIME_UNIT_US 100 |
---|
.. | .. |
---|
165 | 185 | /* PHY Adapter Protocol Constants */ |
---|
166 | 186 | #define PA_MAXDATALANES 4 |
---|
167 | 187 | |
---|
| 188 | +#define DL_FC0ProtectionTimeOutVal_Default 8191 |
---|
| 189 | +#define DL_TC0ReplayTimeOutVal_Default 65535 |
---|
| 190 | +#define DL_AFC0ReqTimeOutVal_Default 32767 |
---|
| 191 | +#define DL_FC1ProtectionTimeOutVal_Default 8191 |
---|
| 192 | +#define DL_TC1ReplayTimeOutVal_Default 65535 |
---|
| 193 | +#define DL_AFC1ReqTimeOutVal_Default 32767 |
---|
| 194 | + |
---|
| 195 | +#define DME_LocalFC0ProtectionTimeOutVal 0xD041 |
---|
| 196 | +#define DME_LocalTC0ReplayTimeOutVal 0xD042 |
---|
| 197 | +#define DME_LocalAFC0ReqTimeOutVal 0xD043 |
---|
| 198 | + |
---|
168 | 199 | /* PA power modes */ |
---|
169 | 200 | enum { |
---|
170 | 201 | FAST_MODE = 1, |
---|
.. | .. |
---|
173 | 204 | SLOWAUTO_MODE = 5, |
---|
174 | 205 | UNCHANGED = 7, |
---|
175 | 206 | }; |
---|
| 207 | + |
---|
| 208 | +#define PWRMODE_MASK 0xF |
---|
| 209 | +#define PWRMODE_RX_OFFSET 4 |
---|
176 | 210 | |
---|
177 | 211 | /* PA TX/RX Frequency Series */ |
---|
178 | 212 | enum { |
---|
.. | .. |
---|
196 | 230 | UFS_HS_G1, /* HS Gear 1 (default for reset) */ |
---|
197 | 231 | UFS_HS_G2, /* HS Gear 2 */ |
---|
198 | 232 | UFS_HS_G3, /* HS Gear 3 */ |
---|
| 233 | + UFS_HS_G4, /* HS Gear 4 */ |
---|
199 | 234 | }; |
---|
200 | 235 | |
---|
201 | 236 | enum ufs_unipro_ver { |
---|
202 | 237 | UFS_UNIPRO_VER_RESERVED = 0, |
---|
203 | 238 | UFS_UNIPRO_VER_1_40 = 1, /* UniPro version 1.40 */ |
---|
204 | 239 | UFS_UNIPRO_VER_1_41 = 2, /* UniPro version 1.41 */ |
---|
205 | | - UFS_UNIPRO_VER_1_6 = 3, /* UniPro version 1.6 */ |
---|
206 | | - UFS_UNIPRO_VER_MAX = 4, /* UniPro unsupported version */ |
---|
| 240 | + UFS_UNIPRO_VER_1_6 = 3, /* UniPro version 1.6 */ |
---|
| 241 | + UFS_UNIPRO_VER_1_61 = 4, /* UniPro version 1.61 */ |
---|
| 242 | + UFS_UNIPRO_VER_1_8 = 5, /* UniPro version 1.8 */ |
---|
| 243 | + UFS_UNIPRO_VER_MAX = 6, /* UniPro unsupported version */ |
---|
207 | 244 | /* UniPro version field mask in PA_LOCALVERINFO */ |
---|
208 | 245 | UFS_UNIPRO_VER_MASK = 0xF, |
---|
209 | 246 | }; |
---|
.. | .. |
---|
277 | 314 | TRUE, |
---|
278 | 315 | }; |
---|
279 | 316 | |
---|
| 317 | +/* CPort setting */ |
---|
| 318 | +#define E2EFC_ON (1 << 0) |
---|
| 319 | +#define E2EFC_OFF (0 << 0) |
---|
| 320 | +#define CSD_N_ON (0 << 1) |
---|
| 321 | +#define CSD_N_OFF (1 << 1) |
---|
| 322 | +#define CSV_N_ON (0 << 2) |
---|
| 323 | +#define CSV_N_OFF (1 << 2) |
---|
| 324 | +#define CPORT_DEF_FLAGS (CSV_N_OFF | CSD_N_OFF | E2EFC_OFF) |
---|
| 325 | + |
---|
| 326 | +/* CPort connection state */ |
---|
| 327 | +enum { |
---|
| 328 | + CPORT_IDLE = 0, |
---|
| 329 | + CPORT_CONNECTED, |
---|
| 330 | +}; |
---|
| 331 | + |
---|
280 | 332 | #endif /* _UNIPRO_H_ */ |
---|