• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef UAPI_UFS_H_
2 #define UAPI_UFS_H_
3 
4 #define MAX_QUERY_IDN	0x18
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 	/* use one reserved bit */
42 	QUERY_ATTR_IDN_MANUAL_GC_STATUS		= 0x17,
43 };
44 
45 #define QUERY_ATTR_IDN_BOOT_LU_EN_MAX	0x02
46 
47 /* Descriptor idn for Query requests */
48 enum desc_idn {
49 	QUERY_DESC_IDN_DEVICE		= 0x0,
50 	QUERY_DESC_IDN_CONFIGURAION	= 0x1,
51 	QUERY_DESC_IDN_UNIT		= 0x2,
52 	QUERY_DESC_IDN_RFU_0		= 0x3,
53 	QUERY_DESC_IDN_INTERCONNECT	= 0x4,
54 	QUERY_DESC_IDN_STRING		= 0x5,
55 	QUERY_DESC_IDN_RFU_1		= 0x6,
56 	QUERY_DESC_IDN_GEOMETRY		= 0x7,
57 	QUERY_DESC_IDN_POWER		= 0x8,
58 	QUERY_DESC_IDN_HEALTH		= 0x9,
59 	QUERY_DESC_IDN_RFU_2		= 0xA,
60 	QUERY_DESC_IDN_MAX,
61 };
62 
63 /* UTP QUERY Transaction Specific Fields OpCode */
64 enum query_opcode {
65 	UPIU_QUERY_OPCODE_NOP		= 0x0,
66 	UPIU_QUERY_OPCODE_READ_DESC	= 0x1,
67 	UPIU_QUERY_OPCODE_WRITE_DESC	= 0x2,
68 	UPIU_QUERY_OPCODE_READ_ATTR	= 0x3,
69 	UPIU_QUERY_OPCODE_WRITE_ATTR	= 0x4,
70 	UPIU_QUERY_OPCODE_READ_FLAG	= 0x5,
71 	UPIU_QUERY_OPCODE_SET_FLAG	= 0x6,
72 	UPIU_QUERY_OPCODE_CLEAR_FLAG	= 0x7,
73 	UPIU_QUERY_OPCODE_TOGGLE_FLAG	= 0x8,
74 	UPIU_QUERY_OPCODE_MAX,
75 };
76 
77 /*
78  * high 16 bits for HPB. E.g.,
79  *  opcode = (UFS_IOCTL_QUERY_OPCODE << 16) | UPIU_QUERY_OPCODE_READ_DESC
80  */
81 #define UPIU_QUERY_OPCODE_HIGH_HPB	0x5500
82 #define UPIU_QUERY_OPCODE_HIGH(opcode)	((opcode) >> 16)
83 #define UPIU_QUERY_OPCODE_LOW(opcode)	((opcode) & 0xffff)
84 
85 #endif /* UAPI_UFS_H_ */
86