1 /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2 #ifndef UAPI_UFS_H_
3 #define UAPI_UFS_H_
4 
5 #define MAX_QUERY_IDN	0x20
6 
7 /* Flag idn for Query Requests*/
8 enum flag_idn {
9 	QUERY_FLAG_IDN_FDEVICEINIT                      = 0x01,
10 	QUERY_FLAG_IDN_PERMANENT_WPE                    = 0x02,
11 	QUERY_FLAG_IDN_PWR_ON_WPE                       = 0x03,
12 	QUERY_FLAG_IDN_BKOPS_EN                         = 0x04,
13 	QUERY_FLAG_IDN_LIFE_SPAN_MODE_ENABLE            = 0x05,
14 	QUERY_FLAG_IDN_PURGE_ENABLE                     = 0x06,
15 	QUERY_FLAG_IDN_RESERVED2                        = 0x07,
16 	QUERY_FLAG_IDN_FPHYRESOURCEREMOVAL              = 0x08,
17 	QUERY_FLAG_IDN_BUSY_RTC                         = 0x09,
18 	QUERY_FLAG_IDN_RESERVED3                        = 0x0A,
19 	QUERY_FLAG_IDN_PERMANENTLY_DISABLE_FW_UPDATE    = 0x0B,
20 	/* use one reserved bit */
21 	QUERY_FLAG_IDN_MANUAL_GC_CONT                   = 0x0E,
22 	QUERY_FLAG_IDN_WB_EN                            = 0x0E,
23 	QUERY_FLAG_IDN_WB_BUFF_FLUSH_EN                 = 0x0F,
24 	QUERY_FLAG_IDN_WB_BUFF_FLUSH_DURING_HIBERN8     = 0x10,
25 };
26 
27 /* Attribute idn for Query requests */
28 enum attr_idn {
29 	QUERY_ATTR_IDN_BOOT_LU_EN               = 0x00,
30 	QUERY_ATTR_IDN_RESERVED                 = 0x01,
31 	QUERY_ATTR_IDN_POWER_MODE               = 0x02,
32 	QUERY_ATTR_IDN_ACTIVE_ICC_LVL           = 0x03,
33 	QUERY_ATTR_IDN_OOO_DATA_EN              = 0x04,
34 	QUERY_ATTR_IDN_BKOPS_STATUS             = 0x05,
35 	QUERY_ATTR_IDN_PURGE_STATUS             = 0x06,
36 	QUERY_ATTR_IDN_MAX_DATA_IN              = 0x07,
37 	QUERY_ATTR_IDN_MAX_DATA_OUT             = 0x08,
38 	QUERY_ATTR_IDN_DYN_CAP_NEEDED           = 0x09,
39 	QUERY_ATTR_IDN_REF_CLK_FREQ             = 0x0A,
40 	QUERY_ATTR_IDN_CONF_DESC_LOCK           = 0x0B,
41 	QUERY_ATTR_IDN_MAX_NUM_OF_RTT           = 0x0C,
42 	QUERY_ATTR_IDN_EE_CONTROL               = 0x0D,
43 	QUERY_ATTR_IDN_EE_STATUS                = 0x0E,
44 	QUERY_ATTR_IDN_SECONDS_PASSED           = 0x0F,
45 	QUERY_ATTR_IDN_CNTX_CONF                = 0x10,
46 	QUERY_ATTR_IDN_CORR_PRG_BLK_NUM         = 0x11,
47 	QUERY_ATTR_IDN_MANUAL_GC_CONT		= 0x12,
48 	QUERY_ATTR_IDN_MANUAL_GC_STATUS_1	= 0x13,
49 	QUERY_ATTR_IDN_FFU_STATUS               = 0x14,
50 	QUERY_ATTR_IDN_PSA_STATE                = 0x15,
51 	QUERY_ATTR_IDN_PSA_DATA_SIZE            = 0x16,
52 	QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME	= 0x17,
53 	/* use one reserved bit */
54 	QUERY_ATTR_IDN_MANUAL_GC_STATUS         = 0x17,
55 	QUERY_ATTR_IDN_WB_FLUSH_STATUS	        = 0x1C,
56 	QUERY_ATTR_IDN_AVAIL_WB_BUFF_SIZE       = 0x1D,
57 	QUERY_ATTR_IDN_WB_BUFF_LIFE_TIME_EST    = 0x1E,
58 	QUERY_ATTR_IDN_CURR_WB_BUFF_SIZE        = 0x1F,
59 };
60 
61 #define QUERY_ATTR_IDN_BOOT_LU_EN_MAX	0x02
62 #define QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME \
63 		QUERY_ATTR_IDN_REF_CLK_GATING_WAIT_TIME
64 
65 /* Descriptor idn for Query requests */
66 enum desc_idn {
67 	QUERY_DESC_IDN_DEVICE		= 0x0,
68 	QUERY_DESC_IDN_CONFIGURATION	= 0x1,
69 	QUERY_DESC_IDN_UNIT		= 0x2,
70 	QUERY_DESC_IDN_RFU_0		= 0x3,
71 	QUERY_DESC_IDN_INTERCONNECT	= 0x4,
72 	QUERY_DESC_IDN_STRING		= 0x5,
73 	QUERY_DESC_IDN_RFU_1		= 0x6,
74 	QUERY_DESC_IDN_GEOMETRY		= 0x7,
75 	QUERY_DESC_IDN_POWER		= 0x8,
76 	QUERY_DESC_IDN_HEALTH           = 0x9,
77 	QUERY_DESC_IDN_MAX,
78 };
79 
80 /* UTP QUERY Transaction Specific Fields OpCode */
81 enum query_opcode {
82 	UPIU_QUERY_OPCODE_NOP		= 0x0,
83 	UPIU_QUERY_OPCODE_READ_DESC	= 0x1,
84 	UPIU_QUERY_OPCODE_WRITE_DESC	= 0x2,
85 	UPIU_QUERY_OPCODE_READ_ATTR	= 0x3,
86 	UPIU_QUERY_OPCODE_WRITE_ATTR	= 0x4,
87 	UPIU_QUERY_OPCODE_READ_FLAG	= 0x5,
88 	UPIU_QUERY_OPCODE_SET_FLAG	= 0x6,
89 	UPIU_QUERY_OPCODE_CLEAR_FLAG	= 0x7,
90 	UPIU_QUERY_OPCODE_TOGGLE_FLAG	= 0x8,
91 	UPIU_QUERY_OPCODE_MAX,
92 };
93 #endif /* UAPI_UFS_H_ */
94