summaryrefslogtreecommitdiff
path: root/sys/include/dev/ic/ahcivar.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/include/dev/ic/ahcivar.h')
-rw-r--r--sys/include/dev/ic/ahcivar.h146
1 files changed, 0 insertions, 146 deletions
diff --git a/sys/include/dev/ic/ahcivar.h b/sys/include/dev/ic/ahcivar.h
deleted file mode 100644
index edef4f6..0000000
--- a/sys/include/dev/ic/ahcivar.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Hyra nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _AHCIVAR_H_
-#define _AHCIVAR_H_
-
-#include <sys/types.h>
-#include <sys/cdefs.h>
-#include <sys/mutex.h>
-#include <sys/queue.h>
-#include <dev/ic/ahciregs.h>
-
-struct ata_identity {
- uint16_t rsvd0 : 1;
- uint16_t unused0 : 1;
- uint16_t incomplete : 1;
- uint16_t unused1 : 3;
- uint16_t fixed_dev : 1;
- uint16_t removable : 1;
- uint16_t unused2 : 7;
- uint16_t device_type : 1;
- uint16_t ncylinders;
- uint16_t specific_config;
- uint16_t nheads;
- uint16_t unused3[2];
- uint16_t sectors_per_track;
- uint16_t vendor[3];
- char serial_number[20];
- uint16_t unused4[2];
- uint16_t unused5;
- char firmware_rev[8];
- char model_number[40];
- char pad[256];
-};
-
-/* Physical region descriptor table entry */
-struct ahci_prdt_entry {
- uintptr_t dba; /* Data base address */
- uint32_t rsvd0; /* Reserved */
- uint32_t dbc : 22; /* Count */
- uint16_t rsvd1 : 9; /* Reserved */
- uint8_t i : 1; /* Interrupt on completion */
-};
-
-/* Command header */
-struct ahci_cmd_hdr {
- uint8_t cfl : 5; /* Command FIS length */
- uint8_t a : 1; /* ATAPI */
- uint8_t w : 1; /* Write */
- uint8_t p : 1; /* Prefetchable */
- uint8_t r : 1; /* Reset */
- uint8_t c : 1; /* Clear busy upon R_OK */
- uint8_t rsvd0 : 1; /* Reserved */
- uint8_t pmp : 4; /* Port multiplier port */
- uint16_t prdtl; /* PRDT length (in entries) */
- volatile uint32_t prdbc; /* PRDT bytes transferred count */
- uintptr_t ctba; /* Command table descriptor base addr */
- uint32_t rsvd1[4]; /* Reserved */
-};
-
-/* Command table */
-struct ahci_cmdtab {
- uint8_t cfis[64];
- uint8_t acmd[16];
- uint8_t rsvd[48];
- struct ahci_prdt_entry prdt[1];
-};
-
-struct ahci_fis_h2d {
- uint8_t type;
- uint8_t pmp : 4;
- uint8_t rsvd0 : 3;
- uint8_t c : 1;
- uint8_t command;
- uint8_t featurel;
- uint8_t lba0;
- uint8_t lba1;
- uint8_t lba2;
- uint8_t device;
- uint8_t lba3;
- uint8_t lba4;
- uint8_t lba5;
- uint8_t featureh;
- uint8_t countl;
- uint8_t counth;
- uint8_t icc;
- uint8_t control;
- uint8_t rsvd1[4];
-};
-
-struct ahci_device {
- struct ahci_hba *hba;
- struct hba_port *port;
- dev_t minor;
- TAILQ_ENTRY(ahci_device) link;
-};
-
-struct ahci_hba {
- struct hba_memspace *abar;
- struct ahci_cmd_hdr *cmdlist;
- uint32_t ncmdslots;
- uint32_t nports;
-};
-
-/* Commands */
-#define ATA_CMD_NOP 0x00
-#define ATA_CMD_IDENTIFY 0xEC
-#define ATA_CMD_READ_DMA 0x25
-#define ATA_CMD_WRITE_DMA 0x35
-
-/* FIS types */
-#define FIS_TYPE_H2D 0x27
-#define FIS_TYPE_D2H 0x34
-
-#define AHCI_TIMEOUT 500
-#define AHCI_FIS_SIZE 256
-#define AHCI_CMDTAB_SIZE 256
-#define AHCI_CMDENTRY_SIZE 32
-
-#endif /* !_AHCIVAR_H_ */