refactor: change the disk io api to accept device instead of port struct
[lunaix-os.git] / lunaix-os / includes / hal / ahci / hba.h
index 19f76cd08603f8e57272d57685a7e01a586c0c43..91ecfedc3545ef4b34d7f3d57d2bedfe6f22c2a5 100644 (file)
@@ -32,6 +32,7 @@
 #define HBA_PxCMD_ST (1)
 #define HBA_PxINTR_DMA (1 << 2)
 #define HBA_PxINTR_D2HR (1)
+#define HBA_PxINTR_DPE (1 << 5)
 #define HBA_PxTFD_ERR (1)
 #define HBA_PxTFD_BSY (1 << 7)
 #define HBA_PxTFD_DRQ (1 << 3)
@@ -101,15 +102,19 @@ struct hba_device
     uint8_t cbd_size;
     uint8_t last_error;
     uint8_t last_status;
+    uint32_t alignment_offset;
+    uint32_t block_per_sec;
+    uint32_t capabilities;
+    struct hba_port* port;
 
     struct
     {
-        int (*identify)(struct hba_port* port);
-        int (*read_buffer)(struct hba_port* port,
+        int (*identify)(struct hba_device* dev);
+        int (*read_buffer)(struct hba_device* dev,
                            uint64_t lba,
                            void* buffer,
                            uint32_t size);
-        int (*write_buffer)(struct hba_port* port,
+        int (*write_buffer)(struct hba_device* dev,
                             uint64_t lba,
                             void* buffer,
                             uint32_t size);
@@ -136,9 +141,10 @@ struct ahci_hba
 };
 
 int
-hba_alloc_slot(struct hba_port* port,
-               struct hba_cmdt** cmdt,
-               struct hba_cmdh** cmdh,
-               uint16_t header_options);
+hba_prepare_cmd(struct hba_port* port,
+                struct hba_cmdt** cmdt,
+                struct hba_cmdh** cmdh,
+                void* buffer,
+                unsigned int size);
 
 #endif /* __LUNAIX_HBA_H */