Re: porting IDE patches to PATA driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux