fix: (blkio) enforce disk io buffer size alignment (to block size)
[lunaix-os.git] / lunaix-os / includes / hal / ahci / hba.h
index c60536d6d14b3707796ad76261c90c60bafc30ee..9bebe8e3cd81dfab94900ec7e08c02adc0f3a5e9 100644 (file)
 #define HBA_PxINTR_DMA (1 << 2)
 #define HBA_PxINTR_DHR (1)
 #define HBA_PxINTR_DPS (1 << 5)
-#define HBA_PxINTR_TFEE (1 << 30)
-#define HBA_PxINTR_IFE (1 << 27)
+#define HBA_PxINTR_TFE (1 << 30)
+#define HBA_PxINTR_HBF (1 << 29)
+#define HBA_PxINTR_HBD (1 << 28)
+#define HBA_PxINTR_IF (1 << 27)
+#define HBA_PxINTR_NIF (1 << 26)
+#define HBA_PxINTR_OF (1 << 24)
 #define HBA_PxTFD_ERR (1)
 #define HBA_PxTFD_BSY (1 << 7)
 #define HBA_PxTFD_DRQ (1 << 3)
 
+#define HBA_FATAL                                                              \
+    (HBA_PxINTR_TFE | HBA_PxINTR_HBF | HBA_PxINTR_HBD | HBA_PxINTR_IF)
+
+#define HBA_NONFATAL (HBA_PxINTR_NIF | HBA_PxINTR_OF)
+
 #define HBA_RGHC_ACHI_ENABLE (1 << 31)
 #define HBA_RGHC_INTR_ENABLE (1 << 1)
 #define HBA_RGHC_RESET 1
@@ -98,6 +107,7 @@ struct hba_cmdt
 #define HBA_DEV_FATAPI (1 << 1)
 
 struct hba_port;
+struct ahci_hba;
 
 struct hba_device
 {
@@ -119,6 +129,7 @@ struct hba_device
     uint32_t block_per_sec;
     uint32_t capabilities;
     struct hba_port* port;
+    struct ahci_hba* hba;
 
     struct
     {
@@ -147,6 +158,7 @@ struct hba_port
     struct hba_cmd_context cmdctx;
     void* fis;
     struct hba_device* device;
+    struct ahci_hba* hba;
 };
 
 struct ahci_hba