aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/pci/hpt366.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-25 16:17:05 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-25 16:17:05 -0500
commit1c029fd658baa2442e8e51dc9c819301cad95777 (patch)
treefbbfe6bb774001c9346ea0f772e5f4b0d469b989 /drivers/ide/pci/hpt366.c
parent866664d79f6a920af07e6503f64366f4c5b2d41f (diff)
ide: remove ->dma_master field from ide_hwif_t (take 5)
* Convert cmd64x, hpt366 and pdc202xx_old host drivers to use pci_resource_start(hwif->pci_dev, 4) instead of hwif->dma_master. * Remove no longer needed ->dma_master field from ide_hwif_t. v2: * Use the more readable 'hwif->dma_base - (hwif->channel * 8)' instead of pci_resource_start(hwif->pci_dev, 4). v3: * Use hwif->extra_base in hpt366/pdc20xx_old + some cosmetic fixups over v2 (suggested by Sergei). v4: * Correct offsets in hpt3xxn_set_clock(). v5: * Use hwif->extra_base in hpt366 for _real_ this time. (Noticed by Sergei) Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci/hpt366.c')
-rw-r--r--drivers/ide/pci/hpt366.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c
index df14d692743c..d3826a66834d 100644
--- a/drivers/ide/pci/hpt366.c
+++ b/drivers/ide/pci/hpt366.c
@@ -894,32 +894,33 @@ static int hpt374_ide_dma_end(ide_drive_t *drive)
894 894
895static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode) 895static void hpt3xxn_set_clock(ide_hwif_t *hwif, u8 mode)
896{ 896{
897 u8 scr2 = inb(hwif->dma_master + 0x7b); 897 unsigned long base = hwif->extra_base;
898 u8 scr2 = inb(base + 0x6b);
898 899
899 if ((scr2 & 0x7f) == mode) 900 if ((scr2 & 0x7f) == mode)
900 return; 901 return;
901 902
902 /* Tristate the bus */ 903 /* Tristate the bus */
903 outb(0x80, hwif->dma_master + 0x73); 904 outb(0x80, base + 0x63);
904 outb(0x80, hwif->dma_master + 0x77); 905 outb(0x80, base + 0x67);
905 906
906 /* Switch clock and reset channels */ 907 /* Switch clock and reset channels */
907 outb(mode, hwif->dma_master + 0x7b); 908 outb(mode, base + 0x6b);
908 outb(0xc0, hwif->dma_master + 0x79); 909 outb(0xc0, base + 0x69);
909 910
910 /* 911 /*
911 * Reset the state machines. 912 * Reset the state machines.
912 * NOTE: avoid accidentally enabling the disabled channels. 913 * NOTE: avoid accidentally enabling the disabled channels.
913 */ 914 */
914 outb(inb(hwif->dma_master + 0x70) | 0x32, hwif->dma_master + 0x70); 915 outb(inb(base + 0x60) | 0x32, base + 0x60);
915 outb(inb(hwif->dma_master + 0x74) | 0x32, hwif->dma_master + 0x74); 916 outb(inb(base + 0x64) | 0x32, base + 0x64);
916 917
917 /* Complete reset */ 918 /* Complete reset */
918 outb(0x00, hwif->dma_master + 0x79); 919 outb(0x00, base + 0x69);
919 920
920 /* Reconnect channels to bus */ 921 /* Reconnect channels to bus */
921 outb(0x00, hwif->dma_master + 0x73); 922 outb(0x00, base + 0x63);
922 outb(0x00, hwif->dma_master + 0x77); 923 outb(0x00, base + 0x67);
923} 924}
924 925
925/** 926/**