forked from Minki/linux
sata_mv: cosmetic preparations for IRQ coalescing
Various cosmetic changes in preparation for the IRQ coalescing feature. Note that the various MV_IRQ_COAL_* definitions are restored/renamed in the folloup patch which adds IRQ coalescing to the driver. Signed-off-by: Mark Lord <mlord@pobox.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
9223d01b2f
commit
40f21b1124
@ -1,10 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* sata_mv.c - Marvell SATA support
|
* sata_mv.c - Marvell SATA support
|
||||||
*
|
*
|
||||||
* Copyright 2008: Marvell Corporation, all rights reserved.
|
* Copyright 2008-2009: Marvell Corporation, all rights reserved.
|
||||||
* Copyright 2005: EMC Corporation, all rights reserved.
|
* Copyright 2005: EMC Corporation, all rights reserved.
|
||||||
* Copyright 2005 Red Hat, Inc. All rights reserved.
|
* Copyright 2005 Red Hat, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
|
* Originally written by Brett Russ.
|
||||||
|
* Extensive overhaul and enhancement by Mark Lord <mlord@pobox.com>.
|
||||||
|
*
|
||||||
* Please ALWAYS copy linux-ide@vger.kernel.org on emails.
|
* Please ALWAYS copy linux-ide@vger.kernel.org on emails.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -25,8 +28,6 @@
|
|||||||
/*
|
/*
|
||||||
* sata_mv TODO list:
|
* sata_mv TODO list:
|
||||||
*
|
*
|
||||||
* --> Errata workaround for NCQ device errors.
|
|
||||||
*
|
|
||||||
* --> More errata workarounds for PCI-X.
|
* --> More errata workarounds for PCI-X.
|
||||||
*
|
*
|
||||||
* --> Complete a full errata audit for all chipsets to identify others.
|
* --> Complete a full errata audit for all chipsets to identify others.
|
||||||
@ -68,6 +69,16 @@
|
|||||||
#define DRV_NAME "sata_mv"
|
#define DRV_NAME "sata_mv"
|
||||||
#define DRV_VERSION "1.26"
|
#define DRV_VERSION "1.26"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* module options
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int msi;
|
||||||
|
#ifdef CONFIG_PCI
|
||||||
|
module_param(msi, int, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)");
|
||||||
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
/* BAR's are enumerated in terms of pci_resource_start() terms */
|
/* BAR's are enumerated in terms of pci_resource_start() terms */
|
||||||
MV_PRIMARY_BAR = 0, /* offset 0x10: memory space */
|
MV_PRIMARY_BAR = 0, /* offset 0x10: memory space */
|
||||||
@ -78,12 +89,6 @@ enum {
|
|||||||
MV_MINOR_REG_AREA_SZ = 0x2000, /* 8KB */
|
MV_MINOR_REG_AREA_SZ = 0x2000, /* 8KB */
|
||||||
|
|
||||||
MV_PCI_REG_BASE = 0,
|
MV_PCI_REG_BASE = 0,
|
||||||
MV_IRQ_COAL_REG_BASE = 0x18000, /* 6xxx part only */
|
|
||||||
MV_IRQ_COAL_CAUSE = (MV_IRQ_COAL_REG_BASE + 0x08),
|
|
||||||
MV_IRQ_COAL_CAUSE_LO = (MV_IRQ_COAL_REG_BASE + 0x88),
|
|
||||||
MV_IRQ_COAL_CAUSE_HI = (MV_IRQ_COAL_REG_BASE + 0x8c),
|
|
||||||
MV_IRQ_COAL_THRESHOLD = (MV_IRQ_COAL_REG_BASE + 0xcc),
|
|
||||||
MV_IRQ_COAL_TIME_THRESHOLD = (MV_IRQ_COAL_REG_BASE + 0xd0),
|
|
||||||
|
|
||||||
MV_SATAHC0_REG_BASE = 0x20000,
|
MV_SATAHC0_REG_BASE = 0x20000,
|
||||||
MV_FLASH_CTL_OFS = 0x1046c,
|
MV_FLASH_CTL_OFS = 0x1046c,
|
||||||
@ -115,16 +120,14 @@ enum {
|
|||||||
|
|
||||||
/* Host Flags */
|
/* Host Flags */
|
||||||
MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */
|
MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */
|
||||||
MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */
|
|
||||||
|
|
||||||
MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
|
||||||
ATA_FLAG_MMIO | ATA_FLAG_PIO_POLLING,
|
ATA_FLAG_MMIO | ATA_FLAG_PIO_POLLING,
|
||||||
|
|
||||||
MV_GEN_I_FLAGS = MV_COMMON_FLAGS | ATA_FLAG_NO_ATAPI,
|
MV_GEN_I_FLAGS = MV_COMMON_FLAGS | ATA_FLAG_NO_ATAPI,
|
||||||
|
|
||||||
MV_GEN_II_FLAGS = MV_COMMON_FLAGS | MV_FLAG_IRQ_COALESCE |
|
MV_GEN_II_FLAGS = MV_COMMON_FLAGS | ATA_FLAG_NCQ |
|
||||||
ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA |
|
ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA,
|
||||||
ATA_FLAG_NCQ,
|
|
||||||
|
|
||||||
MV_GEN_IIE_FLAGS = MV_GEN_II_FLAGS | ATA_FLAG_AN,
|
MV_GEN_IIE_FLAGS = MV_GEN_II_FLAGS | ATA_FLAG_AN,
|
||||||
|
|
||||||
@ -179,16 +182,16 @@ enum {
|
|||||||
PCI_HC_MAIN_IRQ_MASK_OFS = 0x1d64,
|
PCI_HC_MAIN_IRQ_MASK_OFS = 0x1d64,
|
||||||
SOC_HC_MAIN_IRQ_CAUSE_OFS = 0x20020,
|
SOC_HC_MAIN_IRQ_CAUSE_OFS = 0x20020,
|
||||||
SOC_HC_MAIN_IRQ_MASK_OFS = 0x20024,
|
SOC_HC_MAIN_IRQ_MASK_OFS = 0x20024,
|
||||||
ERR_IRQ = (1 << 0), /* shift by port # */
|
ERR_IRQ = (1 << 0), /* shift by (2 * port #) */
|
||||||
DONE_IRQ = (1 << 1), /* shift by port # */
|
DONE_IRQ = (1 << 1), /* shift by (2 * port #) */
|
||||||
HC0_IRQ_PEND = 0x1ff, /* bits 0-8 = HC0's ports */
|
HC0_IRQ_PEND = 0x1ff, /* bits 0-8 = HC0's ports */
|
||||||
HC_SHIFT = 9, /* bits 9-17 = HC1's ports */
|
HC_SHIFT = 9, /* bits 9-17 = HC1's ports */
|
||||||
PCI_ERR = (1 << 18),
|
PCI_ERR = (1 << 18),
|
||||||
TRAN_LO_DONE = (1 << 19), /* 6xxx: IRQ coalescing */
|
TRAN_COAL_LO_DONE = (1 << 19), /* transaction coalescing */
|
||||||
TRAN_HI_DONE = (1 << 20), /* 6xxx: IRQ coalescing */
|
TRAN_COAL_HI_DONE = (1 << 20), /* transaction coalescing */
|
||||||
PORTS_0_3_COAL_DONE = (1 << 8),
|
PORTS_0_3_COAL_DONE = (1 << 8), /* HC0 IRQ coalescing */
|
||||||
PORTS_4_7_COAL_DONE = (1 << 17),
|
PORTS_4_7_COAL_DONE = (1 << 17), /* HC1 IRQ coalescing */
|
||||||
PORTS_0_7_COAL_DONE = (1 << 21), /* 6xxx: IRQ coalescing */
|
ALL_PORTS_COAL_DONE = (1 << 21), /* GEN_II(E) IRQ coalescing */
|
||||||
GPIO_INT = (1 << 22),
|
GPIO_INT = (1 << 22),
|
||||||
SELF_INT = (1 << 23),
|
SELF_INT = (1 << 23),
|
||||||
TWSI_INT = (1 << 24),
|
TWSI_INT = (1 << 24),
|
||||||
@ -621,7 +624,7 @@ static struct ata_port_operations mv6_ops = {
|
|||||||
.softreset = mv_softreset,
|
.softreset = mv_softreset,
|
||||||
.error_handler = mv_pmp_error_handler,
|
.error_handler = mv_pmp_error_handler,
|
||||||
|
|
||||||
.sff_check_status = mv_sff_check_status,
|
.sff_check_status = mv_sff_check_status,
|
||||||
.sff_irq_clear = mv_sff_irq_clear,
|
.sff_irq_clear = mv_sff_irq_clear,
|
||||||
.check_atapi_dma = mv_check_atapi_dma,
|
.check_atapi_dma = mv_check_atapi_dma,
|
||||||
.bmdma_setup = mv_bmdma_setup,
|
.bmdma_setup = mv_bmdma_setup,
|
||||||
@ -1255,8 +1258,8 @@ static void mv_60x1_errata_sata25(struct ata_port *ap, int want_ncq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mv_bmdma_enable - set a magic bit on GEN_IIE to allow bmdma
|
* mv_bmdma_enable - set a magic bit on GEN_IIE to allow bmdma
|
||||||
* @ap: Port being initialized
|
* @ap: Port being initialized
|
||||||
*
|
*
|
||||||
* There are two DMA modes on these chips: basic DMA, and EDMA.
|
* There are two DMA modes on these chips: basic DMA, and EDMA.
|
||||||
*
|
*
|
||||||
@ -3704,12 +3707,6 @@ static struct pci_driver mv_pci_driver = {
|
|||||||
.remove = ata_pci_remove_one,
|
.remove = ata_pci_remove_one,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* module options
|
|
||||||
*/
|
|
||||||
static int msi; /* Use PCI msi; either zero (off, default) or non-zero */
|
|
||||||
|
|
||||||
|
|
||||||
/* move to PCI layer or libata core? */
|
/* move to PCI layer or libata core? */
|
||||||
static int pci_go_64(struct pci_dev *pdev)
|
static int pci_go_64(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
@ -3891,10 +3888,5 @@ MODULE_DEVICE_TABLE(pci, mv_pci_tbl);
|
|||||||
MODULE_VERSION(DRV_VERSION);
|
MODULE_VERSION(DRV_VERSION);
|
||||||
MODULE_ALIAS("platform:" DRV_NAME);
|
MODULE_ALIAS("platform:" DRV_NAME);
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
|
||||||
module_param(msi, int, 0444);
|
|
||||||
MODULE_PARM_DESC(msi, "Enable use of PCI MSI (0=off, 1=on)");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
module_init(mv_init);
|
module_init(mv_init);
|
||||||
module_exit(mv_exit);
|
module_exit(mv_exit);
|
||||||
|
Loading…
Reference in New Issue
Block a user