mirror of https://github.com/ipxe/ipxe.git
[ata] Add support for describing an ATA device using EDD
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/1/head
parent
bddc3835ac
commit
f8fa23b183
|
@ -27,6 +27,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||||
#include <ipxe/list.h>
|
#include <ipxe/list.h>
|
||||||
#include <ipxe/interface.h>
|
#include <ipxe/interface.h>
|
||||||
#include <ipxe/blockdev.h>
|
#include <ipxe/blockdev.h>
|
||||||
|
#include <ipxe/edd.h>
|
||||||
#include <ipxe/ata.h>
|
#include <ipxe/ata.h>
|
||||||
|
|
||||||
/** @file
|
/** @file
|
||||||
|
@ -602,6 +603,23 @@ static void atadev_close ( struct ata_device *atadev, int rc ) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describe ATA device using EDD
|
||||||
|
*
|
||||||
|
* @v atadev ATA device
|
||||||
|
* @v type EDD interface type
|
||||||
|
* @v path EDD device path
|
||||||
|
* @ret rc Return status code
|
||||||
|
*/
|
||||||
|
static int atadev_edd_describe ( struct ata_device *atadev,
|
||||||
|
struct edd_interface_type *type,
|
||||||
|
union edd_device_path *path ) {
|
||||||
|
|
||||||
|
type->type = cpu_to_le64 ( EDD_INTF_TYPE_ATA );
|
||||||
|
path->ata.slave = ( ( atadev->device == ATA_DEV_SLAVE ) ? 0x01 : 0x00 );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** ATA device block interface operations */
|
/** ATA device block interface operations */
|
||||||
static struct interface_operation atadev_block_op[] = {
|
static struct interface_operation atadev_block_op[] = {
|
||||||
INTF_OP ( block_read, struct ata_device *, atadev_read ),
|
INTF_OP ( block_read, struct ata_device *, atadev_read ),
|
||||||
|
@ -609,6 +627,7 @@ static struct interface_operation atadev_block_op[] = {
|
||||||
INTF_OP ( block_read_capacity, struct ata_device *,
|
INTF_OP ( block_read_capacity, struct ata_device *,
|
||||||
atadev_read_capacity ),
|
atadev_read_capacity ),
|
||||||
INTF_OP ( intf_close, struct ata_device *, atadev_close ),
|
INTF_OP ( intf_close, struct ata_device *, atadev_close ),
|
||||||
|
INTF_OP ( edd_describe, struct ata_device *, atadev_edd_describe ),
|
||||||
};
|
};
|
||||||
|
|
||||||
/** ATA device block interface descriptor */
|
/** ATA device block interface descriptor */
|
||||||
|
|
Loading…
Reference in New Issue