Commit f8846be3 authored by Ondrej Zary's avatar Ondrej Zary Committed by James Bottomley

aha1542: Unify aha1542_in and aha1542_in1

Unify aha1542_in and aha1542_in1 functions, they differ only in timeout
and printk.
Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
parent 2093bfa1
...@@ -191,13 +191,13 @@ static int aha1542_out(unsigned int base, u8 *cmdp, int len) ...@@ -191,13 +191,13 @@ static int aha1542_out(unsigned int base, u8 *cmdp, int len)
/* Only used at boot time, so we do not need to worry about latency as much /* Only used at boot time, so we do not need to worry about latency as much
here */ here */
static int aha1542_in(unsigned int base, u8 *cmdp, int len) static int aha1542_in(unsigned int base, u8 *cmdp, int len, int timeout)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&aha1542_lock, flags); spin_lock_irqsave(&aha1542_lock, flags);
while (len--) { while (len--) {
if (!wait_mask(STATUS(base), DF, DF, 0, 0)) if (!wait_mask(STATUS(base), DF, DF, 0, timeout))
goto fail; goto fail;
*cmdp++ = inb(DATA(base)); *cmdp++ = inb(DATA(base));
} }
...@@ -205,30 +205,11 @@ static int aha1542_in(unsigned int base, u8 *cmdp, int len) ...@@ -205,30 +205,11 @@ static int aha1542_in(unsigned int base, u8 *cmdp, int len)
return 0; return 0;
fail: fail:
spin_unlock_irqrestore(&aha1542_lock, flags); spin_unlock_irqrestore(&aha1542_lock, flags);
if (timeout == 0)
printk(KERN_ERR "aha1542_in failed(%d): ", len + 1); printk(KERN_ERR "aha1542_in failed(%d): ", len + 1);
return 1; return 1;
} }
/* Similar to aha1542_in, except that we wait a very short period of time.
We use this if we know the board is alive and awake, but we are not sure
if the board will respond to the command we are about to send or not */
static int aha1542_in1(unsigned int base, u8 *cmdp, int len)
{
unsigned long flags;
spin_lock_irqsave(&aha1542_lock, flags);
while (len--) {
if (!wait_mask(STATUS(base), DF, DF, 0, 100))
goto fail;
*cmdp++ = inb(DATA(base));
}
spin_unlock_irqrestore(&aha1542_lock, flags);
return 0;
fail:
spin_unlock_irqrestore(&aha1542_lock, flags);
return 1;
}
static int makecode(unsigned hosterr, unsigned scsierr) static int makecode(unsigned hosterr, unsigned scsierr)
{ {
switch (hosterr) { switch (hosterr) {
...@@ -730,7 +711,7 @@ static int aha1542_getconfig(int base_io, unsigned char *irq_level, unsigned cha ...@@ -730,7 +711,7 @@ static int aha1542_getconfig(int base_io, unsigned char *irq_level, unsigned cha
i = inb(DATA(base_io)); i = inb(DATA(base_io));
}; };
aha1542_out(base_io, inquiry_cmd, 1); aha1542_out(base_io, inquiry_cmd, 1);
aha1542_in(base_io, inquiry_result, 3); aha1542_in(base_io, inquiry_result, 3, 0);
if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0)) if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0))
goto fail; goto fail;
while (0) { while (0) {
...@@ -800,7 +781,7 @@ static int aha1542_mbenable(int base) ...@@ -800,7 +781,7 @@ static int aha1542_mbenable(int base)
mbenable_cmd[0] = CMD_EXTBIOS; mbenable_cmd[0] = CMD_EXTBIOS;
aha1542_out(base, mbenable_cmd, 1); aha1542_out(base, mbenable_cmd, 1);
if (aha1542_in1(base, mbenable_result, 2)) if (aha1542_in(base, mbenable_result, 2, 100))
return retval; return retval;
if (!wait_mask(INTRFLAGS(base), INTRMASK, HACC, 0, 100)) if (!wait_mask(INTRFLAGS(base), INTRMASK, HACC, 0, 100))
goto fail; goto fail;
...@@ -837,7 +818,7 @@ static int aha1542_query(int base_io, int *transl) ...@@ -837,7 +818,7 @@ static int aha1542_query(int base_io, int *transl)
i = inb(DATA(base_io)); i = inb(DATA(base_io));
}; };
aha1542_out(base_io, inquiry_cmd, 1); aha1542_out(base_io, inquiry_cmd, 1);
aha1542_in(base_io, inquiry_result, 4); aha1542_in(base_io, inquiry_result, 4, 0);
if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0)) if (!wait_mask(INTRFLAGS(base_io), INTRMASK, HACC, 0, 0))
goto fail; goto fail;
while (0) { while (0) {
......
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