/* Return the cable type attached to this port  */
static int hpt374_fn1_cable_detect(struct ata_port *ap)
/* Return the cable type attached to this port  */
static int hpt374_fn1_cable_detect(struct ata_port *ap)
{
	struct pci_dev *pdev = to_pci_dev(ap->host->dev);
	unsigned int mcrbase = 0x50 + 4 * ap->port_no;
	u16 mcr3;
	u8 ata66;
	pci_read_config_word(pdev, mcrbase + 2, &mcr3);
	pci_write_config_word(pdev, mcrbase + 2, mcr3 | 0x8000);
	pci_read_config_byte(pdev, 0x5A, &ata66);
	pci_write_config_word(pdev, mcrbase + 2, mcr3);
	if (ata66 & (2 >> ap->port_no))
		return ATA_CBL_PATA40;
	else
		return ATA_CBL_PATA80;
}