[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: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Domen Puncer <domen@coderock.org>
This commit is contained in:
parent
62595eb906
commit
a26c074c1c
|
@ -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 = {
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
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)
|
||||||
/* 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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue