mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] make __ide_dma_off() generic and remove ide_hwif_t->ide_dma_off
@ 2004-02-09 14:54 Bartlomiej Zolnierkiewicz
  2004-02-11 12:19 ` Andre Hedrick
  0 siblings, 1 reply; 3+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-02-09 14:54 UTC (permalink / raw)
  To: linux-ide; +Cc: linux-kernel


Incremental to "[PATCH] remove __ide_dma_count() and ide_hwif_t->ide_dma_count".

Move ide-dma.c:__ide_dma_off() outside of #ifdef CONFIG_BLK_DEV_IDEDMA_PCI,
so it can be used for all DMA capable hosts.  Remove ide_hwif_t->ide_dma_off.

 linux-2.6.3-rc1-bk1-root/drivers/ide/arm/icside.c   |    7 -------
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide-cd.c       |    6 +++---
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide-dma.c      |   14 +++++++-------
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide-floppy.c   |    4 ++--
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide-iops.c     |    2 +-
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide-tape.c     |    4 ++--
 linux-2.6.3-rc1-bk1-root/drivers/ide/ide.c          |    4 ++--
 linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sgiioc4.c  |    9 ---------
 linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sl82c105.c |   17 -----------------
 linux-2.6.3-rc1-bk1-root/drivers/ide/ppc/pmac.c     |    1 -
 linux-2.6.3-rc1-bk1-root/include/linux/ide.h        |    4 +---
 11 files changed, 18 insertions(+), 54 deletions(-)

diff -puN drivers/ide/arm/icside.c~ide_dma_off_cleanup drivers/ide/arm/icside.c
--- linux-2.6.3-rc1-bk1/drivers/ide/arm/icside.c~ide_dma_off_cleanup	2004-02-09 15:46:54.387152496 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/arm/icside.c	2004-02-09 15:46:54.450142920 +0100
@@ -341,12 +341,6 @@ static int icside_dma_off_quietly(ide_dr
 	return icside_dma_host_off(drive);
 }
 
-static int icside_dma_off(ide_drive_t *drive)
-{
-	printk("%s: DMA disabled\n", drive->name);
-	return icside_dma_off_quietly(drive);
-}
-
 static int icside_dma_host_on(ide_drive_t *drive)
 {
 	return 0;
@@ -643,7 +637,6 @@ static int icside_dma_init(ide_hwif_t *h
 	hwif->ide_dma_check	= icside_dma_check;
 	hwif->ide_dma_host_off	= icside_dma_host_off;
 	hwif->ide_dma_off_quietly = icside_dma_off_quietly;
-	hwif->ide_dma_off	= icside_dma_off;
 	hwif->ide_dma_host_on	= icside_dma_host_on;
 	hwif->ide_dma_on	= icside_dma_on;
 	hwif->ide_dma_read	= icside_dma_read;
diff -puN drivers/ide/ide.c~ide_dma_off_cleanup drivers/ide/ide.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide.c~ide_dma_off_cleanup	2004-02-09 15:46:54.391151888 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide.c	2004-02-09 15:46:54.452142616 +0100
@@ -839,7 +839,6 @@ void ide_unregister (unsigned int index)
 	hwif->ide_dma_end		= old_hwif.ide_dma_end;
 	hwif->ide_dma_check		= old_hwif.ide_dma_check;
 	hwif->ide_dma_on		= old_hwif.ide_dma_on;
-	hwif->ide_dma_off		= old_hwif.ide_dma_off;
 	hwif->ide_dma_off_quietly	= old_hwif.ide_dma_off_quietly;
 	hwif->ide_dma_test_irq		= old_hwif.ide_dma_test_irq;
 	hwif->ide_dma_host_on		= old_hwif.ide_dma_host_on;
@@ -1329,7 +1328,8 @@ static int set_using_dma (ide_drive_t *d
 		if (HWIF(drive)->ide_dma_check(drive)) return -EIO;
 		if (HWIF(drive)->ide_dma_on(drive)) return -EIO;
 	} else {
-		if (HWIF(drive)->ide_dma_off(drive)) return -EIO;
+		if (__ide_dma_off(drive))
+			return -EIO;
 	}
 	return 0;
 }
diff -puN drivers/ide/ide-cd.c~ide_dma_off_cleanup drivers/ide/ide-cd.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide-cd.c~ide_dma_off_cleanup	2004-02-09 15:46:54.395151280 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-cd.c	2004-02-09 15:46:54.456142008 +0100
@@ -1101,7 +1101,7 @@ static ide_startstop_t cdrom_read_intr (
 	if (dma) {
 		info->dma = 0;
 		if ((dma_error = HWIF(drive)->ide_dma_end(drive)))
-			HWIF(drive)->ide_dma_off(drive);
+			__ide_dma_off(drive);
 	}
 
 	if (cdrom_decode_status(drive, 0, &stat))
@@ -1720,7 +1720,7 @@ static ide_startstop_t cdrom_newpc_intr(
 	if (dma) {
 		if (dma_error) {
 			printk("ide-cd: dma error\n");
-			HWIF(drive)->ide_dma_off(drive);
+			__ide_dma_off(drive);
 			return DRIVER(drive)->error(drive, "dma error", stat);
 		}
 
@@ -1847,7 +1847,7 @@ static ide_startstop_t cdrom_write_intr(
 		info->dma = 0;
 		if ((dma_error = HWIF(drive)->ide_dma_end(drive))) {
 			printk("ide-cd: write dma error\n");
-			HWIF(drive)->ide_dma_off(drive);
+			__ide_dma_off(drive);
 		}
 	}
 
diff -puN drivers/ide/ide-dma.c~ide_dma_off_cleanup drivers/ide/ide-dma.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide-dma.c~ide_dma_off_cleanup	2004-02-09 15:46:54.412148696 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-dma.c	2004-02-09 15:46:54.458141704 +0100
@@ -414,7 +414,7 @@ static int config_drive_for_dma (ide_dri
 	if ((id->capability & 1) && hwif->autodma) {
 		/* Consult the list of known "bad" drives */
 		if (__ide_dma_bad_drive(drive))
-			return hwif->ide_dma_off(drive);
+			return __ide_dma_off(drive);
 
 		/*
 		 * Enable DMA on any drive that has
@@ -520,13 +520,14 @@ int __ide_dma_off_quietly (ide_drive_t *
 }
 
 EXPORT_SYMBOL(__ide_dma_off_quietly);
+#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
 
 /**
- *	__ide_dma_host_off	-	Generic DMA kill
- *	@drive: drive to control
+ *	__ide_dma_off	-	disable DMA on a device
+ *	@drive: drive to disable DMA on
  *
- *	Turn off the current DMA on this IDE controller. Inform the
- *	user that DMA has been disabled. 
+ *	Disable IDE DMA for a device on this IDE controller.
+ *	Inform the user that DMA has been disabled.
  */
 
 int __ide_dma_off (ide_drive_t *drive)
@@ -537,6 +538,7 @@ int __ide_dma_off (ide_drive_t *drive)
 
 EXPORT_SYMBOL(__ide_dma_off);
 
+#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
 /**
  *	__ide_dma_host_on	-	Enable DMA on a host
  *	@drive: drive to enable for DMA
@@ -1049,8 +1051,6 @@ void ide_setup_dma (ide_hwif_t *hwif, un
 	if (!(hwif->dma_prdtable))
 		hwif->dma_prdtable	= (hwif->dma_base + 4);
 
-	if (!hwif->ide_dma_off)
-		hwif->ide_dma_off = &__ide_dma_off;
 	if (!hwif->ide_dma_off_quietly)
 		hwif->ide_dma_off_quietly = &__ide_dma_off_quietly;
 	if (!hwif->ide_dma_host_off)
diff -puN drivers/ide/ide-floppy.c~ide_dma_off_cleanup drivers/ide/ide-floppy.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide-floppy.c~ide_dma_off_cleanup	2004-02-09 15:46:54.418147784 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-floppy.c	2004-02-09 15:46:54.460141400 +0100
@@ -830,7 +830,7 @@ static ide_startstop_t idefloppy_pc_intr
 	if (test_and_clear_bit(PC_DMA_IN_PROGRESS, &pc->flags)) {
 		printk(KERN_ERR "ide-floppy: The floppy wants to issue "
 			"more interrupts in DMA mode\n");
-		(void) HWIF(drive)->ide_dma_off(drive);
+		(void)__ide_dma_off(drive);
 		return ide_do_reset(drive);
 	}
 
@@ -1045,7 +1045,7 @@ static ide_startstop_t idefloppy_issue_p
 	bcount.all = min(pc->request_transfer, 63 * 1024);
 
 	if (test_and_clear_bit(PC_DMA_ERROR, &pc->flags)) {
-		(void) HWIF(drive)->ide_dma_off(drive);
+		(void)__ide_dma_off(drive);
 	}
 	feature.all = 0;
 
diff -puN drivers/ide/ide-iops.c~ide_dma_off_cleanup drivers/ide/ide-iops.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide-iops.c~ide_dma_off_cleanup	2004-02-09 15:46:54.422147176 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-iops.c	2004-02-09 15:46:54.463140944 +0100
@@ -1130,7 +1130,7 @@ void check_dma_crc (ide_drive_t *drive)
 		if (drive->current_speed >= XFER_SW_DMA_0)
 			(void) HWIF(drive)->ide_dma_on(drive);
 	} else {
-		(void) HWIF(drive)->ide_dma_off(drive);
+		(void)__ide_dma_off(drive);
 	}
 }
 
diff -puN drivers/ide/ide-tape.c~ide_dma_off_cleanup drivers/ide/ide-tape.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ide-tape.c~ide_dma_off_cleanup	2004-02-09 15:46:54.427146416 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-tape.c	2004-02-09 15:46:54.470139880 +0100
@@ -2198,7 +2198,7 @@ static ide_startstop_t idetape_pc_intr (
 		printk(KERN_ERR "ide-tape: The tape wants to issue more "
 				"interrupts in DMA mode\n");
 		printk(KERN_ERR "ide-tape: DMA disabled, reverting to PIO\n");
-		(void) HWIF(drive)->ide_dma_off(drive);
+		(void)__ide_dma_off(drive);
 		return ide_do_reset(drive);
 	}
 	/* Get the number of bytes to transfer on this interrupt. */
@@ -2411,7 +2411,7 @@ static ide_startstop_t idetape_issue_pac
 	if (test_and_clear_bit(PC_DMA_ERROR, &pc->flags)) {
 		printk(KERN_WARNING "ide-tape: DMA disabled, "
 				"reverting to PIO\n");
-		(void) HWIF(drive)->ide_dma_off(drive);
+		(void)__ide_dma_off(drive);
 	}
 	if (test_bit(PC_DMA_RECOMMENDED, &pc->flags) && drive->using_dma) {
 		if (test_bit(PC_WRITING, &pc->flags))
diff -puN drivers/ide/pci/sgiioc4.c~ide_dma_off_cleanup drivers/ide/pci/sgiioc4.c
--- linux-2.6.3-rc1-bk1/drivers/ide/pci/sgiioc4.c~ide_dma_off_cleanup	2004-02-09 15:46:54.433145504 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sgiioc4.c	2004-02-09 15:46:54.471139728 +0100
@@ -303,14 +303,6 @@ sgiioc4_ide_dma_on(ide_drive_t * drive)
 }
 
 static int
-sgiioc4_ide_dma_off(ide_drive_t * drive)
-{
-	printk(KERN_INFO "%s: DMA disabled\n", drive->name);
-
-	return HWIF(drive)->ide_dma_off_quietly(drive);
-}
-
-static int
 sgiioc4_ide_dma_off_quietly(ide_drive_t * drive)
 {
 	drive->using_dma = 0;
@@ -644,7 +636,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
 	hwif->ide_dma_end = &sgiioc4_ide_dma_end;
 	hwif->ide_dma_check = &sgiioc4_ide_dma_check;
 	hwif->ide_dma_on = &sgiioc4_ide_dma_on;
-	hwif->ide_dma_off = &sgiioc4_ide_dma_off;
 	hwif->ide_dma_off_quietly = &sgiioc4_ide_dma_off_quietly;
 	hwif->ide_dma_test_irq = &sgiioc4_ide_dma_test_irq;
 	hwif->ide_dma_host_on = &sgiioc4_ide_dma_host_on;
diff -puN drivers/ide/pci/sl82c105.c~ide_dma_off_cleanup drivers/ide/pci/sl82c105.c
--- linux-2.6.3-rc1-bk1/drivers/ide/pci/sl82c105.c~ide_dma_off_cleanup	2004-02-09 15:46:54.437144896 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sl82c105.c	2004-02-09 15:46:54.472139576 +0100
@@ -272,22 +272,6 @@ static int sl82c105_ide_dma_on (ide_driv
 	return __ide_dma_on(drive);
 }
 
-static int sl82c105_ide_dma_off (ide_drive_t *drive)
-{
-	u8 speed = XFER_PIO_0;
-	int rc;
-	
-	DBG(("sl82c105_ide_dma_off(drive:%s)\n", drive->name));
-
-	rc = __ide_dma_off(drive);
-	if (drive->pio_speed)
-		speed = drive->pio_speed - XFER_PIO_0;
-	config_for_pio(drive, speed, 0, 1);
-	drive->current_speed = drive->pio_speed;
-
-	return rc;
-}
-
 static int sl82c105_ide_dma_off_quietly (ide_drive_t *drive)
 {
 	u8 speed = XFER_PIO_0;
@@ -485,7 +469,6 @@ static void __init init_hwif_sl82c105(id
 #ifdef CONFIG_BLK_DEV_IDEDMA
 	hwif->ide_dma_check = &sl82c105_check_drive;
 	hwif->ide_dma_on = &sl82c105_ide_dma_on;
-	hwif->ide_dma_off = &sl82c105_ide_dma_off;
 	hwif->ide_dma_off_quietly = &sl82c105_ide_dma_off_quietly;
 	hwif->ide_dma_lostirq = &sl82c105_ide_dma_lost_irq;
 	hwif->ide_dma_begin = &sl82c105_ide_dma_begin;
diff -puN drivers/ide/ppc/pmac.c~ide_dma_off_cleanup drivers/ide/ppc/pmac.c
--- linux-2.6.3-rc1-bk1/drivers/ide/ppc/pmac.c~ide_dma_off_cleanup	2004-02-09 15:46:54.440144440 +0100
+++ linux-2.6.3-rc1-bk1-root/drivers/ide/ppc/pmac.c	2004-02-09 15:46:54.474139272 +0100
@@ -2142,7 +2142,6 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif
 				    	pmif->dma_table_cpu, pmif->dma_table_dma);
 		return;
 	}
-	hwif->ide_dma_off = &__ide_dma_off;
 	hwif->ide_dma_off_quietly = &__ide_dma_off_quietly;
 	hwif->ide_dma_on = &__ide_dma_on;
 	hwif->ide_dma_check = &pmac_ide_dma_check;
diff -puN include/linux/ide.h~ide_dma_off_cleanup include/linux/ide.h
--- linux-2.6.3-rc1-bk1/include/linux/ide.h~ide_dma_off_cleanup	2004-02-09 15:46:54.447143376 +0100
+++ linux-2.6.3-rc1-bk1-root/include/linux/ide.h	2004-02-09 15:46:54.478138664 +0100
@@ -790,7 +790,6 @@ typedef struct ide_dma_ops_s {
 	int (*ide_dma_end)(ide_drive_t *drive);
 	int (*ide_dma_check)(ide_drive_t *drive);
 	int (*ide_dma_on)(ide_drive_t *drive);
-	int (*ide_dma_off)(ide_drive_t *drive);
 	int (*ide_dma_off_quietly)(ide_drive_t *drive);
 	int (*ide_dma_test_irq)(ide_drive_t *drive);
 	int (*ide_dma_host_on)(ide_drive_t *drive);
@@ -926,7 +925,6 @@ typedef struct hwif_s {
 	int (*ide_dma_end)(ide_drive_t *drive);
 	int (*ide_dma_check)(ide_drive_t *drive);
 	int (*ide_dma_on)(ide_drive_t *drive);
-	int (*ide_dma_off)(ide_drive_t *drive);
 	int (*ide_dma_off_quietly)(ide_drive_t *drive);
 	int (*ide_dma_test_irq)(ide_drive_t *drive);
 	int (*ide_dma_host_on)(ide_drive_t *drive);
@@ -1594,6 +1592,7 @@ extern void ide_setup_pci_devices(struct
 #ifdef CONFIG_BLK_DEV_IDEDMA
 int __ide_dma_bad_drive(ide_drive_t *);
 int __ide_dma_good_drive(ide_drive_t *);
+int __ide_dma_off(ide_drive_t *);
 
 #ifdef CONFIG_BLK_DEV_IDEDMA_PCI
 extern int ide_build_sglist(ide_drive_t *, struct request *);
@@ -1607,7 +1606,6 @@ extern int ide_start_dma(ide_hwif_t *, i
 
 extern int __ide_dma_host_off(ide_drive_t *);
 extern int __ide_dma_off_quietly(ide_drive_t *);
-extern int __ide_dma_off(ide_drive_t *);
 extern int __ide_dma_host_on(ide_drive_t *);
 extern int __ide_dma_on(ide_drive_t *);
 extern int __ide_dma_check(ide_drive_t *);

_


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] make __ide_dma_off() generic and remove ide_hwif_t->ide_dma_off
  2004-02-09 14:54 [PATCH] make __ide_dma_off() generic and remove ide_hwif_t->ide_dma_off Bartlomiej Zolnierkiewicz
@ 2004-02-11 12:19 ` Andre Hedrick
  2004-02-11 15:22   ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 3+ messages in thread
