Commit d0e58031 authored by Mikael Pettersson's avatar Mikael Pettersson Committed by Jeff Garzik

sata_promise: cleanups

This patch applies some trivial cleanups to sata_promise:
- repair whitespace damage
- correct comment at board_2057x_pata definition
- pull SATAII TX4 support code out to separate functions
- rename ata_nr to ata_no for consistency with libata's port_no
- remove some init-time debug printks (requested by Jeff)

This patch should cause no behavioural changes, except for
the removed printks.
Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
--
 drivers/ata/sata_promise.c |   56 ++++++++++++++++++---------------------------
 1 files changed, 23 insertions(+), 33 deletions(-)
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 5446b656
...@@ -45,8 +45,7 @@ ...@@ -45,8 +45,7 @@
#include "sata_promise.h" #include "sata_promise.h"
#define DRV_NAME "sata_promise" #define DRV_NAME "sata_promise"
#define DRV_VERSION "2.07" #define DRV_VERSION "2.08"
enum { enum {
PDC_MAX_PORTS = 4, PDC_MAX_PORTS = 4,
...@@ -94,7 +93,7 @@ enum { ...@@ -94,7 +93,7 @@ enum {
board_20319 = 2, /* FastTrak S150 TX4 */ board_20319 = 2, /* FastTrak S150 TX4 */
board_20619 = 3, /* FastTrak TX4000 */ board_20619 = 3, /* FastTrak TX4000 */
board_2057x = 4, /* SATAII150 Tx2plus */ board_2057x = 4, /* SATAII150 Tx2plus */
board_2057x_pata = 5, /* SATAII150 Tx2plus */ board_2057x_pata = 5, /* SATAII150 Tx2plus PATA port */
board_40518 = 6, /* SATAII150 Tx4 */ board_40518 = 6, /* SATAII150 Tx4 */
PDC_HAS_PATA = (1 << 1), /* PDC20375/20575 has PATA */ PDC_HAS_PATA = (1 << 1), /* PDC20375/20575 has PATA */
...@@ -124,7 +123,6 @@ enum { ...@@ -124,7 +123,6 @@ enum {
PDC_FLAG_4_PORTS = (1 << 26), /* 4 ports */ PDC_FLAG_4_PORTS = (1 << 26), /* 4 ports */
}; };
struct pdc_port_priv { struct pdc_port_priv {
u8 *pkt; u8 *pkt;
dma_addr_t pkt_dma; dma_addr_t pkt_dma;
...@@ -340,7 +338,6 @@ static const struct pci_device_id pdc_ata_pci_tbl[] = { ...@@ -340,7 +338,6 @@ static const struct pci_device_id pdc_ata_pci_tbl[] = {
{ } /* terminate list */ { } /* terminate list */
}; };
static struct pci_driver pdc_ata_pci_driver = { static struct pci_driver pdc_ata_pci_driver = {
.name = DRV_NAME, .name = DRV_NAME,
.id_table = pdc_ata_pci_tbl, .id_table = pdc_ata_pci_tbl,
...@@ -348,7 +345,6 @@ static struct pci_driver pdc_ata_pci_driver = { ...@@ -348,7 +345,6 @@ static struct pci_driver pdc_ata_pci_driver = {
.remove = ata_pci_remove_one, .remove = ata_pci_remove_one,
}; };
static int pdc_common_port_start(struct ata_port *ap) static int pdc_common_port_start(struct ata_port *ap)
{ {
struct device *dev = ap->host->dev; struct device *dev = ap->host->dev;
...@@ -438,7 +434,6 @@ static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg) ...@@ -438,7 +434,6 @@ static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg)
return readl(ap->ioaddr.scr_addr + (sc_reg * 4)); return readl(ap->ioaddr.scr_addr + (sc_reg * 4));
} }
static void pdc_sata_scr_write (struct ata_port *ap, unsigned int sc_reg, static void pdc_sata_scr_write (struct ata_port *ap, unsigned int sc_reg,
u32 val) u32 val)
{ {
...@@ -657,8 +652,8 @@ static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc, ...@@ -657,8 +652,8 @@ static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc,
ata_port_abort(ap); ata_port_abort(ap);
} }
static inline unsigned int pdc_host_intr( struct ata_port *ap, static inline unsigned int pdc_host_intr(struct ata_port *ap,
struct ata_queued_cmd *qc) struct ata_queued_cmd *qc)
{ {
unsigned int handled = 0; unsigned int handled = 0;
void __iomem *port_mmio = ap->ioaddr.cmd_addr; void __iomem *port_mmio = ap->ioaddr.cmd_addr;
...@@ -685,10 +680,10 @@ static inline unsigned int pdc_host_intr( struct ata_port *ap, ...@@ -685,10 +680,10 @@ static inline unsigned int pdc_host_intr( struct ata_port *ap,
handled = 1; handled = 1;
break; break;
default: default:
ap->stats.idle_irq++; ap->stats.idle_irq++;
break; break;
} }
return handled; return handled;
} }
...@@ -701,6 +696,18 @@ static void pdc_irq_clear(struct ata_port *ap) ...@@ -701,6 +696,18 @@ static void pdc_irq_clear(struct ata_port *ap)
readl(mmio + PDC_INT_SEQMASK); readl(mmio + PDC_INT_SEQMASK);
} }
static inline int pdc_is_sataii_tx4(unsigned long flags)
{
const unsigned long mask = PDC_FLAG_GEN_II | PDC_FLAG_4_PORTS;
return (flags & mask) == mask;
}
static inline unsigned int pdc_port_no_to_ata_no(unsigned int port_no, int is_sataii_tx4)
{
static const unsigned char sataii_tx4_port_remap[4] = { 3, 1, 0, 2};
return is_sataii_tx4 ? sataii_tx4_port_remap[port_no] : port_no;
}
static irqreturn_t pdc_interrupt (int irq, void *dev_instance) static irqreturn_t pdc_interrupt (int irq, void *dev_instance)
{ {
struct ata_host *host = dev_instance; struct ata_host *host = dev_instance;
...@@ -807,7 +814,6 @@ static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf) ...@@ -807,7 +814,6 @@ static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
ata_tf_load(ap, tf); ata_tf_load(ap, tf);
} }
static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf) static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
{ {
WARN_ON (tf->protocol == ATA_PROT_DMA || WARN_ON (tf->protocol == ATA_PROT_DMA ||
...@@ -867,7 +873,6 @@ static void pdc_ata_setup_port(struct ata_port *ap, ...@@ -867,7 +873,6 @@ static void pdc_ata_setup_port(struct ata_port *ap,
ap->ioaddr.scr_addr = scr_addr; ap->ioaddr.scr_addr = scr_addr;
} }
static void pdc_host_init(struct ata_host *host) static void pdc_host_init(struct ata_host *host)
{ {
void __iomem *mmio = host->iomap[PDC_MMIO_BAR]; void __iomem *mmio = host->iomap[PDC_MMIO_BAR];
...@@ -955,10 +960,8 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -955,10 +960,8 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
if (pi->flags & PDC_FLAG_SATA_PATA) { if (pi->flags & PDC_FLAG_SATA_PATA) {
u8 tmp = readb(base + PDC_FLASH_CTL+1); u8 tmp = readb(base + PDC_FLASH_CTL+1);
if (!(tmp & 0x80)) { if (!(tmp & 0x80))
ppi[n_ports++] = pi + 1; ppi[n_ports++] = pi + 1;
dev_printk(KERN_INFO, &pdev->dev, "PATA port found\n");
}
} }
host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports); host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports);
...@@ -968,22 +971,12 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -968,22 +971,12 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
} }
host->iomap = pcim_iomap_table(pdev); host->iomap = pcim_iomap_table(pdev);
is_sataii_tx4 = 0; is_sataii_tx4 = pdc_is_sataii_tx4(pi->flags);
if ((pi->flags & (PDC_FLAG_GEN_II|PDC_FLAG_4_PORTS)) == (PDC_FLAG_GEN_II|PDC_FLAG_4_PORTS)) {
is_sataii_tx4 = 1;
dev_printk(KERN_INFO, &pdev->dev, "applying SATAII TX4 port numbering workaround\n");
}
for (i = 0; i < host->n_ports; i++) { for (i = 0; i < host->n_ports; i++) {
static const unsigned char sataii_tx4_port_remap[4] = { 3, 1, 0, 2}; unsigned int ata_no = pdc_port_no_to_ata_no(i, is_sataii_tx4);
int ata_nr;
ata_nr = i;
if (is_sataii_tx4)
ata_nr = sataii_tx4_port_remap[i];
pdc_ata_setup_port(host->ports[i], pdc_ata_setup_port(host->ports[i],
base + 0x200 + ata_nr * 0x80, base + 0x200 + ata_no * 0x80,
base + 0x400 + ata_nr * 0x100); base + 0x400 + ata_no * 0x100);
} }
/* initialize adapter */ /* initialize adapter */
...@@ -1002,19 +995,16 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e ...@@ -1002,19 +995,16 @@ static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *e
&pdc_ata_sht); &pdc_ata_sht);
} }
static int __init pdc_ata_init(void) static int __init pdc_ata_init(void)
{ {
return pci_register_driver(&pdc_ata_pci_driver); return pci_register_driver(&pdc_ata_pci_driver);
} }
static void __exit pdc_ata_exit(void) static void __exit pdc_ata_exit(void)
{ {
pci_unregister_driver(&pdc_ata_pci_driver); pci_unregister_driver(&pdc_ata_pci_driver);
} }
MODULE_AUTHOR("Jeff Garzik"); MODULE_AUTHOR("Jeff Garzik");
MODULE_DESCRIPTION("Promise ATA TX2/TX4/TX4000 low-level driver"); MODULE_DESCRIPTION("Promise ATA TX2/TX4/TX4000 low-level driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment