ide: use I/O ops directly part #2 (take 2)

v2:
- bump host driver versions (as suggested by Sergei)
- use I/O ops directly in drivers/ide/setup-pci.c

Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent fc212bb1
/* /*
* linux/drivers/ide/pci/hpt366.c Version 1.14 Oct 1, 2007 * linux/drivers/ide/pci/hpt366.c Version 1.15 Oct 1, 2007
* *
* Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org> * Copyright (C) 1999-2003 Andre Hedrick <andre@linux-ide.org>
* Portions Copyright (C) 2001 Sun Microsystems, Inc. * Portions Copyright (C) 2001 Sun Microsystems, Inc.
...@@ -676,12 +676,11 @@ static int hpt3xx_quirkproc(ide_drive_t *drive) ...@@ -676,12 +676,11 @@ static int hpt3xx_quirkproc(ide_drive_t *drive)
static void hpt3xx_intrproc(ide_drive_t *drive) static void hpt3xx_intrproc(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive);
if (drive->quirk_list) if (drive->quirk_list)
return; return;
/* drives in the quirk_list may not like intr setups/cleanups */ /* drives in the quirk_list may not like intr setups/cleanups */
hwif->OUTB(drive->ctl | 2, IDE_CONTROL_REG); outb(drive->ctl | 2, IDE_CONTROL_REG);
} }
static void hpt3xx_maskproc(ide_drive_t *drive, int mask) static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
...@@ -709,8 +708,8 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask) ...@@ -709,8 +708,8 @@ static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
enable_irq (hwif->irq); enable_irq (hwif->irq);
} }
} else } else
hwif->OUTB(mask ? (drive->ctl | 2) : (drive->ctl & ~2), outb(mask ? (drive->ctl | 2) : (drive->ctl & ~2),
IDE_CONTROL_REG); IDE_CONTROL_REG);
} }
/* /*
...@@ -750,9 +749,9 @@ static void hpt370_irq_timeout(ide_drive_t *drive) ...@@ -750,9 +749,9 @@ static void hpt370_irq_timeout(ide_drive_t *drive)
printk(KERN_DEBUG "%s: %d bytes in FIFO\n", drive->name, bfifo & 0x1ff); printk(KERN_DEBUG "%s: %d bytes in FIFO\n", drive->name, bfifo & 0x1ff);
/* get DMA command mode */ /* get DMA command mode */
dma_cmd = hwif->INB(hwif->dma_command); dma_cmd = inb(hwif->dma_command);
/* stop DMA */ /* stop DMA */
hwif->OUTB(dma_cmd & ~0x1, hwif->dma_command); outb(dma_cmd & ~0x1, hwif->dma_command);
hpt370_clear_engine(drive); hpt370_clear_engine(drive);
} }
...@@ -767,12 +766,12 @@ static void hpt370_ide_dma_start(ide_drive_t *drive) ...@@ -767,12 +766,12 @@ static void hpt370_ide_dma_start(ide_drive_t *drive)
static int hpt370_ide_dma_end(ide_drive_t *drive) static int hpt370_ide_dma_end(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
u8 dma_stat = hwif->INB(hwif->dma_status); u8 dma_stat = inb(hwif->dma_status);
if (dma_stat & 0x01) { if (dma_stat & 0x01) {
/* wait a little */ /* wait a little */
udelay(20); udelay(20);
dma_stat = hwif->INB(hwif->dma_status); dma_stat = inb(hwif->dma_status);
if (dma_stat & 0x01) if (dma_stat & 0x01)
hpt370_irq_timeout(drive); hpt370_irq_timeout(drive);
} }
...@@ -833,34 +832,32 @@ static int hpt374_ide_dma_end(ide_drive_t *drive) ...@@ -833,34 +832,32 @@ static int hpt374_ide_dma_end(ide_drive_t *drive)
static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode) static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode)
{ {
u8 scr2 = hwif->INB(hwif->dma_master + 0x7b); u8 scr2 = inb(hwif->dma_master + 0x7b);
if ((scr2 & 0x7f) == mode) if ((scr2 & 0x7f) == mode)
return; return;
/* Tristate the bus */ /* Tristate the bus */
hwif->OUTB(0x80, hwif->dma_master + 0x73); outb(0x80, hwif->dma_master + 0x73);
hwif->OUTB(0x80, hwif->dma_master + 0x77); outb(0x80, hwif->dma_master + 0x77);
/* Switch clock and reset channels */ /* Switch clock and reset channels */
hwif->OUTB(mode, hwif->dma_master + 0x7b); outb(mode, hwif->dma_master + 0x7b);
hwif->OUTB(0xc0, hwif->dma_master + 0x79); outb(0xc0, hwif->dma_master + 0x79);
/* /*
* Reset the state machines. * Reset the state machines.
* NOTE: avoid accidentally enabling the disabled channels. * NOTE: avoid accidentally enabling the disabled channels.
*/ */
hwif->OUTB(hwif->INB(hwif->dma_master + 0x70) | 0x32, outb(inb(hwif->dma_master + 0x70) | 0x32, hwif->dma_master + 0x70);
hwif->dma_master + 0x70); outb(inb(hwif->dma_master + 0x74) | 0x32, hwif->dma_master + 0x74);
hwif->OUTB(hwif->INB(hwif->dma_master + 0x74) | 0x32,
hwif->dma_master + 0x74);
/* Complete reset */ /* Complete reset */
hwif->OUTB(0x00, hwif->dma_master + 0x79); outb(0x00, hwif->dma_master + 0x79);
/* Reconnect channels to bus */ /* Reconnect channels to bus */
hwif->OUTB(0x00, hwif->dma_master + 0x73); outb(0x00, hwif->dma_master + 0x73);
hwif->OUTB(0x00, hwif->dma_master + 0x77); outb(0x00, hwif->dma_master + 0x77);
} }
/** /**
...@@ -1351,7 +1348,7 @@ static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase) ...@@ -1351,7 +1348,7 @@ static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase)
u8 dma_new = 0, dma_old = 0; u8 dma_new = 0, dma_old = 0;
unsigned long flags; unsigned long flags;
dma_old = hwif->INB(dmabase + 2); dma_old = inb(dmabase + 2);
local_irq_save(flags); local_irq_save(flags);
...@@ -1362,7 +1359,7 @@ static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase) ...@@ -1362,7 +1359,7 @@ static void __devinit init_dma_hpt366(ide_hwif_t *hwif, unsigned long dmabase)
if (masterdma & 0x30) dma_new |= 0x20; if (masterdma & 0x30) dma_new |= 0x20;
if ( slavedma & 0x30) dma_new |= 0x40; if ( slavedma & 0x30) dma_new |= 0x40;
if (dma_new != dma_old) if (dma_new != dma_old)
hwif->OUTB(dma_new, dmabase + 2); outb(dma_new, dmabase + 2);
local_irq_restore(flags); local_irq_restore(flags);
......
/* /*
* linux/drivers/ide/pci/piix.c Version 0.53 Aug 9, 2007 * linux/drivers/ide/pci/piix.c Version 0.54 Sep 5, 2007
* *
* Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
* Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org> * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
...@@ -318,9 +318,9 @@ static void piix_dma_clear_irq(ide_drive_t *drive) ...@@ -318,9 +318,9 @@ static void piix_dma_clear_irq(ide_drive_t *drive)
u8 dma_stat; u8 dma_stat;
/* clear the INTR & ERROR bits */ /* clear the INTR & ERROR bits */
dma_stat = hwif->INB(hwif->dma_status); dma_stat = inb(hwif->dma_status);
/* Should we force the bit as well ? */ /* Should we force the bit as well ? */
hwif->OUTB(dma_stat, hwif->dma_status); outb(dma_stat, hwif->dma_status);
} }
struct ich_laptop { struct ich_laptop {
......
/* /*
* drivers/ide/pci/tc86c001.c Version 1.00 Dec 12, 2006 * drivers/ide/pci/tc86c001.c Version 1.01 Sep 5, 2007
* *
* Copyright (C) 2002 Toshiba Corporation * Copyright (C) 2002 Toshiba Corporation
* Copyright (C) 2005-2006 MontaVista Software, Inc. <source@mvista.com> * Copyright (C) 2005-2006 MontaVista Software, Inc. <source@mvista.com>
...@@ -17,7 +17,7 @@ static void tc86c001_set_mode(ide_drive_t *drive, const u8 speed) ...@@ -17,7 +17,7 @@ static void tc86c001_set_mode(ide_drive_t *drive, const u8 speed)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
unsigned long scr_port = hwif->config_data + (drive->dn ? 0x02 : 0x00); unsigned long scr_port = hwif->config_data + (drive->dn ? 0x02 : 0x00);
u16 mode, scr = hwif->INW(scr_port); u16 mode, scr = inw(scr_port);
switch (speed) { switch (speed) {
case XFER_UDMA_4: mode = 0x00c0; break; case XFER_UDMA_4: mode = 0x00c0; break;
...@@ -65,7 +65,7 @@ static int tc86c001_timer_expiry(ide_drive_t *drive) ...@@ -65,7 +65,7 @@ static int tc86c001_timer_expiry(ide_drive_t *drive)
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
ide_expiry_t *expiry = ide_get_hwifdata(hwif); ide_expiry_t *expiry = ide_get_hwifdata(hwif);
ide_hwgroup_t *hwgroup = HWGROUP(drive); ide_hwgroup_t *hwgroup = HWGROUP(drive);
u8 dma_stat = hwif->INB(hwif->dma_status); u8 dma_stat = inb(hwif->dma_status);
/* Restore a higher level driver's expiry handler first. */ /* Restore a higher level driver's expiry handler first. */
hwgroup->expiry = expiry; hwgroup->expiry = expiry;
...@@ -73,7 +73,7 @@ static int tc86c001_timer_expiry(ide_drive_t *drive) ...@@ -73,7 +73,7 @@ static int tc86c001_timer_expiry(ide_drive_t *drive)
if ((dma_stat & 5) == 1) { /* DMA active and no interrupt */ if ((dma_stat & 5) == 1) { /* DMA active and no interrupt */
unsigned long sc_base = hwif->config_data; unsigned long sc_base = hwif->config_data;
unsigned long twcr_port = sc_base + (drive->dn ? 0x06 : 0x04); unsigned long twcr_port = sc_base + (drive->dn ? 0x06 : 0x04);
u8 dma_cmd = hwif->INB(hwif->dma_command); u8 dma_cmd = inb(hwif->dma_command);
printk(KERN_WARNING "%s: DMA interrupt possibly stuck, " printk(KERN_WARNING "%s: DMA interrupt possibly stuck, "
"attempting recovery...\n", drive->name); "attempting recovery...\n", drive->name);
...@@ -135,7 +135,7 @@ static int tc86c001_busproc(ide_drive_t *drive, int state) ...@@ -135,7 +135,7 @@ static int tc86c001_busproc(ide_drive_t *drive, int state)
u16 scr1; u16 scr1;
/* System Control 1 Register bit 11 (ATA Hard Reset) read */ /* System Control 1 Register bit 11 (ATA Hard Reset) read */
scr1 = hwif->INW(sc_base + 0x00); scr1 = inw(sc_base + 0x00);
switch (state) { switch (state) {
case BUSSTATE_ON: case BUSSTATE_ON:
...@@ -165,7 +165,7 @@ static int tc86c001_busproc(ide_drive_t *drive, int state) ...@@ -165,7 +165,7 @@ static int tc86c001_busproc(ide_drive_t *drive, int state)
static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif)
{ {
unsigned long sc_base = pci_resource_start(hwif->pci_dev, 5); unsigned long sc_base = pci_resource_start(hwif->pci_dev, 5);
u16 scr1 = hwif->INW(sc_base + 0x00);; u16 scr1 = inw(sc_base + 0x00);
/* System Control 1 Register bit 15 (Soft Reset) set */ /* System Control 1 Register bit 15 (Soft Reset) set */
outw(scr1 | 0x8000, sc_base + 0x00); outw(scr1 | 0x8000, sc_base + 0x00);
...@@ -205,7 +205,7 @@ static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif) ...@@ -205,7 +205,7 @@ static void __devinit init_hwif_tc86c001(ide_hwif_t *hwif)
* System Control 1 Register bit 13 (PDIAGN): * System Control 1 Register bit 13 (PDIAGN):
* 0=80-pin cable, 1=40-pin cable * 0=80-pin cable, 1=40-pin cable
*/ */
scr1 = hwif->INW(sc_base + 0x00); scr1 = inw(sc_base + 0x00);
hwif->cbl = (scr1 & 0x2000) ? ATA_CBL_PATA40 : ATA_CBL_PATA80; hwif->cbl = (scr1 & 0x2000) ? ATA_CBL_PATA40 : ATA_CBL_PATA80;
} }
} }
......
...@@ -185,9 +185,9 @@ static unsigned long ide_get_or_set_dma_base(ide_pci_device_t *d, ide_hwif_t *hw ...@@ -185,9 +185,9 @@ static unsigned long ide_get_or_set_dma_base(ide_pci_device_t *d, ide_hwif_t *hw
case PCI_DEVICE_ID_CMD_643: case PCI_DEVICE_ID_CMD_643:
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE: case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
case PCI_DEVICE_ID_REVOLUTION: case PCI_DEVICE_ID_REVOLUTION:
simplex_stat = hwif->INB(dma_base + 2); simplex_stat = inb(dma_base + 2);
hwif->OUTB((simplex_stat&0x60),(dma_base + 2)); outb(simplex_stat & 0x60, dma_base + 2);
simplex_stat = hwif->INB(dma_base + 2); simplex_stat = inb(dma_base + 2);
if (simplex_stat & 0x80) { if (simplex_stat & 0x80) {
printk(KERN_INFO "%s: simplex device: " printk(KERN_INFO "%s: simplex device: "
"DMA forced\n", "DMA forced\n",
......
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