diff options
Diffstat (limited to 'drivers/ide/mips')
-rw-r--r-- | drivers/ide/mips/au1xxx-ide.c | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/drivers/ide/mips/au1xxx-ide.c b/drivers/ide/mips/au1xxx-ide.c index c319f6163127..aebde49365d1 100644 --- a/drivers/ide/mips/au1xxx-ide.c +++ b/drivers/ide/mips/au1xxx-ide.c | |||
@@ -101,14 +101,7 @@ void auide_outsw(unsigned long port, void *addr, u32 count) | |||
101 | 101 | ||
102 | static void au1xxx_set_pio_mode(ide_drive_t *drive, const u8 pio) | 102 | static void au1xxx_set_pio_mode(ide_drive_t *drive, const u8 pio) |
103 | { | 103 | { |
104 | int mem_sttime; | 104 | int mem_sttime = 0, mem_stcfg = au_readl(MEM_STCFG2); |
105 | int mem_stcfg; | ||
106 | |||
107 | if (ide_config_drive_speed(drive, pio + XFER_PIO_0)) | ||
108 | return; | ||
109 | |||
110 | mem_sttime = 0; | ||
111 | mem_stcfg = au_readl(MEM_STCFG2); | ||
112 | 105 | ||
113 | /* set pio mode! */ | 106 | /* set pio mode! */ |
114 | switch(pio) { | 107 | switch(pio) { |
@@ -168,13 +161,9 @@ static void au1xxx_set_pio_mode(ide_drive_t *drive, const u8 pio) | |||
168 | au_writel(mem_stcfg,MEM_STCFG2); | 161 | au_writel(mem_stcfg,MEM_STCFG2); |
169 | } | 162 | } |
170 | 163 | ||
171 | static int auide_tune_chipset(ide_drive_t *drive, const u8 speed) | 164 | static void auide_set_dma_mode(ide_drive_t *drive, const u8 speed) |
172 | { | 165 | { |
173 | int mem_sttime; | 166 | int mem_sttime = 0, mem_stcfg = au_readl(MEM_STCFG2); |
174 | int mem_stcfg; | ||
175 | |||
176 | mem_sttime = 0; | ||
177 | mem_stcfg = au_readl(MEM_STCFG2); | ||
178 | 167 | ||
179 | switch(speed) { | 168 | switch(speed) { |
180 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA | 169 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA |
@@ -210,16 +199,11 @@ static int auide_tune_chipset(ide_drive_t *drive, const u8 speed) | |||
210 | break; | 199 | break; |
211 | #endif | 200 | #endif |
212 | default: | 201 | default: |
213 | return 1; | 202 | return; |
214 | } | 203 | } |
215 | 204 | ||
216 | if (ide_config_drive_speed(drive, speed)) | ||
217 | return 1; | ||
218 | |||
219 | au_writel(mem_sttime,MEM_STTIME2); | 205 | au_writel(mem_sttime,MEM_STTIME2); |
220 | au_writel(mem_stcfg,MEM_STCFG2); | 206 | au_writel(mem_stcfg,MEM_STCFG2); |
221 | |||
222 | return 0; | ||
223 | } | 207 | } |
224 | 208 | ||
225 | /* | 209 | /* |
@@ -681,6 +665,7 @@ static int au_ide_probe(struct device *dev) | |||
681 | #endif | 665 | #endif |
682 | 666 | ||
683 | hwif->pio_mask = ATA_PIO4; | 667 | hwif->pio_mask = ATA_PIO4; |
668 | hwif->host_flags = IDE_HFLAG_POST_SET_MODE; | ||
684 | 669 | ||
685 | hwif->noprobe = 0; | 670 | hwif->noprobe = 0; |
686 | hwif->drives[0].unmask = 1; | 671 | hwif->drives[0].unmask = 1; |
@@ -701,7 +686,7 @@ static int au_ide_probe(struct device *dev) | |||
701 | #endif | 686 | #endif |
702 | 687 | ||
703 | hwif->set_pio_mode = &au1xxx_set_pio_mode; | 688 | hwif->set_pio_mode = &au1xxx_set_pio_mode; |
704 | hwif->speedproc = &auide_tune_chipset; | 689 | hwif->set_dma_mode = &auide_set_dma_mode; |
705 | 690 | ||
706 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA | 691 | #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA |
707 | hwif->dma_off_quietly = &auide_dma_off_quietly; | 692 | hwif->dma_off_quietly = &auide_dma_off_quietly; |