diff options
| author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:54 -0400 |
|---|---|---|
| committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-07-23 13:55:54 -0400 |
| commit | 761052e676372465fdeb97c148d5a4b0790fa8a0 (patch) | |
| tree | c3befdb19fbb5a40f3f8f844a9185018746d9893 /drivers/ide/pci | |
| parent | 1823649b5abb77ffe638178bc5253249d3ecd17d (diff) | |
ide: remove ->INB, ->OUTB and ->OUTBSYNC methods
* Remove no longer needed ->INB, ->OUTB and ->OUTBSYNC methods.
Then:
* Remove no longer used default_hwif_[mm]iops() and ide_[mm_]outbsync().
* Cleanup SuperIO handling in ns87415.c.
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/pci')
| -rw-r--r-- | drivers/ide/pci/ns87415.c | 46 | ||||
| -rw-r--r-- | drivers/ide/pci/scc_pata.c | 12 | ||||
| -rw-r--r-- | drivers/ide/pci/sgiioc4.c | 3 | ||||
| -rw-r--r-- | drivers/ide/pci/siimage.c | 2 |
4 files changed, 14 insertions, 49 deletions
diff --git a/drivers/ide/pci/ns87415.c b/drivers/ide/pci/ns87415.c index b9bb8428b35e..02fd3a877afa 100644 --- a/drivers/ide/pci/ns87415.c +++ b/drivers/ide/pci/ns87415.c | |||
| @@ -28,10 +28,6 @@ | |||
| 28 | */ | 28 | */ |
| 29 | #include <asm/superio.h> | 29 | #include <asm/superio.h> |
| 30 | 30 | ||
| 31 | static unsigned long superio_ide_status[2]; | ||
| 32 | static unsigned long superio_ide_select[2]; | ||
| 33 | static unsigned long superio_ide_dma_status[2]; | ||
| 34 | |||
| 35 | #define SUPERIO_IDE_MAX_RETRIES 25 | 31 | #define SUPERIO_IDE_MAX_RETRIES 25 |
| 36 | 32 | ||
| 37 | /* Because of a defect in Super I/O, all reads of the PCI DMA status | 33 | /* Because of a defect in Super I/O, all reads of the PCI DMA status |
| @@ -40,27 +36,18 @@ static unsigned long superio_ide_dma_status[2]; | |||
| 40 | */ | 36 | */ |
| 41 | static u8 superio_ide_inb (unsigned long port) | 37 | static u8 superio_ide_inb (unsigned long port) |
| 42 | { | 38 | { |
| 43 | if (port == superio_ide_status[0] || | 39 | u8 tmp; |
| 44 | port == superio_ide_status[1] || | 40 | int retries = SUPERIO_IDE_MAX_RETRIES; |
| 45 | port == superio_ide_select[0] || | ||
| 46 | port == superio_ide_select[1] || | ||
| 47 | port == superio_ide_dma_status[0] || | ||
| 48 | port == superio_ide_dma_status[1]) { | ||
| 49 | u8 tmp; | ||
| 50 | int retries = SUPERIO_IDE_MAX_RETRIES; | ||
| 51 | |||
| 52 | /* printk(" [ reading port 0x%x with retry ] ", port); */ | ||
| 53 | 41 | ||
| 54 | do { | 42 | /* printk(" [ reading port 0x%x with retry ] ", port); */ |
| 55 | tmp = inb(port); | ||
| 56 | if (tmp == 0) | ||
| 57 | udelay(50); | ||
| 58 | } while (tmp == 0 && retries-- > 0); | ||
| 59 | 43 | ||
| 60 | return tmp; | 44 | do { |
| 61 | } | 45 | tmp = inb(port); |
| 46 | if (tmp == 0) | ||
| 47 | udelay(50); | ||
| 48 | } while (tmp == 0 && retries-- > 0); | ||
| 62 | 49 | ||
| 63 | return inb(port); | 50 | return tmp; |
| 64 | } | 51 | } |
| 65 | 52 | ||
| 66 | static u8 superio_read_status(ide_hwif_t *hwif) | 53 | static u8 superio_read_status(ide_hwif_t *hwif) |
| @@ -120,27 +107,20 @@ static void superio_tf_read(ide_drive_t *drive, ide_task_t *task) | |||
| 120 | static void __devinit superio_ide_init_iops (struct hwif_s *hwif) | 107 | static void __devinit superio_ide_init_iops (struct hwif_s *hwif) |
| 121 | { | 108 | { |
| 122 | struct pci_dev *pdev = to_pci_dev(hwif->dev); | 109 | struct pci_dev *pdev = to_pci_dev(hwif->dev); |
| 123 | u32 base, dmabase; | 110 | u32 dma_stat; |
| 124 | u8 port = hwif->channel, tmp; | 111 | u8 port = hwif->channel, tmp; |
| 125 | 112 | ||
| 126 | base = pci_resource_start(pdev, port * 2) & ~3; | 113 | dma_stat = (pci_resource_start(pdev, 4) & ~3) + (!port ? 2 : 0xa); |
| 127 | dmabase = pci_resource_start(pdev, 4) & ~3; | ||
| 128 | |||
| 129 | superio_ide_status[port] = base + 7; | ||
| 130 | superio_ide_select[port] = base + 6; | ||
| 131 | superio_ide_dma_status[port] = dmabase + (!port ? 2 : 0xa); | ||
| 132 | 114 | ||
| 133 | /* Clear error/interrupt, enable dma */ | 115 | /* Clear error/interrupt, enable dma */ |
| 134 | tmp = superio_ide_inb(superio_ide_dma_status[port]); | 116 | tmp = superio_ide_inb(dma_stat); |
| 135 | outb(tmp | 0x66, superio_ide_dma_status[port]); | 117 | outb(tmp | 0x66, dma_stat); |
| 136 | 118 | ||
| 137 | hwif->read_status = superio_read_status; | 119 | hwif->read_status = superio_read_status; |
| 138 | hwif->read_sff_dma_status = superio_read_sff_dma_status; | 120 | hwif->read_sff_dma_status = superio_read_sff_dma_status; |
| 139 | 121 | ||
| 140 | hwif->tf_read = superio_tf_read; | 122 | hwif->tf_read = superio_tf_read; |
| 141 | 123 | ||
| 142 | /* We need to override inb to workaround a SuperIO errata */ | ||
| 143 | hwif->INB = superio_ide_inb; | ||
| 144 | } | 124 | } |
| 145 | 125 | ||
| 146 | static void __devinit init_iops_ns87415(ide_hwif_t *hwif) | 126 | static void __devinit init_iops_ns87415(ide_hwif_t *hwif) |
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index c110f359b03e..38765d9b0314 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
| @@ -188,14 +188,6 @@ static void scc_ide_outb(u8 addr, unsigned long port) | |||
| 188 | out_be32((void*)port, addr); | 188 | out_be32((void*)port, addr); |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | static void scc_ide_outbsync(ide_hwif_t *hwif, u8 addr, unsigned long port) | ||
| 192 | { | ||
| 193 | out_be32((void*)port, addr); | ||
| 194 | eieio(); | ||
| 195 | in_be32((void*)(hwif->dma_base + 0x01c)); | ||
| 196 | eieio(); | ||
| 197 | } | ||
| 198 | |||
| 199 | static void | 191 | static void |
| 200 | scc_ide_outsw(unsigned long port, void *addr, u32 count) | 192 | scc_ide_outsw(unsigned long port, void *addr, u32 count) |
| 201 | { | 193 | { |
| @@ -829,10 +821,6 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif) | |||
| 829 | hwif->input_data = scc_input_data; | 821 | hwif->input_data = scc_input_data; |
| 830 | hwif->output_data = scc_output_data; | 822 | hwif->output_data = scc_output_data; |
| 831 | 823 | ||
| 832 | hwif->INB = scc_ide_inb; | ||
| 833 | hwif->OUTB = scc_ide_outb; | ||
| 834 | hwif->OUTBSYNC = scc_ide_outbsync; | ||
| 835 | |||
| 836 | hwif->dma_base = dma_base; | 824 | hwif->dma_base = dma_base; |
| 837 | hwif->config_data = ports->ctl; | 825 | hwif->config_data = ports->ctl; |
| 838 | } | 826 | } |
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c index 3005a6334a58..86f7c4901837 100644 --- a/drivers/ide/pci/sgiioc4.c +++ b/drivers/ide/pci/sgiioc4.c | |||
| @@ -623,9 +623,6 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) | |||
| 623 | if (hwif == NULL) | 623 | if (hwif == NULL) |
| 624 | goto err; | 624 | goto err; |
| 625 | 625 | ||
| 626 | /* The IOC4 uses MMIO rather than Port IO. */ | ||
| 627 | default_hwif_mmiops(hwif); | ||
| 628 | |||
| 629 | /* Initializing chipset IRQ Registers */ | 626 | /* Initializing chipset IRQ Registers */ |
| 630 | writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); | 627 | writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); |
| 631 | 628 | ||
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index 21d7137f7d6c..5965a35d94ae 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
| @@ -601,7 +601,7 @@ static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif) | |||
| 601 | * Fill in the basic hwif bits | 601 | * Fill in the basic hwif bits |
| 602 | */ | 602 | */ |
| 603 | hwif->host_flags |= IDE_HFLAG_MMIO; | 603 | hwif->host_flags |= IDE_HFLAG_MMIO; |
| 604 | default_hwif_mmiops(hwif); | 604 | |
| 605 | hwif->hwif_data = addr; | 605 | hwif->hwif_data = addr; |
| 606 | 606 | ||
| 607 | /* | 607 | /* |
