Re: [PATCH v3] scsi: NCR5380: use msecs_to_jiffies for conversions

2015-02-04 Thread Finn Thain

On Tue, 3 Feb 2015, Nicholas Mc Guire wrote:

 This is only an API consolidation to make things more readable.

Please remove the above; the g_NCR5380.c change invalidates it.

 Instances of  var * HZ / 1000  are replaced by  msecs_to_jiffies(var).
 In addition some timing constants that assumed HZ 100 were adjusted
 to HZ independent settings based on review of the original drivers in 
 1.0.31 and 2.2.16.
 
 Signed-off-by: Nicholas Mc Guire hof...@osadl.org
 ---
 
 v2: the original patch was not taking care of all the dependencies
 as reported by Finn Thain fth...@telegraphics.com.au - this
 version now uses the suggested config to check the patch.
 v3: g_NCR5380.c changes fixed up based on feedback from Michael Schmitz
 schmitz...@gmail.com as these settings were from around 1.0.31
 kernel (or earlier) where HZ was 100 only - thus the unit here is
 actually 10s of microseconds. This was verified by checking the
 setting changes against 2.2.16 indicating that it was forgotten in
 1998/99.
 
 Converting milliseconds to jiffies by val * HZ / 1000 is technically
 ok but msecs_to_jiffies(val) is the cleaner solution and handles all
 corner cases correctly. This is a minor API cleanup only.
 
 This patch was only compile tested with i386_defconfig + CONFIG_ISA=y
 as well as all dependent drivers enabled as modules:
 CONFIG_SCSI_LOWLEVEL=y, CONFIG_SCSI_GENERIC_NCR5380=m
 CONFIG_SCSI_DMX3191D=m, CONFIG_SCSI_DTC3280=m
 CONFIG_SCSI_GENERIC_NCR5380=m, CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
 CONFIG_SCSI_PAS16=m, CONFIG_SCSI_T128=m
 
 Patch is against 3.19.0-rc7 (localversion-next = -next-20150203)
 
  drivers/scsi/NCR5380.c   |   10 +-
  drivers/scsi/g_NCR5380.c |6 +++---
  2 files changed, 8 insertions(+), 8 deletions(-)
 
 diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
 index 8981701..d15411b 100644
 --- a/drivers/scsi/NCR5380.c
 +++ b/drivers/scsi/NCR5380.c
 @@ -474,11 +474,11 @@ static void NCR5380_print_phase(struct Scsi_Host 
 *instance)
   */
  #ifndef USLEEP_SLEEP
  /* 20 ms (reasonable hard disk speed) */
 -#define USLEEP_SLEEP (20*HZ/1000)
 +#define USLEEP_SLEEP msecs_to_jiffies(20)
  #endif
  /* 300 RPM (floppy speed) */
  #ifndef USLEEP_POLL
 -#define USLEEP_POLL (200*HZ/1000)
 +#define USLEEP_POLL msecs_to_jiffies(200)
  #endif
  #ifndef USLEEP_WAITLONG
  /* RvC: (reasonable time to wait on select error) */
 @@ -576,7 +576,7 @@ static int __init __maybe_unused NCR5380_probe_irq(struct 
 Scsi_Host *instance,
   if ((mask  possible)  (request_irq(i, probe_intr, 0, 
 NCR-probe, NULL) == 0))
   trying_irqs |= mask;
  
 - timeout = jiffies + (250 * HZ / 1000);
 + timeout = jiffies + msecs_to_jiffies(250);
   probe_irq = NO_IRQ;
  
   /*
 @@ -634,7 +634,7 @@ static void prepare_info(struct Scsi_Host *instance)
sg_tablesize %d, this_id %d, 
flags { %s%s%s}, 
  #if defined(USLEEP_POLL)  defined(USLEEP_WAITLONG)
 -  USLEEP_POLL %d, USLEEP_WAITLONG %d, 
 +  USLEEP_POLL %lu, USLEEP_WAITLONG %lu, 
  #endif
options { %s} ,
instance-hostt-name, instance-io_port, instance-n_io_port,
 @@ -1346,7 +1346,7 @@ static int NCR5380_select(struct Scsi_Host *instance, 
 struct scsi_cmnd *cmd)
* selection.
*/
  
 - timeout = jiffies + (250 * HZ / 1000);
 + timeout = jiffies + msecs_to_jiffies(250);

atari_NCR5380.c has exactly the same assignment. I'd like to keep 
atari_NCR5380.c and NCR5380.c in agreement because further divergence will 
make it harder it to re-unify them. Please make the same change there.

  
   /* 
* XXX very interesting - we're seeing a bounce where the BSY we 
 diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c
 index f35792f..a11b152 100644
 --- a/drivers/scsi/g_NCR5380.c
 +++ b/drivers/scsi/g_NCR5380.c
 @@ -57,9 +57,9 @@
   */
  
  /* settings for DTC3181E card with only Mustek scanner attached */
 -#define USLEEP_POLL  1
 -#define USLEEP_SLEEP 20
 -#define USLEEP_WAITLONG  500
 +#define USLEEP_POLL  msecs_to_jiffies(10)
 +#define USLEEP_SLEEP msecs_to_jiffies(200)
 +#define USLEEP_WAITLONG  msecs_to_jiffies(5000)
  
  #define AUTOPROBE_IRQ
  

Looks OK otherwise.

-- 
--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3] scsi: NCR5380: use msecs_to_jiffies for conversions

