1226748Sjhb/*- 2283927Sjhb * Copyright (c) 2011 Hudson River Trading LLC 3226748Sjhb * Written by: John H. Baldwin <jhb@FreeBSD.org> 4226748Sjhb * All rights reserved. 5226748Sjhb * 6226748Sjhb * Redistribution and use in source and binary forms, with or without 7226748Sjhb * modification, are permitted provided that the following conditions 8226748Sjhb * are met: 9226748Sjhb * 1. Redistributions of source code must retain the above copyright 10226748Sjhb * notice, this list of conditions and the following disclaimer. 11226748Sjhb * 2. Redistributions in binary form must reproduce the above copyright 12226748Sjhb * notice, this list of conditions and the following disclaimer in the 13226748Sjhb * documentation and/or other materials provided with the distribution. 14226748Sjhb * 15226748Sjhb * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16226748Sjhb * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17226748Sjhb * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18226748Sjhb * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19226748Sjhb * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20226748Sjhb * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21226748Sjhb * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22226748Sjhb * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23226748Sjhb * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24226748Sjhb * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25226748Sjhb * SUCH DAMAGE. 26226748Sjhb * 27226748Sjhb * $FreeBSD$ 28226748Sjhb */ 29226748Sjhb 30226748Sjhb#ifndef _EDD_H_ 31226748Sjhb#define _EDD_H_ 32226748Sjhb 33226748Sjhb/* Supported interfaces for "Check Extensions Present". */ 34226748Sjhb#define EDD_INTERFACE_FIXED_DISK 0x01 35226748Sjhb#define EDD_INTERFACE_EJECT 0x02 36226748Sjhb#define EDD_INTERFACE_EDD 0x04 37226748Sjhb 38226748Sjhbstruct edd_packet { 39226748Sjhb uint16_t len; 40226748Sjhb uint16_t count; 41226748Sjhb uint16_t off; 42226748Sjhb uint16_t seg; 43226748Sjhb uint64_t lba; 44226748Sjhb}; 45226748Sjhb 46226748Sjhbstruct edd_packet_v3 { 47226748Sjhb uint16_t len; 48226748Sjhb uint16_t count; 49226748Sjhb uint16_t off; 50226748Sjhb uint16_t seg; 51226748Sjhb uint64_t lba; 52226748Sjhb uint64_t phys_addr; 53226748Sjhb}; 54226748Sjhb 55226748Sjhbstruct edd_params { 56226748Sjhb uint16_t len; 57226748Sjhb uint16_t flags; 58226748Sjhb uint32_t cylinders; 59226748Sjhb uint32_t heads; 60226748Sjhb uint32_t sectors_per_track; 61226748Sjhb uint64_t sectors; 62226748Sjhb uint16_t sector_size; 63226748Sjhb uint16_t edd_params_seg; 64226748Sjhb uint16_t edd_params_off; 65243025Savg} __packed; 66226748Sjhb 67226748Sjhbstruct edd_device_path_v3 { 68226748Sjhb uint16_t key; 69226748Sjhb uint8_t len; 70226748Sjhb uint8_t reserved[3]; 71226748Sjhb char host_bus[4]; 72226748Sjhb char interface[8]; 73226748Sjhb uint64_t interface_path; 74226748Sjhb uint64_t device_path; 75226748Sjhb uint8_t reserved2[1]; 76226748Sjhb uint8_t checksum; 77243025Savg} __packed; 78226748Sjhb 79226748Sjhbstruct edd_params_v3 { 80226748Sjhb struct edd_params params; 81226748Sjhb struct edd_device_path_v3 device_path; 82243025Savg} __packed; 83226748Sjhb 84226748Sjhbstruct edd_device_path_v4 { 85226748Sjhb uint16_t key; 86226748Sjhb uint8_t len; 87226748Sjhb uint8_t reserved[3]; 88226748Sjhb char host_bus[4]; 89226748Sjhb char interface[8]; 90226748Sjhb uint64_t interface_path; 91226748Sjhb uint64_t device_path[2]; 92226748Sjhb uint8_t reserved2[1]; 93226748Sjhb uint8_t checksum; 94243025Savg} __packed; 95226748Sjhb 96226748Sjhbstruct edd_params_v4 { 97226748Sjhb struct edd_params params; 98226748Sjhb struct edd_device_path_v4 device_path; 99243025Savg} __packed; 100226748Sjhb 101226748Sjhb#define EDD_FLAGS_DMA_BOUNDARY_HANDLING 0x0001 102226748Sjhb#define EDD_FLAGS_REMOVABLE_MEDIA 0x0002 103226748Sjhb#define EDD_FLAGS_WRITE_VERIFY 0x0004 104226748Sjhb#define EDD_FLAGS_MEDIA_CHANGE_NOTIFICATION 0x0008 105226748Sjhb#define EDD_FLAGS_LOCKABLE_MEDIA 0x0010 106226748Sjhb#define EDD_FLAGS_NO_MEDIA_PRESENT 0x0020 107226748Sjhb 108226748Sjhb#define EDD_DEVICE_PATH_KEY 0xbedd 109226748Sjhb 110226748Sjhb#endif /* !_EDD_H_ */ 111