From: Andre Hedrick @ 2004-02-11 12:19 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: linux-ide, linux-kernel


Bartlomiej,

__ide_dma_count

This is for VDMA, PIO over DMA.

When the transport moves to only MMIO, PIO operations are tunneled.
Just a little hit.

Andre Hedrick
LAD Storage Consulting Group

On Mon, 9 Feb 2004, Bartlomiej Zolnierkiewicz wrote:

> 
> Incremental to "[PATCH] remove __ide_dma_count() and ide_hwif_t->ide_dma_count".
> 
> Move ide-dma.c:__ide_dma_off() outside of #ifdef CONFIG_BLK_DEV_IDEDMA_PCI,
> so it can be used for all DMA capable hosts.  Remove ide_hwif_t->ide_dma_off.
> 
>  linux-2.6.3-rc1-bk1-root/drivers/ide/arm/icside.c   |    7 -------
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide-cd.c       |    6 +++---
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide-dma.c      |   14 +++++++-------
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide-floppy.c   |    4 ++--
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide-iops.c     |    2 +-
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide-tape.c     |    4 ++--
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ide.c          |    4 ++--
>  linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sgiioc4.c  |    9 ---------
>  linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sl82c105.c |   17 -----------------
>  linux-2.6.3-rc1-bk1-root/drivers/ide/ppc/pmac.c     |    1 -
>  linux-2.6.3-rc1-bk1-root/include/linux/ide.h        |    4 +---
>  11 files changed, 18 insertions(+), 54 deletions(-)
> 
> diff -puN drivers/ide/arm/icside.c~ide_dma_off_cleanup drivers/ide/arm/icside.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/arm/icside.c~ide_dma_off_cleanup	2004-02-09 15:46:54.387152496 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/arm/icside.c	2004-02-09 15:46:54.450142920 +0100
> @@ -341,12 +341,6 @@ static int icside_dma_off_quietly(ide_dr
>  	return icside_dma_host_off(drive);
>  }
>  
> -static int icside_dma_off(ide_drive_t *drive)
> -{
> -	printk("%s: DMA disabled\n", drive->name);
> -	return icside_dma_off_quietly(drive);
> -}
> -
>  static int icside_dma_host_on(ide_drive_t *drive)
>  {
>  	return 0;
> @@ -643,7 +637,6 @@ static int icside_dma_init(ide_hwif_t *h
>  	hwif->ide_dma_check	= icside_dma_check;
>  	hwif->ide_dma_host_off	= icside_dma_host_off;
>  	hwif->ide_dma_off_quietly = icside_dma_off_quietly;
> -	hwif->ide_dma_off	= icside_dma_off;
>  	hwif->ide_dma_host_on	= icside_dma_host_on;
>  	hwif->ide_dma_on	= icside_dma_on;
>  	hwif->ide_dma_read	= icside_dma_read;
> diff -puN drivers/ide/ide.c~ide_dma_off_cleanup drivers/ide/ide.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide.c~ide_dma_off_cleanup	2004-02-09 15:46:54.391151888 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide.c	2004-02-09 15:46:54.452142616 +0100
> @@ -839,7 +839,6 @@ void ide_unregister (unsigned int index)
>  	hwif->ide_dma_end		= old_hwif.ide_dma_end;
>  	hwif->ide_dma_check		= old_hwif.ide_dma_check;
>  	hwif->ide_dma_on		= old_hwif.ide_dma_on;
> -	hwif->ide_dma_off		= old_hwif.ide_dma_off;
>  	hwif->ide_dma_off_quietly	= old_hwif.ide_dma_off_quietly;
>  	hwif->ide_dma_test_irq		= old_hwif.ide_dma_test_irq;
>  	hwif->ide_dma_host_on		= old_hwif.ide_dma_host_on;
> @@ -1329,7 +1328,8 @@ static int set_using_dma (ide_drive_t *d
>  		if (HWIF(drive)->ide_dma_check(drive)) return -EIO;
>  		if (HWIF(drive)->ide_dma_on(drive)) return -EIO;
>  	} else {
> -		if (HWIF(drive)->ide_dma_off(drive)) return -EIO;
> +		if (__ide_dma_off(drive))
> +			return -EIO;
>  	}
>  	return 0;
>  }
> diff -puN drivers/ide/ide-cd.c~ide_dma_off_cleanup drivers/ide/ide-cd.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide-cd.c~ide_dma_off_cleanup	2004-02-09 15:46:54.395151280 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-cd.c	2004-02-09 15:46:54.456142008 +0100
> @@ -1101,7 +1101,7 @@ static ide_startstop_t cdrom_read_intr (
>  	if (dma) {
>  		info->dma = 0;
>  		if ((dma_error = HWIF(drive)->ide_dma_end(drive)))
> -			HWIF(drive)->ide_dma_off(drive);
> +			__ide_dma_off(drive);
>  	}
>  
>  	if (cdrom_decode_status(drive, 0, &stat))
> @@ -1720,7 +1720,7 @@ static ide_startstop_t cdrom_newpc_intr(
>  	if (dma) {
>  		if (dma_error) {
>  			printk("ide-cd: dma error\n");
> -			HWIF(drive)->ide_dma_off(drive);
> +			__ide_dma_off(drive);
>  			return DRIVER(drive)->error(drive, "dma error", stat);
>  		}
>  
> @@ -1847,7 +1847,7 @@ static ide_startstop_t cdrom_write_intr(
>  		info->dma = 0;
>  		if ((dma_error = HWIF(drive)->ide_dma_end(drive))) {
>  			printk("ide-cd: write dma error\n");
> -			HWIF(drive)->ide_dma_off(drive);
> +			__ide_dma_off(drive);
>  		}
>  	}
>  
> diff -puN drivers/ide/ide-dma.c~ide_dma_off_cleanup drivers/ide/ide-dma.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide-dma.c~ide_dma_off_cleanup	2004-02-09 15:46:54.412148696 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-dma.c	2004-02-09 15:46:54.458141704 +0100
> @@ -414,7 +414,7 @@ static int config_drive_for_dma (ide_dri
>  	if ((id->capability & 1) && hwif->autodma) {
>  		/* Consult the list of known "bad" drives */
>  		if (__ide_dma_bad_drive(drive))
> -			return hwif->ide_dma_off(drive);
> +			return __ide_dma_off(drive);
>  
>  		/*
>  		 * Enable DMA on any drive that has
> @@ -520,13 +520,14 @@ int __ide_dma_off_quietly (ide_drive_t *
>  }
>  
>  EXPORT_SYMBOL(__ide_dma_off_quietly);
> +#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
>  
>  /**
> - *	__ide_dma_host_off	-	Generic DMA kill
> - *	@drive: drive to control
> + *	__ide_dma_off	-	disable DMA on a device
> + *	@drive: drive to disable DMA on
>   *
> - *	Turn off the current DMA on this IDE controller. Inform the
> - *	user that DMA has been disabled. 
> + *	Disable IDE DMA for a device on this IDE controller.
> + *	Inform the user that DMA has been disabled.
>   */
>  
>  int __ide_dma_off (ide_drive_t *drive)
> @@ -537,6 +538,7 @@ int __ide_dma_off (ide_drive_t *drive)
>  
>  EXPORT_SYMBOL(__ide_dma_off);
>  
> +#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
>  /**
>   *	__ide_dma_host_on	-	Enable DMA on a host
>   *	@drive: drive to enable for DMA
> @@ -1049,8 +1051,6 @@ void ide_setup_dma (ide_hwif_t *hwif, un
>  	if (!(hwif->dma_prdtable))
>  		hwif->dma_prdtable	= (hwif->dma_base + 4);
>  
> -	if (!hwif->ide_dma_off)
> -		hwif->ide_dma_off = &__ide_dma_off;
>  	if (!hwif->ide_dma_off_quietly)
>  		hwif->ide_dma_off_quietly = &__ide_dma_off_quietly;
>  	if (!hwif->ide_dma_host_off)
> diff -puN drivers/ide/ide-floppy.c~ide_dma_off_cleanup drivers/ide/ide-floppy.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide-floppy.c~ide_dma_off_cleanup	2004-02-09 15:46:54.418147784 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-floppy.c	2004-02-09 15:46:54.460141400 +0100
> @@ -830,7 +830,7 @@ static ide_startstop_t idefloppy_pc_intr
>  	if (test_and_clear_bit(PC_DMA_IN_PROGRESS, &pc->flags)) {
>  		printk(KERN_ERR "ide-floppy: The floppy wants to issue "
>  			"more interrupts in DMA mode\n");
> -		(void) HWIF(drive)->ide_dma_off(drive);
> +		(void)__ide_dma_off(drive);
>  		return ide_do_reset(drive);
>  	}
>  
> @@ -1045,7 +1045,7 @@ static ide_startstop_t idefloppy_issue_p
>  	bcount.all = min(pc->request_transfer, 63 * 1024);
>  
>  	if (test_and_clear_bit(PC_DMA_ERROR, &pc->flags)) {
> -		(void) HWIF(drive)->ide_dma_off(drive);
> +		(void)__ide_dma_off(drive);
>  	}
>  	feature.all = 0;
>  
> diff -puN drivers/ide/ide-iops.c~ide_dma_off_cleanup drivers/ide/ide-iops.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide-iops.c~ide_dma_off_cleanup	2004-02-09 15:46:54.422147176 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-iops.c	2004-02-09 15:46:54.463140944 +0100
> @@ -1130,7 +1130,7 @@ void check_dma_crc (ide_drive_t *drive)
>  		if (drive->current_speed >= XFER_SW_DMA_0)
>  			(void) HWIF(drive)->ide_dma_on(drive);
>  	} else {
> -		(void) HWIF(drive)->ide_dma_off(drive);
> +		(void)__ide_dma_off(drive);
>  	}
>  }
>  
> diff -puN drivers/ide/ide-tape.c~ide_dma_off_cleanup drivers/ide/ide-tape.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ide-tape.c~ide_dma_off_cleanup	2004-02-09 15:46:54.427146416 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ide-tape.c	2004-02-09 15:46:54.470139880 +0100
> @@ -2198,7 +2198,7 @@ static ide_startstop_t idetape_pc_intr (
>  		printk(KERN_ERR "ide-tape: The tape wants to issue more "
>  				"interrupts in DMA mode\n");
>  		printk(KERN_ERR "ide-tape: DMA disabled, reverting to PIO\n");
> -		(void) HWIF(drive)->ide_dma_off(drive);
> +		(void)__ide_dma_off(drive);
>  		return ide_do_reset(drive);
>  	}
>  	/* Get the number of bytes to transfer on this interrupt. */
> @@ -2411,7 +2411,7 @@ static ide_startstop_t idetape_issue_pac
>  	if (test_and_clear_bit(PC_DMA_ERROR, &pc->flags)) {
>  		printk(KERN_WARNING "ide-tape: DMA disabled, "
>  				"reverting to PIO\n");
> -		(void) HWIF(drive)->ide_dma_off(drive);
> +		(void)__ide_dma_off(drive);
>  	}
>  	if (test_bit(PC_DMA_RECOMMENDED, &pc->flags) && drive->using_dma) {
>  		if (test_bit(PC_WRITING, &pc->flags))
> diff -puN drivers/ide/pci/sgiioc4.c~ide_dma_off_cleanup drivers/ide/pci/sgiioc4.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/pci/sgiioc4.c~ide_dma_off_cleanup	2004-02-09 15:46:54.433145504 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sgiioc4.c	2004-02-09 15:46:54.471139728 +0100
> @@ -303,14 +303,6 @@ sgiioc4_ide_dma_on(ide_drive_t * drive)
>  }
>  
>  static int
> -sgiioc4_ide_dma_off(ide_drive_t * drive)
> -{
> -	printk(KERN_INFO "%s: DMA disabled\n", drive->name);
> -
> -	return HWIF(drive)->ide_dma_off_quietly(drive);
> -}
> -
> -static int
>  sgiioc4_ide_dma_off_quietly(ide_drive_t * drive)
>  {
>  	drive->using_dma = 0;
> @@ -644,7 +636,6 @@ ide_init_sgiioc4(ide_hwif_t * hwif)
>  	hwif->ide_dma_end = &sgiioc4_ide_dma_end;
>  	hwif->ide_dma_check = &sgiioc4_ide_dma_check;
>  	hwif->ide_dma_on = &sgiioc4_ide_dma_on;
> -	hwif->ide_dma_off = &sgiioc4_ide_dma_off;
>  	hwif->ide_dma_off_quietly = &sgiioc4_ide_dma_off_quietly;
>  	hwif->ide_dma_test_irq = &sgiioc4_ide_dma_test_irq;
>  	hwif->ide_dma_host_on = &sgiioc4_ide_dma_host_on;
> diff -puN drivers/ide/pci/sl82c105.c~ide_dma_off_cleanup drivers/ide/pci/sl82c105.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/pci/sl82c105.c~ide_dma_off_cleanup	2004-02-09 15:46:54.437144896 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/pci/sl82c105.c	2004-02-09 15:46:54.472139576 +0100
> @@ -272,22 +272,6 @@ static int sl82c105_ide_dma_on (ide_driv
>  	return __ide_dma_on(drive);
>  }
>  
> -static int sl82c105_ide_dma_off (ide_drive_t *drive)
> -{
> -	u8 speed = XFER_PIO_0;
> -	int rc;
> -	
> -	DBG(("sl82c105_ide_dma_off(drive:%s)\n", drive->name));
> -
> -	rc = __ide_dma_off(drive);
> -	if (drive->pio_speed)
> -		speed = drive->pio_speed - XFER_PIO_0;
> -	config_for_pio(drive, speed, 0, 1);
> -	drive->current_speed = drive->pio_speed;
> -
> -	return rc;
> -}
> -
>  static int sl82c105_ide_dma_off_quietly (ide_drive_t *drive)
>  {
>  	u8 speed = XFER_PIO_0;
> @@ -485,7 +469,6 @@ static void __init init_hwif_sl82c105(id
>  #ifdef CONFIG_BLK_DEV_IDEDMA
>  	hwif->ide_dma_check = &sl82c105_check_drive;
>  	hwif->ide_dma_on = &sl82c105_ide_dma_on;
> -	hwif->ide_dma_off = &sl82c105_ide_dma_off;
>  	hwif->ide_dma_off_quietly = &sl82c105_ide_dma_off_quietly;
>  	hwif->ide_dma_lostirq = &sl82c105_ide_dma_lost_irq;
>  	hwif->ide_dma_begin = &sl82c105_ide_dma_begin;
> diff -puN drivers/ide/ppc/pmac.c~ide_dma_off_cleanup drivers/ide/ppc/pmac.c
> --- linux-2.6.3-rc1-bk1/drivers/ide/ppc/pmac.c~ide_dma_off_cleanup	2004-02-09 15:46:54.440144440 +0100
> +++ linux-2.6.3-rc1-bk1-root/drivers/ide/ppc/pmac.c	2004-02-09 15:46:54.474139272 +0100
> @@ -2142,7 +2142,6 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif
>  				    	pmif->dma_table_cpu, pmif->dma_table_dma);
>  		return;
>  	}
> -	hwif->ide_dma_off = &__ide_dma_off;
>  	hwif->ide_dma_off_quietly = &__ide_dma_off_quietly;
>  	hwif->ide_dma_on = &__ide_dma_on;
>  	hwif->ide_dma_check = &pmac_ide_dma_check;
> diff -puN include/linux/ide.h~ide_dma_off_cleanup include/linux/ide.h
> --- linux-2.6.3-rc1-bk1/include/linux/ide.h~ide_dma_off_cleanup	2004-02-09 15:46:54.447143376 +0100
> +++ linux-2.6.3-rc1-bk1-root/include/linux/ide.h	2004-02-09 15:46:54.478138664 +0100
> @@ -790,7 +790,6 @@ typedef struct ide_dma_ops_s {
>  	int (*ide_dma_end)(ide_drive_t *drive);
>  	int (*ide_dma_check)(ide_drive_t *drive);
>  	int (*ide_dma_on)(ide_drive_t *drive);
> -	int (*ide_dma_off)(ide_drive_t *drive);
>  	int (*ide_dma_off_quietly)(ide_drive_t *drive);
>  	int (*ide_dma_test_irq)(ide_drive_t *drive);
>  	int (*ide_dma_host_on)(ide_drive_t *drive);
> @@ -926,7 +925,6 @@ typedef struct hwif_s {
>  	int (*ide_dma_end)(ide_drive_t *drive);
>  	int (*ide_dma_check)(ide_drive_t *drive);
>  	int (*ide_dma_on)(ide_drive_t *drive);
> -	int (*ide_dma_off)(ide_drive_t *drive);
>  	int (*ide_dma_off_quietly)(ide_drive_t *drive);
>  	int (*ide_dma_test_irq)(ide_drive_t *drive);
>  	int (*ide_dma_host_on)(ide_drive_t *drive);
> @@ -1594,6 +1592,7 @@ extern void ide_setup_pci_devices(struct
>  #ifdef CONFIG_BLK_DEV_IDEDMA
>  int __ide_dma_bad_drive(ide_drive_t *);
>  int __ide_dma_good_drive(ide_drive_t *);
> +int __ide_dma_off(ide_drive_t *);
>  
>  #ifdef CONFIG_BLK_DEV_IDEDMA_PCI
>  extern int ide_build_sglist(ide_drive_t *, struct request *);
> @@ -1607,7 +1606,6 @@ extern int ide_start_dma(ide_hwif_t *, i
>  
>  extern int __ide_dma_host_off(ide_drive_t *);
>  extern int __ide_dma_off_quietly(ide_drive_t *);
> -extern int __ide_dma_off(ide_drive_t *);
>  extern int __ide_dma_host_on(ide_drive_t *);
>  extern int __ide_dma_on(ide_drive_t *);
>  extern int __ide_dma_check(ide_drive_t *);
> 
> _
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] make __ide_dma_off() generic and remove ide_hwif_t->ide_dma_off
  2004-02-11 12:19 ` Andre Hedrick
@ 2004-02-11 15:22   ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 3+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2004-02-11 15:22 UTC (permalink / raw)
  To: Andre Hedrick; +Cc: linux-ide, linux-kernel

On Wednesday 11 of February 2004 13:19, Andre Hedrick wrote:
> Bartlomiej,
>
> __ide_dma_count
>
> This is for VDMA, PIO over DMA.

This *supposes* to be for VDMA, but since its introduction in kernel 2.5.35
(released on 15-Sep-2002!) it does *nothing*.

> When the transport moves to only MMIO, PIO operations are tunneled.
> Just a little hit.
>
> Andre Hedrick
> LAD Storage Consulting Group
>
> On Mon, 9 Feb 2004, Bartlomiej Zolnierkiewicz wrote:
> > Incremental to "[PATCH] remove __ide_dma_count() and
> > ide_hwif_t->ide_dma_count".
> >
> > Move ide-dma.c:__ide_dma_off() outside of #ifdef
> > CONFIG_BLK_DEV_IDEDMA_PCI, so it can be used for all DMA capable hosts. 
> > Remove ide_hwif_t->ide_dma_off.

>From the previous mail:

[PATCH] remove __ide_dma_count() and ide_hwif_t->ide_dma_count

Incremental to "[PATCH] remove ide_dma_{good,bad}_drive from ide_hwif_t".

->ide_dma_count() was introduced in kernel 2.5.35 and was meant to add support
for host FIFO counters (for VDMA), but is only a wrapper for ->ide_dma_begin()
(even for siimage.c b/c SIIMAGE_VIRTUAL_DMAPIO is undefined).

Moreover it should be possible to add VDMA code directly to ->ide_dma_begin().


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-02-11 15:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-02-09 14:54 [PATCH] make __ide_dma_off() generic and remove ide_hwif_t->ide_dma_off Bartlomiej Zolnierkiewicz
2004-02-11 12:19 ` Andre Hedrick
2004-02-11 15:22   ` Bartlomiej Zolnierkiewicz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®