Mac OS SCSI Manager starts the DMA engine after issuing
a data transfer command to the controller. The device will
assert REQ, then sit and wait for the DMA engine to transfer
data.
Be OS driver does that in the reverse order: the DMA engine
is initialized first, then the controller is instructed to
transfer data.
This commit adds support for both ways.
ScsiCdrom has an inquiry method that overloads a method in CdromDrive. Make it so that it's a valid override (not overloaded).
For CdromDrive, allow inquiry method to work with lengths <> 36 like the SCSI versions.
For ScsiHarDisk, the inquiry method is not on override or an overload, but make it like the ScsiCdrom version anyway.
WRITE_VALUE_AND_LOG logs the value that was written to the register and the result that can be read from the register. Use this if you need to write the register before acting upon the changes to the register and use return instead of break to bypass the default path which also calls WRITE_VALUE_AND_LOG after the switch statement.
If the ENET ROM begins with 0x10, then the bits of each byte are flipped 7..0 -> 0..7 which means the MAC address will begin with 0x08.
A MAC address beginning with 0x08 can be bit-flipped or not bit-flipped.
A MAC address cannot begin with 0x10.
I have a `dump-device-tree` output for a Power Mac 9500 with MAC address beginning with 08-00-07 (OUI for "Apple, Inc."). I don't know if it's using the bit-flipped ROM (starting with 10) or not bit-flipped ROM (starting with 08).
Most of the other `dump-device-tree` outputs I've seen have a MAC address beginning with an OUI for "Apple, Inc." that begins with 00.
Rename int_drive to drive_1 or selected_drive which is selected by a new mode_change method.
mode_change fixes some logic issues with the original code with regards to changes to SWIM3_GO and SWIM3_GO_STEP bits.