1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19#ifndef _UAPI_SED_OPAL_H
20#define _UAPI_SED_OPAL_H
21
22#include <linux/types.h>
23
24#define OPAL_KEY_MAX 256
25#define OPAL_MAX_LRS 9
26
27enum opal_mbr {
28 OPAL_MBR_ENABLE = 0x0,
29 OPAL_MBR_DISABLE = 0x01,
30};
31
32enum opal_user {
33 OPAL_ADMIN1 = 0x0,
34 OPAL_USER1 = 0x01,
35 OPAL_USER2 = 0x02,
36 OPAL_USER3 = 0x03,
37 OPAL_USER4 = 0x04,
38 OPAL_USER5 = 0x05,
39 OPAL_USER6 = 0x06,
40 OPAL_USER7 = 0x07,
41 OPAL_USER8 = 0x08,
42 OPAL_USER9 = 0x09,
43};
44
45enum opal_lock_state {
46 OPAL_RO = 0x01,
47 OPAL_RW = 0x02,
48 OPAL_LK = 0x04,
49};
50
51struct opal_key {
52 __u8 lr;
53 __u8 key_len;
54 __u8 __align[6];
55 __u8 key[OPAL_KEY_MAX];
56};
57
58struct opal_lr_act {
59 struct opal_key key;
60 __u32 sum;
61 __u8 num_lrs;
62 __u8 lr[OPAL_MAX_LRS];
63 __u8 align[2];
64};
65
66struct opal_session_info {
67 __u32 sum;
68 __u32 who;
69 struct opal_key opal_key;
70};
71
72struct opal_user_lr_setup {
73 __u64 range_start;
74 __u64 range_length;
75 __u32 RLE;
76 __u32 WLE;
77 struct opal_session_info session;
78};
79
80struct opal_lock_unlock {
81 struct opal_session_info session;
82 __u32 l_state;
83 __u8 __align[4];
84};
85
86struct opal_new_pw {
87 struct opal_session_info session;
88
89
90
91
92
93
94
95
96
97
98 struct opal_session_info new_user_pw;
99};
100
101struct opal_mbr_data {
102 struct opal_key key;
103 __u8 enable_disable;
104 __u8 __align[7];
105};
106
107#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
108#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
109#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
110#define IOC_OPAL_ACTIVATE_LSP _IOW('p', 223, struct opal_lr_act)
111#define IOC_OPAL_SET_PW _IOW('p', 224, struct opal_new_pw)
112#define IOC_OPAL_ACTIVATE_USR _IOW('p', 225, struct opal_session_info)
113#define IOC_OPAL_REVERT_TPR _IOW('p', 226, struct opal_key)
114#define IOC_OPAL_LR_SETUP _IOW('p', 227, struct opal_user_lr_setup)
115#define IOC_OPAL_ADD_USR_TO_LR _IOW('p', 228, struct opal_lock_unlock)
116#define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
117#define IOC_OPAL_ERASE_LR _IOW('p', 230, struct opal_session_info)
118#define IOC_OPAL_SECURE_ERASE_LR _IOW('p', 231, struct opal_session_info)
119
120#endif
121