clicky
clicky copied to clipboard
ide: Use Spawner for updating registers, add delay
I recently noticed that iPodLinux was struggling to boot due to the IDE IRQ handler being set right after sending IDE commands, causing the IDE IRQ to be not handled properly. A little delay and exposing register updates makes iPodLinux boot go a little further.
This PR introduces a task_spawner member to IDE driver for deferring operation. It also adds basic implementations of Recal/ReadNativeMax.
A significant amount of code is due to the use of Arc<RwLock<IdeRegs>> for thread safety.
Work in ReadSectors still needs to be done to consider hda initialization in iPodLinux to be completely working.