2015-02-03 Thread Nicholas Mc Guire
This is only an API consolidation to make things more readable.
Instances of  var * HZ / 1000  are replaced by  msecs_to_jiffies(var).
In addition some timing constants that assumed HZ 100 were adjusted
to HZ independent settings based on review of the original drivers in 
1.0.31 and 2.2.16.

Signed-off-by: Nicholas Mc Guire hof...@osadl.org
---

v2: the original patch was not taking care of all the dependencies
as reported by Finn Thain fth...@telegraphics.com.au - this
version now uses the suggested config to check the patch.
v3: g_NCR5380.c changes fixed up based on feedback from Michael Schmitz
schmitz...@gmail.com as these settings were from around 1.0.31
kernel (or earlier) where HZ was 100 only - thus the unit here is
actually 10s of microseconds. This was verified by checking the
setting changes against 2.2.16 indicating that it was forgotten in
1998/99.

Converting milliseconds to jiffies by val * HZ / 1000 is technically
ok but msecs_to_jiffies(val) is the cleaner solution and handles all
corner cases correctly. This is a minor API cleanup only.

This patch was only compile tested with i386_defconfig + CONFIG_ISA=y
as well as all dependent drivers enabled as modules:
CONFIG_SCSI_LOWLEVEL=y, CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_DMX3191D=m, CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_GENERIC_NCR5380=m, CONFIG_SCSI_GENERIC_NCR5380_MMIO=m
CONFIG_SCSI_PAS16=m, CONFIG_SCSI_T128=m

Patch is against 3.19.0-rc7 (localversion-next = -next-20150203)

 drivers/scsi/NCR5380.c   |   10 +-
 drivers/scsi/g_NCR5380.c |6 +++---
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index 8981701..d15411b 100644
--- a/drivers/scsi/NCR5380.c
+++ b/drivers/scsi/NCR5380.c
@@ -474,11 +474,11 @@ static void NCR5380_print_phase(struct Scsi_Host 
*instance)
  */
 #ifndef USLEEP_SLEEP
 /* 20 ms (reasonable hard disk speed) */
-#define USLEEP_SLEEP (20*HZ/1000)
+#define USLEEP_SLEEP msecs_to_jiffies(20)
 #endif
 /* 300 RPM (floppy speed) */
 #ifndef USLEEP_POLL
-#define USLEEP_POLL (200*HZ/1000)
+#define USLEEP_POLL msecs_to_jiffies(200)
 #endif
 #ifndef USLEEP_WAITLONG
 /* RvC: (reasonable time to wait on select error) */
@@ -576,7 +576,7 @@ static int __init __maybe_unused NCR5380_probe_irq(struct 
Scsi_Host *instance,
if ((mask  possible)  (request_irq(i, probe_intr, 0, 
NCR-probe, NULL) == 0))
trying_irqs |= mask;
 
-   timeout = jiffies + (250 * HZ / 1000);
+   timeout = jiffies + msecs_to_jiffies(250);
probe_irq = NO_IRQ;
 
/*
@@ -634,7 +634,7 @@ static void prepare_info(struct Scsi_Host *instance)
 sg_tablesize %d, this_id %d, 
 flags { %s%s%s}, 
 #if defined(USLEEP_POLL)  defined(USLEEP_WAITLONG)
-USLEEP_POLL %d, USLEEP_WAITLONG %d, 
+USLEEP_POLL %lu, USLEEP_WAITLONG %lu, 
 #endif
 options { %s} ,
 instance-hostt-name, instance-io_port, instance-n_io_port,
@@ -1346,7 +1346,7 @@ static int NCR5380_select(struct Scsi_Host *instance, 
struct scsi_cmnd *cmd)
 * selection.
 */
 
-   timeout = jiffies + (250 * HZ / 1000);
+   timeout = jiffies + msecs_to_jiffies(250);
 
/* 
 * XXX very interesting - we're seeing a bounce where the BSY we 
diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c
index f35792f..a11b152 100644
--- a/drivers/scsi/g_NCR5380.c
+++ b/drivers/scsi/g_NCR5380.c
@@ -57,9 +57,9 @@
  */
 
 /* settings for DTC3181E card with only Mustek scanner attached */
-#define USLEEP_POLL1
-#define USLEEP_SLEEP   20
-#define USLEEP_WAITLONG500
+#define USLEEP_POLLmsecs_to_jiffies(10)
+#define USLEEP_SLEEP   msecs_to_jiffies(200)
+#define USLEEP_WAITLONGmsecs_to_jiffies(5000)
 
 #define AUTOPROBE_IRQ
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe linux-scsi in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html