12ed5f78aSToomas Soome /* 2199767f8SToomas Soome * Copyright (c) 2011 Hudson River Trading LLC 3199767f8SToomas Soome * Written by: John H. Baldwin <jhb@FreeBSD.org> 4199767f8SToomas Soome * All rights reserved. 5199767f8SToomas Soome * 6199767f8SToomas Soome * Redistribution and use in source and binary forms, with or without 7199767f8SToomas Soome * modification, are permitted provided that the following conditions 8199767f8SToomas Soome * are met: 9199767f8SToomas Soome * 1. Redistributions of source code must retain the above copyright 10199767f8SToomas Soome * notice, this list of conditions and the following disclaimer. 11199767f8SToomas Soome * 2. Redistributions in binary form must reproduce the above copyright 12199767f8SToomas Soome * notice, this list of conditions and the following disclaimer in the 13199767f8SToomas Soome * documentation and/or other materials provided with the distribution. 14199767f8SToomas Soome * 15199767f8SToomas Soome * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16199767f8SToomas Soome * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17199767f8SToomas Soome * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18199767f8SToomas Soome * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19199767f8SToomas Soome * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20199767f8SToomas Soome * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21199767f8SToomas Soome * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22199767f8SToomas Soome * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23199767f8SToomas Soome * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24199767f8SToomas Soome * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25199767f8SToomas Soome * SUCH DAMAGE. 26199767f8SToomas Soome */ 27199767f8SToomas Soome 28199767f8SToomas Soome #ifndef _EDD_H_ 29199767f8SToomas Soome #define _EDD_H_ 30199767f8SToomas Soome 31199767f8SToomas Soome /* Supported interfaces for "Check Extensions Present". */ 32199767f8SToomas Soome #define EDD_INTERFACE_FIXED_DISK 0x01 33199767f8SToomas Soome #define EDD_INTERFACE_EJECT 0x02 34199767f8SToomas Soome #define EDD_INTERFACE_EDD 0x04 35199767f8SToomas Soome 36199767f8SToomas Soome struct edd_packet { 37199767f8SToomas Soome uint16_t len; 38199767f8SToomas Soome uint16_t count; 39199767f8SToomas Soome uint16_t off; 40199767f8SToomas Soome uint16_t seg; 41199767f8SToomas Soome uint64_t lba; 42199767f8SToomas Soome }; 43199767f8SToomas Soome 44199767f8SToomas Soome struct edd_packet_v3 { 45199767f8SToomas Soome uint16_t len; 46199767f8SToomas Soome uint16_t count; 47199767f8SToomas Soome uint16_t off; 48199767f8SToomas Soome uint16_t seg; 49199767f8SToomas Soome uint64_t lba; 50199767f8SToomas Soome uint64_t phys_addr; 51199767f8SToomas Soome }; 52199767f8SToomas Soome 53199767f8SToomas Soome struct edd_params { 54199767f8SToomas Soome uint16_t len; 55199767f8SToomas Soome uint16_t flags; 56199767f8SToomas Soome uint32_t cylinders; 57199767f8SToomas Soome uint32_t heads; 58199767f8SToomas Soome uint32_t sectors_per_track; 59199767f8SToomas Soome uint64_t sectors; 60199767f8SToomas Soome uint16_t sector_size; 61199767f8SToomas Soome uint16_t edd_params_seg; 62199767f8SToomas Soome uint16_t edd_params_off; 63199767f8SToomas Soome } __packed; 64199767f8SToomas Soome 65199767f8SToomas Soome struct edd_device_path_v3 { 66199767f8SToomas Soome uint16_t key; 67199767f8SToomas Soome uint8_t len; 68199767f8SToomas Soome uint8_t reserved[3]; 69199767f8SToomas Soome char host_bus[4]; 70199767f8SToomas Soome char interface[8]; 71199767f8SToomas Soome uint64_t interface_path; 724e59aad1SToomas Soome uint64_t device_path[2]; 73199767f8SToomas Soome uint8_t reserved2[1]; 74199767f8SToomas Soome uint8_t checksum; 75199767f8SToomas Soome } __packed; 76199767f8SToomas Soome 77199767f8SToomas Soome struct edd_params_v3 { 78199767f8SToomas Soome struct edd_params params; 79199767f8SToomas Soome struct edd_device_path_v3 device_path; 80199767f8SToomas Soome } __packed; 81199767f8SToomas Soome 82199767f8SToomas Soome #define EDD_FLAGS_DMA_BOUNDARY_HANDLING 0x0001 83199767f8SToomas Soome #define EDD_FLAGS_REMOVABLE_MEDIA 0x0002 84199767f8SToomas Soome #define EDD_FLAGS_WRITE_VERIFY 0x0004 85199767f8SToomas Soome #define EDD_FLAGS_MEDIA_CHANGE_NOTIFICATION 0x0008 86199767f8SToomas Soome #define EDD_FLAGS_LOCKABLE_MEDIA 0x0010 87199767f8SToomas Soome #define EDD_FLAGS_NO_MEDIA_PRESENT 0x0020 88199767f8SToomas Soome 89199767f8SToomas Soome #define EDD_DEVICE_PATH_KEY 0xbedd 90199767f8SToomas Soome 912ed5f78aSToomas Soome #define EDD_QUERY_MAGIC 0x55aa 922ed5f78aSToomas Soome #define EDD_INSTALLED 0xaa55 932ed5f78aSToomas Soome 94199767f8SToomas Soome #endif /* !_EDD_H_ */ 95