XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations
ahci.h File Reference
#include <stdint.h>
#include <Fs/vfs.h>
Include dependency graph for ahci.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _hba_port_
 
struct  _hba_mem_
 
struct  _hba_cmd_prdt_
 
struct  _hba_cmd_tbl_
 
struct  _fis_data_
 
struct  _fis_pio_setup_
 
struct  _fis_reg_h2d_
 
struct  _fis_reg_d2h_
 
struct  _fis_dma_setup_
 
struct  _hba_fis_
 
struct  _cmd_list_hdr_
 
struct  _AHCI_Controller_
 

Macros

#define PX_CMD_START   1
 
#define PX_CMD_POD   2
 
#define PX_CMD_SUD   4
 
#define PX_CMD_FRE   (1<<4)
 
#define PX_CMD_FR   (1<<14)
 
#define PX_CMD_CR   (1<<15)
 
#define PX_CMD_ATAPI   (1<<24)
 
#define PX_SCTL_NODETECT   0x0
 
#define PX_SCTL_DETECT   0x1
 
#define PX_SCTL_NOSPEEDLIM   0x0
 
#define PX_SCTL_PM_DISABLE   (0x7 << 8)
 
#define PX_TFD_ERR   1
 
#define PX_TFD_DRQ   (1<<3)
 
#define PX_TFD_BUSY   (1<<7)
 
#define GHC_BOHC_OOC   (1<<3)
 
#define GHC_BOHC_OOS   (1<<1)
 
#define GHC_BOHC_SMIE   4
 
#define GHC_BOHC_BB   0x10
 
#define GHC_BOHC_BOS   1
 
#define GHC_CAP2_BOH   1
 
#define FIS_TYPE_REG_H2D   0x27
 
#define FIS_TYPE_REG_D2H   0x34
 
#define FIS_TYPE_DMA_ACT   0x39
 
#define FIS_TYPE_DMA_SETUP   0x41
 
#define FIS_TYPE_DATA   0x46
 
#define FIS_TYPE_BIST   0x58
 
#define FIS_TYPE_PIO_SETUP   0x5F
 
#define FIS_TYPE_DEV_BITS   0xA1
 
#define ATA_CMD_IDENTIFY   0xEC
 Ata commands.
 
#define ATA_CMD_READ_DMA   0xC8
 
#define ATA_CMD_READ_DMA_EXT   0x25
 
#define ATA_CMD_WRITE_DMA   0xCA
 
#define ATA_CMD_WRITE_DMA_EXT   0x35
 
#define ATA_CMD_PACKET   0xA0
 
#define FIS_REG_H2D_CTRL_INTERRUPT   (1<<7)
 
#define HBA_CMD_PRDT_DBC_INTERRUPT   (1<<31)
 
#define SCTL_PORT_DET_INIT   0x1
 
#define SCTL_PORT_IPM_NOPART   0x100
 
#define SCTL_PORT_IPM_NOSLUM   0x200
 
#define SCTL_PORT_IPM_NODSLP   0x400
 
#define PX_SCTL_IPM_MASK   0xf << 8
 
#define PX_SCTL_IPM_ACTIVE   0x1 << 8
 
#define PX_SCTL_IPM_NONE   0x3 << 8
 
#define HBA_PX_SSTS_DET   0xfULL
 
#define HBA_PX_SSTS_DET_INIT   1
 
#define HBA_PX_SSTS_DET_PRESENT   3
 
#define HBA_PX_IS_TFES   (1<<30)
 
#define HBA_PX_CMD_ICC   (0xf << 28)
 
#define HBA_PX_CMD_ICC_ACTIVE   (1<<28)
 

Typedefs

typedef struct _hba_port_ HBA_PORT
 
typedef struct _hba_mem_ HBA_MEM
 
typedef struct _hba_cmd_prdt_ HBA_CMD_PRDT
 
typedef struct _hba_cmd_tbl_ HBA_CMD_TABLE
 
