[PATCH] parport: parport_daisy_select return value fix
parport_daisy_select returned wrong status that is read at wrong time during daisy command execution. Signed-off-by: Marko Kohtala <marko.kohtala@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
c29a75ed0d
commit
7c9cc3be10
@@ -344,9 +344,9 @@ static int cpp_daisy (struct parport *port, int cmd)
|
|||||||
PARPORT_CONTROL_STROBE,
|
PARPORT_CONTROL_STROBE,
|
||||||
PARPORT_CONTROL_STROBE);
|
PARPORT_CONTROL_STROBE);
|
||||||
udelay (1);
|
udelay (1);
|
||||||
|
s = parport_read_status (port);
|
||||||
parport_frob_control (port, PARPORT_CONTROL_STROBE, 0);
|
parport_frob_control (port, PARPORT_CONTROL_STROBE, 0);
|
||||||
udelay (1);
|
udelay (1);
|
||||||
s = parport_read_status (port);
|
|
||||||
parport_write_data (port, 0xff); udelay (2);
|
parport_write_data (port, 0xff); udelay (2);
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
@@ -395,15 +395,15 @@ int parport_daisy_select (struct parport *port, int daisy, int mode)
|
|||||||
case IEEE1284_MODE_EPP:
|
case IEEE1284_MODE_EPP:
|
||||||
case IEEE1284_MODE_EPPSL:
|
case IEEE1284_MODE_EPPSL:
|
||||||
case IEEE1284_MODE_EPPSWE:
|
case IEEE1284_MODE_EPPSWE:
|
||||||
return (cpp_daisy (port, 0x20 + daisy) &
|
return !(cpp_daisy (port, 0x20 + daisy) &
|
||||||
PARPORT_STATUS_ERROR);
|
PARPORT_STATUS_ERROR);
|
||||||
|
|
||||||
// For these modes we should switch to ECP mode:
|
// For these modes we should switch to ECP mode:
|
||||||
case IEEE1284_MODE_ECP:
|
case IEEE1284_MODE_ECP:
|
||||||
case IEEE1284_MODE_ECPRLE:
|
case IEEE1284_MODE_ECPRLE:
|
||||||
case IEEE1284_MODE_ECPSWE:
|
case IEEE1284_MODE_ECPSWE:
|
||||||
return (cpp_daisy (port, 0xd0 + daisy) &
|
return !(cpp_daisy (port, 0xd0 + daisy) &
|
||||||
PARPORT_STATUS_ERROR);
|
PARPORT_STATUS_ERROR);
|
||||||
|
|
||||||
// Nothing was told for BECP in Daisy chain specification.
|
// Nothing was told for BECP in Daisy chain specification.
|
||||||
// May be it's wise to use ECP?
|
// May be it's wise to use ECP?
|
||||||
@@ -413,8 +413,8 @@ int parport_daisy_select (struct parport *port, int daisy, int mode)
|
|||||||
case IEEE1284_MODE_BYTE:
|
case IEEE1284_MODE_BYTE:
|
||||||
case IEEE1284_MODE_COMPAT:
|
case IEEE1284_MODE_COMPAT:
|
||||||
default:
|
default:
|
||||||
return (cpp_daisy (port, 0xe0 + daisy) &
|
return !(cpp_daisy (port, 0xe0 + daisy) &
|
||||||
PARPORT_STATUS_ERROR);
|
PARPORT_STATUS_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user