Commit a26c074c authored by Nishanth Aravamudan's avatar Nishanth Aravamudan Committed by Jeff Garzik

[PATCH] net/sb1000: replace nicedelay() with ssleep()

Use ssleep() instead of nicedelay()
to guarantee the task delays as expected. Remove the prototype and
definition of nicedelay(). This is a very weird function, because it is
called to sleep in terms of usecs, but always sleeps for 1 second,
completely ignoring the parameter. I have gone ahead and followed suit,
just sleeping for a second in all cases, but maybe someone with the
hardware could tell me if perhaps the paramter *should* matter. Additionally,
nicedelay() is called in TASK_INTERRUPTIBLE state, but doesn't deal with signals
in case these longer delays do not complete, so I believe ssleep() is more
appropriate.
Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: default avatarDomen Puncer <domen@coderock.org>
parent 62595eb9
...@@ -90,7 +90,6 @@ static int sb1000_close(struct net_device *dev); ...@@ -90,7 +90,6 @@ static int sb1000_close(struct net_device *dev);
/* SB1000 hardware routines to be used during open/configuration phases */ /* SB1000 hardware routines to be used during open/configuration phases */
static inline void nicedelay(unsigned long usecs);
static inline int card_wait_for_busy_clear(const int ioaddr[], static inline int card_wait_for_busy_clear(const int ioaddr[],
const char* name); const char* name);
static inline int card_wait_for_ready(const int ioaddr[], const char* name, static inline int card_wait_for_ready(const int ioaddr[], const char* name,
...@@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver = { ...@@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver = {
static const int TimeOutJiffies = (875 * HZ) / 100; static const int TimeOutJiffies = (875 * HZ) / 100;
static inline void nicedelay(unsigned long usecs)
{
current->state = TASK_INTERRUPTIBLE;
schedule_timeout(HZ);
return;
}
/* Card Wait For Busy Clear (cannot be used during an interrupt) */ /* Card Wait For Busy Clear (cannot be used during an interrupt) */
static inline int static inline int
card_wait_for_busy_clear(const int ioaddr[], const char* name) card_wait_for_busy_clear(const int ioaddr[], const char* name)
...@@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const char* name) ...@@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const char* name)
udelay(1000); udelay(1000);
outb(0x0, port); outb(0x0, port);
inb(port); inb(port);
nicedelay(60000); ssleep(1);
outb(0x4, port); outb(0x4, port);
inb(port); inb(port);
udelay(1000); udelay(1000);
...@@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], const char* name) ...@@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], const char* name)
const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00}; const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00}; const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
nicedelay(50000); ssleep(1);
if ((status = card_send_command(ioaddr, name, Command0, st))) if ((status = card_send_command(ioaddr, name, Command0, st)))
return status; return status;
if ((status = card_send_command(ioaddr, name, Command1, st))) if ((status = card_send_command(ioaddr, name, Command1, st)))
...@@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev) ...@@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
/* initialize sb1000 */ /* initialize sb1000 */
if ((status = sb1000_reset(ioaddr, name))) if ((status = sb1000_reset(ioaddr, name)))
return status; return status;
nicedelay(200000); ssleep(1);
if ((status = sb1000_check_CRC(ioaddr, name))) if ((status = sb1000_check_CRC(ioaddr, name)))
return status; return status;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment