ide: remove ->ide_dma_on and ->dma_off_quietly methods from ide_hwif_t

* Make ide_dma_off_quietly() and __ide_dma_on() always available.

* Drop "__" prefix from __ide_dma_on().

* Check for presence of ->dma_host_on instead of ->ide_dma_on.

* Convert all users of ->ide_dma_on and ->dma_off_quietly methods
  to use ide_dma_on() and ide_dma_off_quietly() instead.

* Remove no longer needed ->ide_dma_on and ->dma_off_quietly methods
  from ide_hwif_t.

* Make ide_dma_on() void.

There should be no functionality changes caused by this patch.

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Bartlomiej Zolnierkiewicz 2008-01-26 20:13:01 +01:00
parent 378f577f7f
commit 4a546e046d
11 changed files with 28 additions and 86 deletions

View File

@ -291,24 +291,10 @@ static void icside_dma_host_off(ide_drive_t *drive)
{ {
} }
static void icside_dma_off_quietly(ide_drive_t *drive)
{
drive->using_dma = 0;
ide_toggle_bounce(drive, 0);
}
static void icside_dma_host_on(ide_drive_t *drive) static void icside_dma_host_on(ide_drive_t *drive)
{ {
} }
static int icside_dma_on(ide_drive_t *drive)
{
drive->using_dma = 1;
ide_toggle_bounce(drive, 1);
return 0;
}
static int icside_dma_end(ide_drive_t *drive) static int icside_dma_end(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = HWIF(drive); ide_hwif_t *hwif = HWIF(drive);
@ -425,9 +411,7 @@ static void icside_dma_init(ide_hwif_t *hwif)
hwif->set_dma_mode = icside_set_dma_mode; hwif->set_dma_mode = icside_set_dma_mode;
hwif->dma_host_off = icside_dma_host_off; hwif->dma_host_off = icside_dma_host_off;
hwif->dma_off_quietly = icside_dma_off_quietly;
hwif->dma_host_on = icside_dma_host_on; hwif->dma_host_on = icside_dma_host_on;
hwif->ide_dma_on = icside_dma_on;
hwif->dma_setup = icside_dma_setup; hwif->dma_setup = icside_dma_setup;
hwif->dma_exec_cmd = icside_dma_exec_cmd; hwif->dma_exec_cmd = icside_dma_exec_cmd;
hwif->dma_start = icside_dma_start; hwif->dma_start = icside_dma_start;

View File

@ -425,6 +425,7 @@ void ide_dma_host_off(ide_drive_t *drive)
} }
EXPORT_SYMBOL(ide_dma_host_off); EXPORT_SYMBOL(ide_dma_host_off);
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
/** /**
* ide_dma_off_quietly - Generic DMA kill * ide_dma_off_quietly - Generic DMA kill
@ -442,7 +443,6 @@ void ide_dma_off_quietly(ide_drive_t *drive)
} }
EXPORT_SYMBOL(ide_dma_off_quietly); EXPORT_SYMBOL(ide_dma_off_quietly);
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
/** /**
* ide_dma_off - disable DMA on a device * ide_dma_off - disable DMA on a device
@ -455,7 +455,7 @@ EXPORT_SYMBOL(ide_dma_off_quietly);
void ide_dma_off(ide_drive_t *drive) void ide_dma_off(ide_drive_t *drive)
{ {
printk(KERN_INFO "%s: DMA disabled\n", drive->name); printk(KERN_INFO "%s: DMA disabled\n", drive->name);
drive->hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
} }
EXPORT_SYMBOL(ide_dma_off); EXPORT_SYMBOL(ide_dma_off);
@ -481,26 +481,26 @@ void ide_dma_host_on(ide_drive_t *drive)
} }
EXPORT_SYMBOL(ide_dma_host_on); EXPORT_SYMBOL(ide_dma_host_on);
#endif
/** /**
* __ide_dma_on - Enable DMA on a device * ide_dma_on - Enable DMA on a device
* @drive: drive to enable DMA on * @drive: drive to enable DMA on
* *
* Enable IDE DMA for a device on this IDE controller. * Enable IDE DMA for a device on this IDE controller.
*/ */
int __ide_dma_on (ide_drive_t *drive) void ide_dma_on(ide_drive_t *drive)
{ {
drive->using_dma = 1; drive->using_dma = 1;
ide_toggle_bounce(drive, 1); ide_toggle_bounce(drive, 1);
drive->hwif->dma_host_on(drive); drive->hwif->dma_host_on(drive);
return 0;
} }
EXPORT_SYMBOL(__ide_dma_on); EXPORT_SYMBOL(ide_dma_on);
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
/** /**
* ide_dma_setup - begin a DMA phase * ide_dma_setup - begin a DMA phase
* @drive: target device * @drive: target device
@ -827,7 +827,6 @@ int ide_id_dma_bug(ide_drive_t *drive)
int ide_set_dma(ide_drive_t *drive) int ide_set_dma(ide_drive_t *drive)
{ {
ide_hwif_t *hwif = drive->hwif;
int rc; int rc;
/* /*
@ -836,13 +835,15 @@ int ide_set_dma(ide_drive_t *drive)
* things, if not checked and cleared. * things, if not checked and cleared.
* PARANOIA!!! * PARANOIA!!!
*/ */
hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
rc = ide_dma_check(drive); rc = ide_dma_check(drive);
if (rc) if (rc)
return rc; return rc;
return hwif->ide_dma_on(drive); ide_dma_on(drive);
return 0;
} }
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI #ifdef CONFIG_BLK_DEV_IDEDMA_PCI
@ -979,12 +980,8 @@ void ide_setup_dma(ide_hwif_t *hwif, unsigned long base, unsigned num_ports)
if (!(hwif->dma_prdtable)) if (!(hwif->dma_prdtable))
hwif->dma_prdtable = (hwif->dma_base + 4); hwif->dma_prdtable = (hwif->dma_base + 4);
if (!hwif->dma_off_quietly)
hwif->dma_off_quietly = &ide_dma_off_quietly;
if (!hwif->dma_host_off) if (!hwif->dma_host_off)
hwif->dma_host_off = &ide_dma_host_off; hwif->dma_host_off = &ide_dma_host_off;
if (!hwif->ide_dma_on)
hwif->ide_dma_on = &__ide_dma_on;
if (!hwif->dma_host_on) if (!hwif->dma_host_on)
hwif->dma_host_on = &ide_dma_host_on; hwif->dma_host_on = &ide_dma_host_on;
if (!hwif->dma_setup) if (!hwif->dma_setup)

