blob: f538849e3baa5cbaedc530baf3f5df3136decab2 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Ben Cheng655a7c02013-10-16 16:09:24 -07007#ifndef _UAPI_LINUX_EDD_H
8#define _UAPI_LINUX_EDD_H
9#include <linux/types.h>
10#define EDDNR 0x1e9
Ben Cheng655a7c02013-10-16 16:09:24 -070011#define EDDBUF 0xd00
12#define EDDMAXNR 6
13#define EDDEXTSIZE 8
14#define EDDPARMSIZE 74
Ben Cheng655a7c02013-10-16 16:09:24 -070015#define CHECKEXTENSIONSPRESENT 0x41
16#define GETDEVICEPARAMETERS 0x48
17#define LEGACYGETDEVICEPARAMETERS 0x08
18#define EDDMAGIC1 0x55AA
Ben Cheng655a7c02013-10-16 16:09:24 -070019#define EDDMAGIC2 0xAA55
20#define READ_SECTORS 0x02
21#define EDD_MBR_SIG_OFFSET 0x1B8
22#define EDD_MBR_SIG_BUF 0x290
Ben Cheng655a7c02013-10-16 16:09:24 -070023#define EDD_MBR_SIG_MAX 16
24#define EDD_MBR_SIG_NR_BUF 0x1ea
25#ifndef __ASSEMBLY__
26#define EDD_EXT_FIXED_DISK_ACCESS (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070027#define EDD_EXT_DEVICE_LOCKING_AND_EJECTING (1 << 1)
28#define EDD_EXT_ENHANCED_DISK_DRIVE_SUPPORT (1 << 2)
29#define EDD_EXT_64BIT_EXTENSIONS (1 << 3)
30#define EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT (1 << 0)
Ben Cheng655a7c02013-10-16 16:09:24 -070031#define EDD_INFO_GEOMETRY_VALID (1 << 1)
32#define EDD_INFO_REMOVABLE (1 << 2)
33#define EDD_INFO_WRITE_VERIFY (1 << 3)
34#define EDD_INFO_MEDIA_CHANGE_NOTIFICATION (1 << 4)
Ben Cheng655a7c02013-10-16 16:09:24 -070035#define EDD_INFO_LOCKABLE (1 << 5)
36#define EDD_INFO_NO_MEDIA_PRESENT (1 << 6)
37#define EDD_INFO_USE_INT13_FN50 (1 << 7)
38struct edd_device_params {
Tao Baod7db5942015-01-28 10:07:51 -080039 __u16 length;
40 __u16 info_flags;
41 __u32 num_default_cylinders;
42 __u32 num_default_heads;
Tao Baod7db5942015-01-28 10:07:51 -080043 __u32 sectors_per_track;
44 __u64 number_of_sectors;
45 __u16 bytes_per_sector;
46 __u32 dpte_ptr;
Tao Baod7db5942015-01-28 10:07:51 -080047 __u16 key;
48 __u8 device_path_info_length;
49 __u8 reserved2;
50 __u16 reserved3;
Tao Baod7db5942015-01-28 10:07:51 -080051 __u8 host_bus_type[4];
52 __u8 interface_type[8];
53 union {
54 struct {
Tao Baod7db5942015-01-28 10:07:51 -080055 __u16 base_address;
56 __u16 reserved1;
57 __u32 reserved2;
58 } __attribute__((packed)) isa;
Tao Baod7db5942015-01-28 10:07:51 -080059 struct {
60 __u8 bus;
61 __u8 slot;
62 __u8 function;
Tao Baod7db5942015-01-28 10:07:51 -080063 __u8 channel;
64 __u32 reserved;
65 } __attribute__((packed)) pci;
66 struct {
Tao Baod7db5942015-01-28 10:07:51 -080067 __u64 reserved;
68 } __attribute__((packed)) ibnd;
69 struct {
70 __u64 reserved;
Tao Baod7db5942015-01-28 10:07:51 -080071 } __attribute__((packed)) xprs;
72 struct {
73 __u64 reserved;
74 } __attribute__((packed)) htpt;
Tao Baod7db5942015-01-28 10:07:51 -080075 struct {
76 __u64 reserved;
77 } __attribute__((packed)) unknown;
78 } interface_path;
Tao Baod7db5942015-01-28 10:07:51 -080079 union {
80 struct {
81 __u8 device;
82 __u8 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -080083 __u16 reserved2;
84 __u32 reserved3;
85 __u64 reserved4;
86 } __attribute__((packed)) ata;
Tao Baod7db5942015-01-28 10:07:51 -080087 struct {
88 __u8 device;
89 __u8 lun;
90 __u8 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -080091 __u8 reserved2;
92 __u32 reserved3;
93 __u64 reserved4;
94 } __attribute__((packed)) atapi;
Tao Baod7db5942015-01-28 10:07:51 -080095 struct {
96 __u16 id;
97 __u64 lun;
98 __u16 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -080099 __u32 reserved2;
100 } __attribute__((packed)) scsi;
101 struct {
102 __u64 serial_number;
Tao Baod7db5942015-01-28 10:07:51 -0800103 __u64 reserved;
104 } __attribute__((packed)) usb;
105 struct {
106 __u64 eui;
Tao Baod7db5942015-01-28 10:07:51 -0800107 __u64 reserved;
108 } __attribute__((packed)) i1394;
109 struct {
110 __u64 wwid;
Tao Baod7db5942015-01-28 10:07:51 -0800111 __u64 lun;
112 } __attribute__((packed)) fibre;
113 struct {
114 __u64 identity_tag;
Tao Baod7db5942015-01-28 10:07:51 -0800115 __u64 reserved;
116 } __attribute__((packed)) i2o;
117 struct {
118 __u32 array_number;
Tao Baod7db5942015-01-28 10:07:51 -0800119 __u32 reserved1;
120 __u64 reserved2;
121 } __attribute__((packed)) raid;
122 struct {
Tao Baod7db5942015-01-28 10:07:51 -0800123 __u8 device;
124 __u8 reserved1;
125 __u16 reserved2;
126 __u32 reserved3;
Tao Baod7db5942015-01-28 10:07:51 -0800127 __u64 reserved4;
128 } __attribute__((packed)) sata;
129 struct {
130 __u64 reserved1;
Tao Baod7db5942015-01-28 10:07:51 -0800131 __u64 reserved2;
132 } __attribute__((packed)) unknown;
133 } device_path;
134 __u8 reserved4;
Tao Baod7db5942015-01-28 10:07:51 -0800135 __u8 checksum;
136} __attribute__((packed));
Ben Cheng655a7c02013-10-16 16:09:24 -0700137struct edd_info {
Tao Baod7db5942015-01-28 10:07:51 -0800138 __u8 device;
Tao Baod7db5942015-01-28 10:07:51 -0800139 __u8 version;
140 __u16 interface_support;
141 __u16 legacy_max_cylinder;
142 __u8 legacy_max_head;
Tao Baod7db5942015-01-28 10:07:51 -0800143 __u8 legacy_sectors_per_track;
144 struct edd_device_params params;
145} __attribute__((packed));
Ben Cheng655a7c02013-10-16 16:09:24 -0700146struct edd {
Tao Baod7db5942015-01-28 10:07:51 -0800147 unsigned int mbr_signature[EDD_MBR_SIG_MAX];
148 struct edd_info edd_info[EDDMAXNR];
149 unsigned char mbr_signature_nr;
150 unsigned char edd_info_nr;
Ben Cheng655a7c02013-10-16 16:09:24 -0700151};
152#endif
153#endif