refactor: send the command with retry and error detection
[lunaix-os.git] / lunaix-os / includes / hal / ahci / scsi.h
index 5015641086c5fb3a9103dc1b1cc817c23c7db183..a3cfe2f3457560f5165f06d1749a021db8800b2d 100644 (file)
@@ -14,6 +14,9 @@
 #define SCSI_WRITE_BLOCKS_16 0x8a
 #define SCSI_WRITE_BLOCKS_12 0xaa
 
+#define SCSI_CDB16 16
+#define SCSI_CDB12 12
+
 struct scsi_cdb12
 {
     uint8_t opcode;
@@ -44,8 +47,22 @@ scsi_create_packet12(struct scsi_cdb12* cdb,
 void
 scsi_create_packet16(struct scsi_cdb16* cdb,
                      uint8_t opcode,
-                     uint32_t lba_hi,
-                     uint32_t lba_lo,
+                     uint64_t lba,
                      uint32_t alloc_size);
 
+int
+scsi_read_buffer(struct hba_device* dev,
+                 uint64_t lba,
+                 void* buffer,
+                 uint32_t size);
+
+int
+scsi_write_buffer(struct hba_device* dev,
+                  uint64_t lba,
+                  void* buffer,
+                  uint32_t size);
+
+void
+scsi_parse_capacity(struct hba_device* device, uint32_t* parameter);
+
 #endif /* __LUNAIX_ATAPI_H */