sata_mv: nuke unreleased GenIIe revisions
The only public release of the 6042/7042 chips was/is revision "B0". Remove code that attempted to deal with earlier, non-released revs. This matches the logic of the current Marvell "proprietary" driver. Also, bump up the sata_mv version number, to reflect this batch of erratas. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
8c30a8b9b5
commit
5cf73bfb06
@ -72,7 +72,7 @@
|
|||||||
#include <linux/libata.h>
|
#include <linux/libata.h>
|
||||||
|
|
||||||
#define DRV_NAME "sata_mv"
|
#define DRV_NAME "sata_mv"
|
||||||
#define DRV_VERSION "1.21"
|
#define DRV_VERSION "1.22"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
/* BAR's are enumerated in terms of pci_resource_start() terms */
|
/* BAR's are enumerated in terms of pci_resource_start() terms */
|
||||||
@ -354,7 +354,6 @@ enum {
|
|||||||
MV_HP_ERRATA_50XXB2 = (1 << 2),
|
MV_HP_ERRATA_50XXB2 = (1 << 2),
|
||||||
MV_HP_ERRATA_60X1B2 = (1 << 3),
|
MV_HP_ERRATA_60X1B2 = (1 << 3),
|
||||||
MV_HP_ERRATA_60X1C0 = (1 << 4),
|
MV_HP_ERRATA_60X1C0 = (1 << 4),
|
||||||
MV_HP_ERRATA_XX42A0 = (1 << 5),
|
|
||||||
MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */
|
MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */
|
||||||
MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */
|
MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */
|
||||||
MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */
|
MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */
|
||||||
@ -811,11 +810,6 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio,
|
|||||||
writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS);
|
writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS);
|
||||||
writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index,
|
writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index,
|
||||||
port_mmio + EDMA_REQ_Q_IN_PTR_OFS);
|
port_mmio + EDMA_REQ_Q_IN_PTR_OFS);
|
||||||
|
|
||||||
if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0)
|
|
||||||
writelfl((pp->crqb_dma & 0xffffffff) | index,
|
|
||||||
port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
|
|
||||||
else
|
|
||||||
writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
|
writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -826,13 +820,7 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio,
|
|||||||
|
|
||||||
WARN_ON(pp->crpb_dma & 0xff);
|
WARN_ON(pp->crpb_dma & 0xff);
|
||||||
writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS);
|
writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS);
|
||||||
|
|
||||||
if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0)
|
|
||||||
writelfl((pp->crpb_dma & 0xffffffff) | index,
|
|
||||||
port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
|
|
||||||
else
|
|
||||||
writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
|
writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS);
|
||||||
|
|
||||||
writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index,
|
writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index,
|
||||||
port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
|
port_mmio + EDMA_RSP_Q_OUT_PTR_OFS);
|
||||||
}
|
}
|
||||||
@ -3002,10 +2990,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx)
|
|||||||
hp_flags |= MV_HP_CUT_THROUGH;
|
hp_flags |= MV_HP_CUT_THROUGH;
|
||||||
|
|
||||||
switch (pdev->revision) {
|
switch (pdev->revision) {
|
||||||
case 0x0:
|
case 0x2: /* Rev.B0: the first/only public release */
|
||||||
hp_flags |= MV_HP_ERRATA_XX42A0;
|
|
||||||
break;
|
|
||||||
case 0x1:
|
|
||||||
hp_flags |= MV_HP_ERRATA_60X1C0;
|
hp_flags |= MV_HP_ERRATA_60X1C0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user