| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #pragma once |
| |
| #include "ahci.h" |
| |
| #define SATA_CMD_IDENTIFY_DEVICE 0xec |
| #define SATA_CMD_READ_DMA 0xc8 |
| #define SATA_CMD_READ_DMA_EXT 0x25 |
| #define SATA_CMD_READ_FPDMA_QUEUED 0x60 |
| #define SATA_CMD_WRITE_DMA 0xca |
| #define SATA_CMD_WRITE_DMA_EXT 0x35 |
| #define SATA_CMD_WRITE_FPDMA_QUEUED 0x61 |
| |
| #define SATA_DEVINFO_SERIAL 10 |
| #define SATA_DEVINFO_FW_REV 23 |
| #define SATA_DEVINFO_MODEL_ID 27 |
| #define SATA_DEVINFO_CAP 49 |
| #define SATA_DEVINFO_LBA_CAPACITY 60 |
| #define SATA_DEVINFO_QUEUE_DEPTH 75 |
| #define SATA_DEVINFO_SATA_CAP 76 |
| #define SATA_DEVINFO_SATA_CAP2 77 |
| #define SATA_DEVINFO_MAJOR_VERS 80 |
| #define SATA_DEVINFO_CMD_SET_2 83 |
| #define SATA_DEVINFO_LBA_CAPACITY_2 100 |
| #define SATA_DEVINFO_SECTOR_SIZE 106 |
| #define SATA_DEVINFO_LOGICAL_SECTOR_SIZE 117 |
| |
| #define SATA_DEVINFO_SERIAL_LEN 20 |
| #define SATA_DEVINFO_FW_REV_LEN 8 |
| #define SATA_DEVINFO_MODEL_ID_LEN 40 |
| |
| typedef struct sata_pdata { |
| zx_time_t timeout; // for ahci driver watchdog |
| uint64_t lba; // in blocks |
| uint16_t count; // in blocks |
| uint8_t cmd; |
| uint8_t device; |
| int max_cmd; |
| int port; |
| } sata_pdata_t; |
| |
| #define sata_iotxn_pdata(txn) iotxn_pdata(txn, sata_pdata_t) |
| |
| zx_status_t sata_bind(zx_device_t* dev, int port); |