typedef struct _fis_data_ FIS_DATA
 
typedef struct _fis_pio_setup_ FIS_PIO_SETUP
 
typedef struct _fis_reg_h2d_ FIS_REG_H2D
 
typedef struct _fis_reg_d2h_ FIS_REG_D2H
 
typedef struct _fis_dma_setup_ FIS_DMA_SETUP
 
typedef struct _hba_fis_ HBA_FIS
 
typedef struct _cmd_list_hdr_ HBA_CMD_HEADER
 
typedef struct _AHCI_Controller_ AHCIController
 

Enumerations

enum  PORT_REGISTERS {
  Px_CLB = 0 , Px_CLBU = 4 , Px_FB = 8 , Px_FBU = 0xC ,
  Px_IS = 0x10 , Px_IE = 0x14 , Px_CMD = 0x18 , Px_TFD = 0x20 ,
  Px_SIG = 0x24 , Px_SSTS = 0x28 , Px_SCTL = 0x2C , Px_SERR = 0x30 ,
  Px_SACT = 0x34 , Px_CI = 0x38 , Px_SNTF = 0x3C , Px_FBS = 0x40 ,
  Px_DEVSLP = 0x44
}
 

Macro Definition Documentation

◆ ATA_CMD_IDENTIFY

#define ATA_CMD_IDENTIFY   0xEC

Ata commands.

◆ ATA_CMD_PACKET

#define ATA_CMD_PACKET   0xA0

◆ ATA_CMD_READ_DMA

#define ATA_CMD_READ_DMA   0xC8

◆ ATA_CMD_READ_DMA_EXT

#define ATA_CMD_READ_DMA_EXT   0x25

◆ ATA_CMD_WRITE_DMA

#define ATA_CMD_WRITE_DMA   0xCA

◆ ATA_CMD_WRITE_DMA_EXT

#define ATA_CMD_WRITE_DMA_EXT   0x35

◆ FIS_REG_H2D_CTRL_INTERRUPT

#define FIS_REG_H2D_CTRL_INTERRUPT   (1<<7)

◆ FIS_TYPE_BIST

#define FIS_TYPE_BIST   0x58

◆ FIS_TYPE_DATA

#define FIS_TYPE_DATA   0x46

◆ FIS_TYPE_DEV_BITS

#define FIS_TYPE_DEV_BITS   0xA1

◆ FIS_TYPE_DMA_ACT

#define FIS_TYPE_DMA_ACT   0x39

◆ FIS_TYPE_DMA_SETUP

#define FIS_TYPE_DMA_SETUP   0x41

◆ FIS_TYPE_PIO_SETUP

#define FIS_TYPE_PIO_SETUP   0x5F

◆ FIS_TYPE_REG_D2H

#define FIS_TYPE_REG_D2H   0x34

◆ FIS_TYPE_REG_H2D

#define FIS_TYPE_REG_H2D   0x27

◆ GHC_BOHC_BB

#define GHC_BOHC_BB   0x10

◆ GHC_BOHC_BOS

#define GHC_BOHC_BOS   1

◆ GHC_BOHC_OOC

#define GHC_BOHC_OOC   (1<<3)

◆ GHC_BOHC_OOS

#define GHC_BOHC_OOS   (1<<1)

◆ GHC_BOHC_SMIE

#define GHC_BOHC_SMIE   4

◆ GHC_CAP2_BOH

#define GHC_CAP2_BOH   1

◆ HBA_CMD_PRDT_DBC_INTERRUPT

#define HBA_CMD_PRDT_DBC_INTERRUPT   (1<<31)

◆ HBA_PX_CMD_ICC

#define HBA_PX_CMD_ICC   (0xf << 28)

◆ HBA_PX_CMD_ICC_ACTIVE

#define HBA_PX_CMD_ICC_ACTIVE   (1<<28)

◆ HBA_PX_IS_TFES

