linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/12] ide: add missing ide_rate_filter() calls to ->speedproc()-s
@ 2007-07-08 13:34 Bartlomiej Zolnierkiewicz
  2007-07-09 14:03 ` Sergei Shtylyov
  0 siblings, 1 reply; 3+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2007-07-08 13:34 UTC (permalink / raw)
  To: linux-ide


* Fix icside, cris-ide, au1xxx-ide, amd74xx, via82cxxx and pmac host drivers
  to use ide_rate_filter().

  This results in the following modes (from user requests) being clipped down:
  - invalid modes (values 0x46-0xFF)  [ for all hosts ]
  - unsupported by a host UDMA modes  [ for hosts which support UDMA]
  - all UDMA modes and MWDMA3-4 modes [ for hosts which doesn't support UDMA ]
  - invalid modes (values 0x25-0x39)  [ for hosts which doesn't support UDMA ]

* Host driver specific changes in behavior:

  icside:
    - no change

  cris-ide
    - clip unsupported UDMA3-6 modes down
    - fix BUG() on trying to set unsupported UDMA3-6 modes

  au1xxx-ide/pmac
    - clip unsupported UDMA modes down

  amd74xx/via82cxxx
    - clip unsupported UDMA modes down
    - fix random PIO timings being set for unsupported/invalid modes
    - fix unsupported/invalid modes being set on the device

* While at it remove no longer needed checks from pmac.c driver.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
This patch series goes before ide-add-ide-set-pio-take3.patch patch
("[PATCH] ide: add ide_set{_max}_pio() (take 3)") in the quilt tree.
The rediffed ide-add-ide-set-pio-take3.patch is also included for
completness.

 drivers/ide/arm/icside.c      |    3 +--
 drivers/ide/cris/ide-cris.c   |    2 ++
 drivers/ide/mips/au1xxx-ide.c |    2 ++
 drivers/ide/pci/amd74xx.c     |    2 ++
 drivers/ide/pci/via82cxxx.c   |    2 ++
 drivers/ide/ppc/pmac.c        |   10 ++--------
 6 files changed, 11 insertions(+), 10 deletions(-)

Index: b/drivers/ide/arm/icside.c
===================================================================
--- a/drivers/ide/arm/icside.c
+++ b/drivers/ide/arm/icside.c
@@ -255,8 +255,7 @@ static int icside_set_speed(ide_drive_t 
 	/*
 	 * Limit the transfer speed to MW_DMA_2.
 	 */
-	if (xfer_mode > XFER_MW_DMA_2)
-		xfer_mode = XFER_MW_DMA_2;
+	xfer_mode = ide_rate_filter(drive, xfer_mode);
 
 	switch (xfer_mode) {
 	case XFER_MW_DMA_2:
Index: b/drivers/ide/cris/ide-cris.c
===================================================================
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -730,6 +730,8 @@ static int speed_cris_ide(ide_drive_t *d
 {
 	int cyc = 0, dvs = 0, strobe = 0, hold = 0;
 
+	speed = ide_rate_filter(drive, speed);
+
 	if (speed >= XFER_PIO_0 && speed <= XFER_PIO_4) {
 		cris_set_pio_mode(drive, speed - XFER_PIO_0);
 		return ide_config_drive_speed(drive, speed);
Index: b/drivers/ide/mips/au1xxx-ide.c
===================================================================
--- a/drivers/ide/mips/au1xxx-ide.c
+++ b/drivers/ide/mips/au1xxx-ide.c
@@ -174,6 +174,8 @@ static int auide_tune_chipset (ide_drive
 	int mem_sttime;
 	int mem_stcfg;
 
+	speed = ide_rate_filter(drive, speed);
+
 	mem_sttime = 0;
 	mem_stcfg  = au_readl(MEM_STCFG2);
 
Index: b/drivers/ide/pci/amd74xx.c
===================================================================
--- a/drivers/ide/pci/amd74xx.c
+++ b/drivers/ide/pci/amd74xx.c
@@ -241,6 +241,8 @@ static int amd_set_drive(ide_drive_t *dr
 	struct ide_timing t, p;
 	int T, UT;
 
+	speed = ide_rate_filter(drive, speed);
+
 	if (speed != XFER_PIO_SLOW)
 		ide_config_drive_speed(drive, speed);
 
Index: b/drivers/ide/pci/via82cxxx.c
===================================================================
--- a/drivers/ide/pci/via82cxxx.c
+++ b/drivers/ide/pci/via82cxxx.c
@@ -164,6 +164,8 @@ static int via_set_drive(ide_drive_t *dr
 	struct ide_timing t, p;
 	unsigned int T, UT;
 
+	speed = ide_rate_filter(drive, speed);
+
 	if (speed != XFER_PIO_SLOW)
 		ide_config_drive_speed(drive, speed);
 
Index: b/drivers/ide/ppc/pmac.c
===================================================================
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -923,6 +923,8 @@ pmac_ide_tune_chipset (ide_drive_t *driv
 	pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
 	u32 *timings, *timings2;
 
+	speed = ide_rate_filter(drive, speed);
+
 	if (pmif == NULL)
 		return 1;
 		
@@ -932,17 +934,9 @@ pmac_ide_tune_chipset (ide_drive_t *driv
 	switch(speed) {
 #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
 		case XFER_UDMA_6:
-		        if (pmif->kind != controller_sh_ata6)
-				return 1;
 		case XFER_UDMA_5:
-			if (pmif->kind != controller_un_ata6 &&
-			    pmif->kind != controller_k2_ata6 &&
-			    pmif->kind != controller_sh_ata6)
-				return 1;
 		case XFER_UDMA_4:
 		case XFER_UDMA_3:
-			if (drive->hwif->cbl != ATA_CBL_PATA80)
-				return 1;
 		case XFER_UDMA_2:
 		case XFER_UDMA_1:
 		case XFER_UDMA_0:

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

* Re: [PATCH 1/12] ide: add missing ide_rate_filter() calls to ->speedproc()-s
  2007-07-08 13:34 [PATCH 1/12] ide: add missing ide_rate_filter() calls to ->speedproc()-s Bartlomiej Zolnierkiewicz
@ 2007-07-09 14:03 ` Sergei Shtylyov
  2007-07-10 20:25   ` Bartlomiej Zolnierkiewicz
  0 siblings, 1 reply; 3+ messages in thread
From: Sergei Shtylyov @ 2007-07-09 14:03 UTC (permalink / raw)
  To: Bartlomiej Zolnierkiewicz; +Cc: linux-ide

Hello.

Bartlomiej Zolnierkiewicz wrote:
> * Fix icside, cris-ide, au1xxx-ide, amd74xx, via82cxxx and pmac host drivers
>   to use ide_rate_filter().

>   This results in the following modes (from user requests) being clipped down:
>   - invalid modes (values 0x46-0xFF)  [ for all hosts ]
>   - unsupported by a host UDMA modes  [ for hosts which support UDMA]
>   - all UDMA modes and MWDMA3-4 modes [ for hosts which doesn't support UDMA ]
>   - invalid modes (values 0x25-0x39)  [ for hosts which doesn't support UDMA ]

    For plural 3rd person it would be "don't". ;-)
    Sorry for the grammar nitpicking

> * Host driver specific changes in behavior:

>   icside:
>     - no change

>   cris-ide
>     - clip unsupported UDMA3-6 modes down
>     - fix BUG() on trying to set unsupported UDMA3-6 modes

>   au1xxx-ide/pmac
>     - clip unsupported UDMA modes down

>   amd74xx/via82cxxx
>     - clip unsupported UDMA modes down
>     - fix random PIO timings being set for unsupported/invalid modes
>     - fix unsupported/invalid modes being set on the device

> * While at it remove no longer needed checks from pmac.c driver.

> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>

> ---
> This patch series goes before ide-add-ide-set-pio-take3.patch patch
> ("[PATCH] ide: add ide_set{_max}_pio() (take 3)") in the quilt tree.
> The rediffed ide-add-ide-set-pio-take3.patch is also included for
> completness.

> Index: b/drivers/ide/ppc/pmac.c
> ===================================================================
> --- a/drivers/ide/ppc/pmac.c
> +++ b/drivers/ide/ppc/pmac.c
> @@ -923,6 +923,8 @@ pmac_ide_tune_chipset (ide_drive_t *driv
>  	pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
>  	u32 *timings, *timings2;
>  
> +	speed = ide_rate_filter(drive, speed);
> +
>  	if (pmif == NULL)
>  		return 1;
>  		
> @@ -932,17 +934,9 @@ pmac_ide_tune_chipset (ide_drive_t *driv
>  	switch(speed) {
>  #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
>  		case XFER_UDMA_6:
> -		        if (pmif->kind != controller_sh_ata6)
> -				return 1;
>  		case XFER_UDMA_5:
> -			if (pmif->kind != controller_un_ata6 &&
> -			    pmif->kind != controller_k2_ata6 &&
> -			    pmif->kind != controller_sh_ata6)
> -				return 1;
>  		case XFER_UDMA_4:
>  		case XFER_UDMA_3:
> -			if (drive->hwif->cbl != ATA_CBL_PATA80)
> -				return 1;
>  		case XFER_UDMA_2:
>  		case XFER_UDMA_1:
>  		case XFER_UDMA_0:

    BTW, I just saw a stange code in this driver that clips hwif->udma_mask 
depending on pmif->cable_80. I somewhat doubt that it's necessary...

MBR, Sergei

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

* Re: [PATCH 1/12] ide: add missing ide_rate_filter() calls to ->speedproc()-s
  2007-07-09 14:03 ` Sergei Shtylyov