View File

@ -75,7 +75,7 @@ static int __ide_end_request(ide_drive_t *drive, struct request *rq,
*/ */
if (drive->state == DMA_PIO_RETRY && drive->retry_pio <= 3) { if (drive->state == DMA_PIO_RETRY && drive->retry_pio <= 3) {
drive->state = 0; drive->state = 0;
HWGROUP(drive)->hwif->ide_dma_on(drive); ide_dma_on(drive);
} }
if (!end_that_request_chunk(rq, uptodate, nr_bytes)) { if (!end_that_request_chunk(rq, uptodate, nr_bytes)) {
@ -219,7 +219,7 @@ static ide_startstop_t ide_start_power_step(ide_drive_t *drive, struct request *
* we could be smarter and check for current xfer_speed * we could be smarter and check for current xfer_speed
* in struct drive etc... * in struct drive etc...
*/ */
if (drive->hwif->ide_dma_on == NULL) if (drive->hwif->dma_host_on == NULL)
break; break;
/* /*
* TODO: respect ->using_dma setting * TODO: respect ->using_dma setting
@ -787,7 +787,7 @@ static ide_startstop_t do_special (ide_drive_t *drive)
if (hwif->host_flags & IDE_HFLAG_SET_PIO_MODE_KEEP_DMA) { if (hwif->host_flags & IDE_HFLAG_SET_PIO_MODE_KEEP_DMA) {
if (keep_dma) if (keep_dma)
hwif->ide_dma_on(drive); ide_dma_on(drive);
} }
} }
@ -1334,7 +1334,7 @@ static ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error)
*/ */
drive->retry_pio++; drive->retry_pio++;
drive->state = DMA_PIO_RETRY; drive->state = DMA_PIO_RETRY;
hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
/* /*
* un-busy drive etc (hwgroup->busy is cleared on return) and * un-busy drive etc (hwgroup->busy is cleared on return) and

View File

@ -742,7 +742,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
// msleep(50); // msleep(50);
#ifdef CONFIG_BLK_DEV_IDEDMA #ifdef CONFIG_BLK_DEV_IDEDMA
if (hwif->ide_dma_on) /* check if host supports DMA */ if (hwif->dma_host_on) /* check if host supports DMA */
hwif->dma_host_off(drive); hwif->dma_host_off(drive);
#endif #endif
@ -801,8 +801,8 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
#ifdef CONFIG_BLK_DEV_IDEDMA #ifdef CONFIG_BLK_DEV_IDEDMA
if (speed >= XFER_SW_DMA_0 || (hwif->host_flags & IDE_HFLAG_VDMA)) if (speed >= XFER_SW_DMA_0 || (hwif->host_flags & IDE_HFLAG_VDMA))
hwif->dma_host_on(drive); hwif->dma_host_on(drive);
else if (hwif->ide_dma_on) /* check if host supports DMA */ else if (hwif->dma_host_on) /* check if host supports DMA */
hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
#endif #endif
switch(speed) { switch(speed) {
@ -1012,10 +1012,10 @@ static void check_dma_crc(ide_drive_t *drive)
{ {
#ifdef CONFIG_BLK_DEV_IDEDMA #ifdef CONFIG_BLK_DEV_IDEDMA
if (drive->crc_count) { if (drive->crc_count) {
drive->hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
ide_set_xfer_rate(drive, ide_auto_reduce_xfer(drive)); ide_set_xfer_rate(drive, ide_auto_reduce_xfer(drive));
if (drive->current_speed >= XFER_SW_DMA_0) if (drive->current_speed >= XFER_SW_DMA_0)
(void) HWIF(drive)->ide_dma_on(drive); ide_dma_on(drive);
} else } else
ide_dma_off(drive); ide_dma_off(drive);
#endif #endif

View File

@ -833,7 +833,7 @@ static void probe_hwif(ide_hwif_t *hwif)
drive->nice1 = 1; drive->nice1 = 1;
if (hwif->ide_dma_on) if (hwif->dma_host_on)
ide_set_dma(drive); ide_set_dma(drive);
} }
} }

View File

@ -437,8 +437,6 @@ static void ide_hwif_restore(ide_hwif_t *hwif, ide_hwif_t *tmp_hwif)
hwif->dma_exec_cmd = tmp_hwif->dma_exec_cmd; hwif->dma_exec_cmd = tmp_hwif->dma_exec_cmd;
hwif->dma_start = tmp_hwif->dma_start; hwif->dma_start = tmp_hwif->dma_start;
hwif->ide_dma_end = tmp_hwif->ide_dma_end; hwif->ide_dma_end = tmp_hwif->ide_dma_end;
hwif->ide_dma_on = tmp_hwif->ide_dma_on;
hwif->dma_off_quietly = tmp_hwif->dma_off_quietly;
hwif->ide_dma_test_irq = tmp_hwif->ide_dma_test_irq; hwif->ide_dma_test_irq = tmp_hwif->ide_dma_test_irq;
hwif->ide_dma_clear_irq = tmp_hwif->ide_dma_clear_irq; hwif->ide_dma_clear_irq = tmp_hwif->ide_dma_clear_irq;
hwif->dma_host_on = tmp_hwif->dma_host_on; hwif->dma_host_on = tmp_hwif->dma_host_on;
@ -836,7 +834,7 @@ int set_using_dma(ide_drive_t *drive, int arg)
if (!drive->id || !(drive->id->capability & 1)) if (!drive->id || !(drive->id->capability & 1))
goto out; goto out;
if (hwif->ide_dma_on == NULL) if (hwif->dma_host_on == NULL)
goto out; goto out;
err = -EBUSY; err = -EBUSY;

View File

@ -399,24 +399,10 @@ static void auide_dma_host_on(ide_drive_t *drive)
{ {
} }
static int auide_dma_on(ide_drive_t *drive)
{
drive->using_dma = 1;
ide_toggle_bounce(drive, 1);
return 0;
}
static void auide_dma_host_off(ide_drive_t *drive) static void auide_dma_host_off(ide_drive_t *drive)
{ {
} }
static void auide_dma_off_quietly(ide_drive_t *drive)
{
drive->using_dma = 0;
ide_toggle_bounce(drive, 0);
}
static void auide_dma_lost_irq(ide_drive_t *drive) static void auide_dma_lost_irq(ide_drive_t *drive)
{ {
printk(KERN_ERR "%s: IRQ lost\n", drive->name); printk(KERN_ERR "%s: IRQ lost\n", drive->name);
@ -684,7 +670,6 @@ static int au_ide_probe(struct device *dev)
hwif->set_dma_mode = &auide_set_dma_mode; hwif->set_dma_mode = &auide_set_dma_mode;
#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
hwif->dma_off_quietly = &auide_dma_off_quietly;
hwif->dma_timeout = &auide_dma_timeout; hwif->dma_timeout = &auide_dma_timeout;
hwif->mdma_filter = &auide_mdma_filter; hwif->mdma_filter = &auide_mdma_filter;
@ -697,7 +682,6 @@ static int au_ide_probe(struct device *dev)
hwif->dma_host_off = &auide_dma_host_off; hwif->dma_host_off = &auide_dma_host_off;
hwif->dma_host_on = &auide_dma_host_on; hwif->dma_host_on = &auide_dma_host_on;
hwif->dma_lost_irq = &auide_dma_lost_irq; hwif->dma_lost_irq = &auide_dma_lost_irq;
hwif->ide_dma_on = &auide_dma_on;
#else /* !CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */ #else /* !CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA */
hwif->channel = 0; hwif->channel = 0;
hwif->hold = 1; hwif->hold = 1;

View File

@ -220,7 +220,7 @@ static void sc1200_set_pio_mode(ide_drive_t *drive, const u8 pio)
} }
if (mode != -1) { if (mode != -1) {
printk("SC1200: %s: changing (U)DMA mode\n", drive->name); printk("SC1200: %s: changing (U)DMA mode\n", drive->name);
hwif->dma_off_quietly(drive); ide_dma_off_quietly(drive);
if (ide_set_dma_mode(drive, mode) == 0) if (ide_set_dma_mode(drive, mode) == 0)
hwif->dma_host_on(drive); hwif->dma_host_on(drive);
return; return;

View File

@ -277,23 +277,6 @@ sgiioc4_ide_dma_end(ide_drive_t * drive)
return dma_stat; return dma_stat;
} }
static int
sgiioc4_ide_dma_on(ide_drive_t * drive)
{
drive->using_dma = 1;
ide_toggle_bounce(drive, 1);
return 0;
}
static void sgiioc4_dma_off_quietly(ide_drive_t *drive)
{
drive->using_dma = 0;
ide_toggle_bounce(drive, 0);
drive->hwif->dma_host_off(drive);
}
static void sgiioc4_set_dma_mode(ide_drive_t *drive, const u8 speed) static void sgiioc4_set_dma_mode(ide_drive_t *drive, const u8 speed)
{ {
} }
@ -598,8 +581,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
hwif->dma_setup = &sgiioc4_ide_dma_setup; hwif->dma_setup = &sgiioc4_ide_dma_setup;
hwif->dma_start = &sgiioc4_ide_dma_start; hwif->dma_start = &sgiioc4_ide_dma_start;
hwif->ide_dma_end = &sgiioc4_ide_dma_end; hwif->ide_dma_end = &sgiioc4_ide_dma_end;
hwif->ide_dma_on = &sgiioc4_ide_dma_on;
hwif->dma_off_quietly = &sgiioc4_dma_off_quietly;
hwif->ide_dma_test_irq = &sgiioc4_ide_dma_test_irq; hwif->ide_dma_test_irq = &sgiioc4_ide_dma_test_irq;
hwif->dma_host_on = &sgiioc4_dma_host_on; hwif->dma_host_on = &sgiioc4_dma_host_on;
hwif->dma_host_off = &sgiioc4_dma_host_off; hwif->dma_host_off = &sgiioc4_dma_host_off;

View File

@ -1748,8 +1748,6 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
return; return;
} }
hwif->dma_off_quietly = &ide_dma_off_quietly;
hwif->ide_dma_on = &__ide_dma_on;
hwif->dma_setup = &pmac_ide_dma_setup; hwif->dma_setup = &pmac_ide_dma_setup;
hwif->dma_exec_cmd = &pmac_ide_dma_exec_cmd; hwif->dma_exec_cmd = &pmac_ide_dma_exec_cmd;
hwif->dma_start = &pmac_ide_dma_start; hwif->dma_start = &pmac_ide_dma_start;

View File

@ -546,8 +546,6 @@ typedef struct hwif_s {
void (*dma_exec_cmd)(ide_drive_t *, u8); void (*dma_exec_cmd)(ide_drive_t *, u8);
void (*dma_start)(ide_drive_t *); void (*dma_start)(ide_drive_t *);
int (*ide_dma_end)(ide_drive_t *drive); int (*ide_dma_end)(ide_drive_t *drive);
int (*ide_dma_on)(ide_drive_t *drive);
void (*dma_off_quietly)(ide_drive_t *drive);
int (*ide_dma_test_irq)(ide_drive_t *drive); int (*ide_dma_test_irq)(ide_drive_t *drive);
void (*ide_dma_clear_irq)(ide_drive_t *drive); void (*ide_dma_clear_irq)(ide_drive_t *drive);
void (*dma_host_on)(ide_drive_t *drive); void (*dma_host_on)(ide_drive_t *drive);
@ -1149,7 +1147,9 @@ static inline u8 ide_max_dma_mode(ide_drive_t *drive)
return ide_find_dma_mode(drive, XFER_UDMA_6); return ide_find_dma_mode(drive, XFER_UDMA_6);
} }
void ide_dma_off_quietly(ide_drive_t *);
void ide_dma_off(ide_drive_t *); void ide_dma_off(ide_drive_t *);
void ide_dma_on(ide_drive_t *);
int ide_set_dma(ide_drive_t *); int ide_set_dma(ide_drive_t *);
ide_startstop_t ide_dma_intr(ide_drive_t *); ide_startstop_t ide_dma_intr(ide_drive_t *);
@ -1161,9 +1161,7 @@ extern int ide_release_dma(ide_hwif_t *);
extern void ide_setup_dma(ide_hwif_t *, unsigned long, unsigned int); extern void ide_setup_dma(ide_hwif_t *, unsigned long, unsigned int);
void ide_dma_host_off(ide_drive_t *); void ide_dma_host_off(ide_drive_t *);
void ide_dma_off_quietly(ide_drive_t *);
void ide_dma_host_on(ide_drive_t *); void ide_dma_host_on(ide_drive_t *);
extern int __ide_dma_on(ide_drive_t *);
extern int ide_dma_setup(ide_drive_t *); extern int ide_dma_setup(ide_drive_t *);
extern void ide_dma_start(ide_drive_t *); extern void ide_dma_start(ide_drive_t *);
extern int __ide_dma_end(ide_drive_t *); extern int __ide_dma_end(ide_drive_t *);
@ -1175,7 +1173,9 @@ extern void ide_dma_timeout(ide_drive_t *);
static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; } static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
static inline u8 ide_find_dma_mode(ide_drive_t *drive, u8 speed) { return 0; } static inline u8 ide_find_dma_mode(ide_drive_t *drive, u8 speed) { return 0; }
static inline u8 ide_max_dma_mode(ide_drive_t *drive) { return 0; } static inline u8 ide_max_dma_mode(ide_drive_t *drive) { return 0; }
static inline void ide_dma_off_quietly(ide_drive_t *drive) { ; }
static inline void ide_dma_off(ide_drive_t *drive) { ; } static inline void ide_dma_off(ide_drive_t *drive) { ; }
static inline void ide_dma_on(ide_drive_t *drive) { ; }
static inline void ide_dma_verbose(ide_drive_t *drive) { ; } static inline void ide_dma_verbose(ide_drive_t *drive) { ; }
static inline int ide_set_dma(ide_drive_t *drive) { return 1; } static inline int ide_set_dma(ide_drive_t *drive) { return 1; }
#endif /* CONFIG_BLK_DEV_IDEDMA */ #endif /* CONFIG_BLK_DEV_IDEDMA */