Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 307c6054 authored by Alan Cox's avatar Alan Cox Committed by Jeff Garzik
Browse files

pata_marvell: Cable and reset fixes



There are two changes here. Firstly we switch to a cable detect method,
secondly the old code forgot to call ata_std_prereset() but somehow
managed to work anyway. Fix the missing call.

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 5816fbbf
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
#include <linux/ata.h>

#define DRV_NAME	"pata_marvell"
#define DRV_VERSION	"0.1.1"
#define DRV_VERSION	"0.1.4"

/**
 *	marvell_pre_reset	-	check for 40/80 pin
@@ -52,22 +52,23 @@ static int marvell_pre_reset(struct ata_port *ap)
	if ((pdev->device == 0x6145) && (ap->port_no == 0) &&
	    (!(devices & 0x10)))	/* PATA enable ? */
		return -ENOENT;
	return ata_std_prereset(ap);
}

static int marvell_cable_detect(struct ata_port *ap)
{
	/* Cable type */
	switch(ap->port_no)
	{
	case 0:
		if (ioread8(ap->ioaddr.bmdma_addr + 1) & 1)
			ap->cbl = ATA_CBL_PATA40;
		else
			ap->cbl = ATA_CBL_PATA80;
		break;

			return ATA_CBL_PATA40;
		return ATA_CBL_PATA80;
	case 1: /* Legacy SATA port */
		ap->cbl = ATA_CBL_SATA;
		break;
		return ATA_CBL_SATA;
	}
	return ata_std_prereset(ap);
	BUG();
	return 0;	/* Our BUG macro needs the right markup */
}

/**
@@ -123,6 +124,7 @@ static const struct ata_port_operations marvell_ops = {
	.thaw			= ata_bmdma_thaw,
	.error_handler		= marvell_error_handler,
	.post_internal_cmd	= ata_bmdma_post_internal_cmd,
	.cable_detect		= marvell_cable_detect,

	/* BMDMA handling is PCI ATA format, use helpers */
	.bmdma_setup		= ata_bmdma_setup,