mirror of
https://github.com/xcat2/xNBA.git
synced 2025-02-19 03:54:38 +00:00
[ata] Add support for describing an ATA device using EDD
Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
bddc3835ac
commit
f8fa23b183
@ -27,6 +27,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
#include <ipxe/list.h>
|
||||
#include <ipxe/interface.h>
|
||||
#include <ipxe/blockdev.h>
|
||||
#include <ipxe/edd.h>
|
||||
#include <ipxe/ata.h>
|
||||
|
||||
/** @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 */
|
||||
static struct interface_operation atadev_block_op[] = {
|
||||
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 *,
|
||||
atadev_read_capacity ),
|
||||
INTF_OP ( intf_close, struct ata_device *, atadev_close ),
|
||||
INTF_OP ( edd_describe, struct ata_device *, atadev_edd_describe ),
|
||||
};
|
||||
|
||||
/** ATA device block interface descriptor */
|
||||
|
Loading…
x
Reference in New Issue
Block a user