Hello.
Alan Cox wrote:
controller switches to a specific DVD-LOADER mode as soon as kernel
sends any command to the slave device, so they had to patch sources
and add a strange looking command
OUT_BYTE((head|drive->select.all) & ~(1<<4), IDE_SELECT_REG);
everywhere the slave device is accessed to cheat the controller and
let it believe it talks to the master. Slave device remains active
because it was already selected but the controller assumes we are
talking to the master and does not switch to DVD-LOADER mode.
That can be done in a libata driver by providing your own exec_command
functions but again could wait. Try something like
static void my_sff_exec_command(struct ata_port *ap, const struct
ata_taskfile *tf)
{
iowrite8(tf->command, ap->ioaddr.command_addr);
if (tf->flags & ATA_TFLAG_DEVICE)
iowrite8(tf->device & ~ATA_DEV1, ap->ioaddr.device_addr);
Note that this possibly violates ATA specs that forbid writing to any
register with BSY set -- which might well be after wroiting a command,
despite 400 ns couldn't have passed yet. IOW, I don't advice such
trickery -- your write may well be ignored.
ata_sff_pause(ap);
}
MBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html