pata_hpt366: fix cable detection,
pata_hpt366 is strange in that its two channels occupy two PCI functions and both are primary channels and bit1 of PCI configuration register 0x5A indicates cable for both channels. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
d10d491f84
commit
bab5b32a53
@ -211,11 +211,15 @@ static u32 hpt36x_find_mode(struct ata_port *ap, int speed)
|
||||
|
||||
static int hpt36x_cable_detect(struct ata_port *ap)
|
||||
{
|
||||
u8 ata66;
|
||||
struct pci_dev *pdev = to_pci_dev(ap->host->dev);
|
||||
u8 ata66;
|
||||
|
||||
/*
|
||||
* Each channel of pata_hpt366 occupies separate PCI function
|
||||
* as the primary channel and bit1 indicates the cable type.
|
||||
*/
|
||||
pci_read_config_byte(pdev, 0x5A, &ata66);
|
||||
if (ata66 & (1 << ap->port_no))
|
||||
if (ata66 & 2)
|
||||
return ATA_CBL_PATA40;
|
||||
return ATA_CBL_PATA80;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user