@ 2007-07-10 20:25   ` Bartlomiej Zolnierkiewicz
  0 siblings, 0 replies; 3+ messages in thread
From: Bartlomiej Zolnierkiewicz @ 2007-07-10 20:25 UTC (permalink / raw)
  To: Sergei Shtylyov; +Cc: linux-ide

On Monday 09 July 2007, Sergei Shtylyov wrote:
> Hello.
> 
> Bartlomiej Zolnierkiewicz wrote:
> > * Fix icside, cris-ide, au1xxx-ide, amd74xx, via82cxxx and pmac host drivers
> >   to use ide_rate_filter().
> 
> >   This results in the following modes (from user requests) being clipped down:
> >   - invalid modes (values 0x46-0xFF)  [ for all hosts ]
> >   - unsupported by a host UDMA modes  [ for hosts which support UDMA]
> >   - all UDMA modes and MWDMA3-4 modes [ for hosts which doesn't support UDMA ]
> >   - invalid modes (values 0x25-0x39)  [ for hosts which doesn't support UDMA ]
> 
>     For plural 3rd person it would be "don't". ;-)
>     Sorry for the grammar nitpicking

Fixed, thanks.

> > * Host driver specific changes in behavior:
> 
> >   icside:
> >     - no change
> 
> >   cris-ide
> >     - clip unsupported UDMA3-6 modes down
> >     - fix BUG() on trying to set unsupported UDMA3-6 modes
> 
> >   au1xxx-ide/pmac
> >     - clip unsupported UDMA modes down
> 
> >   amd74xx/via82cxxx
> >     - clip unsupported UDMA modes down
> >     - fix random PIO timings being set for unsupported/invalid modes
> >     - fix unsupported/invalid modes being set on the device
> 
> > * While at it remove no longer needed checks from pmac.c driver.
> 
> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> 
> Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>

added

> > ---
> > This patch series goes before ide-add-ide-set-pio-take3.patch patch
> > ("[PATCH] ide: add ide_set{_max}_pio() (take 3)") in the quilt tree.
> > The rediffed ide-add-ide-set-pio-take3.patch is also included for
> > completness.
> 
> > Index: b/drivers/ide/ppc/pmac.c
> > ===================================================================
> > --- a/drivers/ide/ppc/pmac.c
> > +++ b/drivers/ide/ppc/pmac.c
> > @@ -923,6 +923,8 @@ pmac_ide_tune_chipset (ide_drive_t *driv
> >  	pmac_ide_hwif_t* pmif = (pmac_ide_hwif_t *)HWIF(drive)->hwif_data;
> >  	u32 *timings, *timings2;
> >  
> > +	speed = ide_rate_filter(drive, speed);
> > +
> >  	if (pmif == NULL)
> >  		return 1;
> >  		
> > @@ -932,17 +934,9 @@ pmac_ide_tune_chipset (ide_drive_t *driv
> >  	switch(speed) {
> >  #ifdef CONFIG_BLK_DEV_IDEDMA_PMAC
> >  		case XFER_UDMA_6:
> > -		        if (pmif->kind != controller_sh_ata6)
> > -				return 1;
> >  		case XFER_UDMA_5:
> > -			if (pmif->kind != controller_un_ata6 &&
> > -			    pmif->kind != controller_k2_ata6 &&
> > -			    pmif->kind != controller_sh_ata6)
> > -				return 1;
> >  		case XFER_UDMA_4:
> >  		case XFER_UDMA_3:
> > -			if (drive->hwif->cbl != ATA_CBL_PATA80)
> > -				return 1;
> >  		case XFER_UDMA_2:
> >  		case XFER_UDMA_1:
> >  		case XFER_UDMA_0:
> 
>     BTW, I just saw a stange code in this driver that clips hwif->udma_mask 
> depending on pmif->cable_80. I somewhat doubt that it's necessary...

Yes, hwif->ultra_mask(s) shouldn't depend on pmif->cable_80.

This doesn't hurt nowadays but may hurt in the future (warmplug/hotplug).

Thanks,
Bart

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

end of thread, other threads:[~2007-07-10 22:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-08 13:34 [PATCH 1/12] ide: add missing ide_rate_filter() calls to ->speedproc()-s Bartlomiej Zolnierkiewicz
2007-07-09 14:03 ` Sergei Shtylyov
2007-07-10 20:25   ` Bartlomiej Zolnierkiewicz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).