forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/scsi/ufs/ufs_quirks.h
....@@ -1,15 +1,6 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
3
- *
4
- * This program is free software; you can redistribute it and/or modify
5
- * it under the terms of the GNU General Public License version 2 and
6
- * only version 2 as published by the Free Software Foundation.
7
- *
8
- * This program is distributed in the hope that it will be useful,
9
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
- * GNU General Public License for more details.
12
- *
134 */
145
156 #ifndef _UFS_QUIRKS_H_
....@@ -22,9 +13,10 @@
2213 #define UFS_ANY_MODEL "ANY_MODEL"
2314
2415 #define UFS_VENDOR_MICRON 0x12C
25
-#define UFS_VENDOR_TOSHIBA 0x198
2616 #define UFS_VENDOR_SAMSUNG 0x1CE
2717 #define UFS_VENDOR_SKHYNIX 0x1AD
18
+#define UFS_VENDOR_TOSHIBA 0x198
19
+#define UFS_VENDOR_WDC 0x145
2820
2921 /**
3022 * ufs_dev_fix - ufs device quirk info
....@@ -32,33 +24,19 @@
3224 * @quirk: device quirk
3325 */
3426 struct ufs_dev_fix {
35
- struct ufs_dev_desc card;
27
+ u16 wmanufacturerid;
28
+ u8 *model;
3629 unsigned int quirk;
3730 };
3831
39
-#define END_FIX { { 0 }, 0 }
32
+#define END_FIX { }
4033
4134 /* add specific device quirk */
4235 #define UFS_FIX(_vendor, _model, _quirk) { \
43
- .card.wmanufacturerid = (_vendor),\
44
- .card.model = (_model), \
36
+ .wmanufacturerid = (_vendor),\
37
+ .model = (_model), \
4538 .quirk = (_quirk), \
4639 }
47
-
48
-/*
49
- * If UFS device is having issue in processing LCC (Line Control
50
- * Command) coming from UFS host controller then enable this quirk.
51
- * When this quirk is enabled, host controller driver should disable
52
- * the LCC transmission on UFS host controller (by clearing
53
- * TX_LCC_ENABLE attribute of host to 0).
54
- */
55
-#define UFS_DEVICE_QUIRK_BROKEN_LCC (1 << 0)
56
-
57
-/*
58
- * Some UFS devices don't need VCCQ rail for device operations. Enabling this
59
- * quirk for such devices will make sure that VCCQ rail is not voted.
60
- */
61
-#define UFS_DEVICE_NO_VCCQ (1 << 1)
6240
6341 /*
6442 * Some vendor's UFS device sends back to back NACs for the DL data frames
....@@ -86,13 +64,6 @@
8664 #define UFS_DEVICE_QUIRK_RECOVERY_FROM_DL_NAC_ERRORS (1 << 2)
8765
8866 /*
89
- * Some UFS devices may not work properly after resume if the link was kept
90
- * in off state during suspend. Enabling this quirk will not allow the
91
- * link to be kept in off state during suspend.
92
- */
93
-#define UFS_DEVICE_QUIRK_NO_LINK_OFF (1 << 3)
94
-
95
-/*
9667 * Few Toshiba UFS device models advertise RX_MIN_ACTIVATETIME_CAPABILITY as
9768 * 600us which may not be enough for reliable hibern8 exit hardware sequence
9869 * from UFS device.
....@@ -100,13 +71,6 @@
10071 * if device advertises RX_MIN_ACTIVATETIME_CAPABILITY less than 1ms.
10172 */
10273 #define UFS_DEVICE_QUIRK_PA_TACTIVATE (1 << 4)
103
-
104
-/*
105
- * Some UFS memory devices may have really low read/write throughput in
106
- * FAST AUTO mode, enable this quirk to make sure that FAST AUTO mode is
107
- * never enabled for such devices.
108
- */
109
-#define UFS_DEVICE_NO_FASTAUTO (1 << 5)
11074
11175 /*
11276 * It seems some UFS devices may keep drawing more than sleep current
....@@ -138,4 +102,24 @@
138102 */
139103 #define UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME (1 << 9)
140104
105
+/*
106
+ * Some pre-3.1 UFS devices can support extended features by upgrading
107
+ * the firmware. Enable this quirk to make UFS core driver probe and enable
108
+ * supported features on such devices.
109
+ */
110
+#define UFS_DEVICE_QUIRK_SUPPORT_EXTENDED_FEATURES (1 << 10)
111
+
112
+/*
113
+ * Some UFS devices require delay after VCC power rail is turned-off.
114
+ * Enable this quirk to introduce 5ms delays after VCC power-off during
115
+ * suspend flow.
116
+ */
117
+#define UFS_DEVICE_QUIRK_DELAY_AFTER_LPM (1 << 11)
118
+
119
+/*
120
+ * Some UFS devices require L2P entry should be swapped before being sent to the
121
+ * UFS device for HPB READ command.
122
+ */
123
+#define UFS_DEVICE_QUIRK_SWAP_L2P_ENTRY_FOR_HPB_READ (1 << 12)
124
+
141125 #endif /* UFS_QUIRKS_H_ */