With clang 3.9.0, compiling ppbus(4) results in the following warnings:

sys/dev/ppbus/ppb_1284.c:296:46: error: implicit conversion from 'int'
to 'char' changes value from 144 to -112 [-Werror,-Wconstant-conversion]
        if ((error = do_peripheral_wait(bus, SELECT | nBUSY, 0))) {
                     ~~~~~~~~~~~~~~~~~~      ~~~~~~~^~~~~~~
sys/dev/ppbus/ppb_1284.c:785:48: error: implicit conversion from 'int'
to 'char' changes value from 240 to -16 [-Werror,-Wconstant-conversion]
                if (do_1284_wait(bus, nACK | SELECT | PERROR | nBUSY,
                    ~~~~~~~~~~~~      ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
sys/dev/ppbus/ppb_1284.c:786:29: error: implicit conversion from 'int'
to 'char' changes value from 240 to -16 [-Werror,-Wconstant-conversion]
                                        nACK | SELECT | PERROR | nBUSY)) {
                                        ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~

This is because nBUSY is 0x80, so the plain char argument is wrapped to
a negative value.  Fix this in a minimal fashion, by using uint8_t in a
few places.

Reviewed by:	emaste
MFC after:	3 days
Differential Revision: https://reviews.freebsd.org/D7771
This commit is contained in:
Dimitry Andric 2016-09-03 13:48:44 +00:00
parent 402e32a8af
commit 3128fa9a5a
3 changed files with 6 additions and 6 deletions

View File

@ -57,13 +57,13 @@ __FBSDID("$FreeBSD$");
* Wait for the peripherial up to 40ms
*/
static int
do_1284_wait(device_t bus, char mask, char status)
do_1284_wait(device_t bus, uint8_t mask, uint8_t status)
{
return (ppb_poll_bus(bus, 4, mask, status, PPB_NOINTR | PPB_POLL));
}
static int
do_peripheral_wait(device_t bus, char mask, char status)
do_peripheral_wait(device_t bus, uint8_t mask, uint8_t status)
{
return (ppb_poll_bus(bus, 100, mask, status, PPB_NOINTR | PPB_POLL));
}

View File

@ -54,11 +54,11 @@ MODULE_VERSION(ppbus, 1);
*/
int
ppb_poll_bus(device_t bus, int max,
char mask, char status, int how)
uint8_t mask, uint8_t status, int how)
{
struct ppb_data *ppb = DEVTOSOFTC(bus);
int i, j, error;
char r;
uint8_t r;
ppb_assert_locked(bus);
@ -186,7 +186,7 @@ ppb_ecp_sync(device_t bus)
int
ppb_get_status(device_t bus, struct ppb_status *status)
{
register char r;
uint8_t r;
ppb_assert_locked(bus);

View File

@ -263,7 +263,7 @@ extern void _ppb_assert_locked(device_t, const char *, int);
extern void ppb_init_callout(device_t, struct callout *, int);
extern int ppb_sleep(device_t, void *, int, const char *, int);
extern int ppb_get_status(device_t, struct ppb_status *);
extern int ppb_poll_bus(device_t, int, char, char, int);
extern int ppb_poll_bus(device_t, int, uint8_t, uint8_t, int);
extern int ppb_reset_epp_timeout(device_t);
extern int ppb_ecp_sync(device_t);
extern int ppb_get_epp_protocol(device_t);