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