Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/i386/common/edd.h
34865 views
1
/*-
2
* Copyright (c) 2011 Hudson River Trading LLC
3
* Written by: John H. Baldwin <[email protected]>
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
* SUCH DAMAGE.
26
*/
27
28
#ifndef _EDD_H_
29
#define _EDD_H_
30
31
/* Supported interfaces for "Check Extensions Present". */
32
#define EDD_INTERFACE_FIXED_DISK 0x01
33
#define EDD_INTERFACE_EJECT 0x02
34
#define EDD_INTERFACE_EDD 0x04
35
36
struct edd_packet {
37
uint16_t len;
38
uint16_t count;
39
uint16_t off;
40
uint16_t seg;
41
uint64_t lba;
42
};
43
44
struct edd_packet_v3 {
45
uint16_t len;
46
uint16_t count;
47
uint16_t off;
48
uint16_t seg;
49
uint64_t lba;
50
uint64_t phys_addr;
51
};
52
53
struct edd_params {
54
uint16_t len;
55
uint16_t flags;
56
uint32_t cylinders;
57
uint32_t heads;
58
uint32_t sectors_per_track;
59
uint64_t sectors;
60
uint16_t sector_size;
61
uint16_t edd_params_seg;
62
uint16_t edd_params_off;
63
} __packed;
64
65
struct edd_device_path_v3 {
66
uint16_t key;
67
uint8_t len;
68
uint8_t reserved[3];
69
char host_bus[4];
70
char interface[8];
71
uint64_t interface_path;
72
uint64_t device_path[2];
73
uint8_t reserved2[1];
74
uint8_t checksum;
75
} __packed;
76
77
struct edd_params_v3 {
78
struct edd_params params;
79
struct edd_device_path_v3 device_path;
80
} __packed;
81
82
#define EDD_FLAGS_DMA_BOUNDARY_HANDLING 0x0001
83
#define EDD_FLAGS_REMOVABLE_MEDIA 0x0002
84
#define EDD_FLAGS_WRITE_VERIFY 0x0004
85
#define EDD_FLAGS_MEDIA_CHANGE_NOTIFICATION 0x0008
86
#define EDD_FLAGS_LOCKABLE_MEDIA 0x0010
87
#define EDD_FLAGS_NO_MEDIA_PRESENT 0x0020
88
89
#define EDD_DEVICE_PATH_KEY 0xbedd
90
91
#define EDD_QUERY_MAGIC 0x55aa
92
#define EDD_INSTALLED 0xaa55
93
94
#endif /* !_EDD_H_ */
95
96