idedrv Implement DMA reading/writing without IRQ support
This commit is contained in:
@@ -20,7 +20,9 @@ struct idedrv_init {
|
||||
uint16_t io, ctrl;
|
||||
uint8_t devno;
|
||||
uint8_t irq;
|
||||
uint16_t bmbase;
|
||||
bool irqs_support;
|
||||
bool bm_support;
|
||||
};
|
||||
|
||||
struct idedrv_request {
|
||||
@@ -31,6 +33,12 @@ struct idedrv_request {
|
||||
atomic_int done;
|
||||
};
|
||||
|
||||
struct ide_prd_entry {
|
||||
uint32_t phys_addr;
|
||||
uint16_t size;
|
||||
uint16_t rsvd_eot;
|
||||
} PACKED;
|
||||
|
||||
struct idedrv {
|
||||
struct device* device;
|
||||
bool lba48;
|
||||
@@ -41,6 +49,13 @@ struct idedrv {
|
||||
uint8_t irq;
|
||||
struct idedrv_request* current_req;
|
||||
bool irqs_support;
|
||||
uint16_t bmbase;
|
||||
bool bm_support;
|
||||
struct ide_prd_entry* prdt;
|
||||
uintptr_t prdt_phys;
|
||||
size_t prdt_entry_count;
|
||||
uintptr_t bounce_buffer_phys;
|
||||
void* bounce_buffer;
|
||||
};
|
||||
|
||||
struct ide_probe {
|
||||
@@ -50,7 +65,9 @@ struct ide_probe {
|
||||
uint16_t io, ctrl;
|
||||
uint8_t devno;
|
||||
uint8_t irq;
|
||||
uint16_t bmbase;
|
||||
bool irqs_support;
|
||||
bool bm_support;
|
||||
};
|
||||
|
||||
DEFINE_DEVICE_INIT(idedrv_init);
|
||||
|
||||
Reference in New Issue
Block a user