#define HBA_PX_IS_TFES   (1<<30)

◆ HBA_PX_SSTS_DET

#define HBA_PX_SSTS_DET   0xfULL

◆ HBA_PX_SSTS_DET_INIT

#define HBA_PX_SSTS_DET_INIT   1

◆ HBA_PX_SSTS_DET_PRESENT

#define HBA_PX_SSTS_DET_PRESENT   3

◆ PX_CMD_ATAPI

#define PX_CMD_ATAPI   (1<<24)

◆ PX_CMD_CR

#define PX_CMD_CR   (1<<15)

◆ PX_CMD_FR

#define PX_CMD_FR   (1<<14)

◆ PX_CMD_FRE

#define PX_CMD_FRE   (1<<4)

◆ PX_CMD_POD

#define PX_CMD_POD   2

◆ PX_CMD_START

#define PX_CMD_START   1

BSD 2-Clause License

Copyright (c) 2022-2024, Manas Kamal Choudhury 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.

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 HOLDER 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.

◆ PX_CMD_SUD

#define PX_CMD_SUD   4

◆ PX_SCTL_DETECT

#define PX_SCTL_DETECT   0x1

◆ PX_SCTL_IPM_ACTIVE

#define PX_SCTL_IPM_ACTIVE   0x1 << 8

◆ PX_SCTL_IPM_MASK

#define PX_SCTL_IPM_MASK   0xf << 8

◆ PX_SCTL_IPM_NONE

#define PX_SCTL_IPM_NONE   0x3 << 8

◆ PX_SCTL_NODETECT

#define PX_SCTL_NODETECT   0x0

◆ PX_SCTL_NOSPEEDLIM

#define PX_SCTL_NOSPEEDLIM   0x0

◆ PX_SCTL_PM_DISABLE

#define PX_SCTL_PM_DISABLE   (0x7 << 8)

◆ PX_TFD_BUSY

#define PX_TFD_BUSY   (1<<7)

◆ PX_TFD_DRQ

#define PX_TFD_DRQ   (1<<3)

◆ PX_TFD_ERR

#define PX_TFD_ERR   1

◆ SCTL_PORT_DET_INIT

#define SCTL_PORT_DET_INIT   0x1

◆ SCTL_PORT_IPM_NODSLP

#define SCTL_PORT_IPM_NODSLP   0x400

◆ SCTL_PORT_IPM_NOPART

#define SCTL_PORT_IPM_NOPART   0x100

◆ SCTL_PORT_IPM_NOSLUM

#define SCTL_PORT_IPM_NOSLUM   0x200

Typedef Documentation

◆ AHCIController

◆ FIS_DATA

typedef struct _fis_data_ FIS_DATA

◆ FIS_DMA_SETUP

◆ FIS_PIO_SETUP

◆ FIS_REG_D2H

typedef struct _fis_reg_d2h_ FIS_REG_D2H

◆ FIS_REG_H2D

typedef struct _fis_reg_h2d_ FIS_REG_H2D

◆ HBA_CMD_HEADER

◆ HBA_CMD_PRDT

typedef struct _hba_cmd_prdt_ HBA_CMD_PRDT

◆ HBA_CMD_TABLE

typedef struct _hba_cmd_tbl_ HBA_CMD_TABLE

◆ HBA_FIS

typedef struct _hba_fis_ HBA_FIS

◆ HBA_MEM

typedef struct _hba_mem_ HBA_MEM

◆ HBA_PORT

typedef struct _hba_port_ HBA_PORT

Enumeration Type Documentation

◆ PORT_REGISTERS

Enumerator
Px_CLB 
Px_CLBU 
Px_FB 
Px_FBU 
Px_IS 
Px_IE 
Px_CMD 
Px_TFD 
Px_SIG 
Px_SSTS 
Px_SCTL 
Px_SERR 
Px_SACT 
Px_CI 
Px_SNTF 
Px_FBS 
Px_DEVSLP