| .. | .. |
|---|
| 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_ */ |
|---|