mirror of https://gitee.com/openkylin/linux.git
Input: atkbd - switch to dev_err() and friends
dev_err(), dev_warn() and dev_dbg() ensure consistency in driver messages. Also switch to using bool where appropriate and fix some formatting issues. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
This commit is contained in:
parent
3032458e38
commit
a9a1f9c315
|
@ -40,26 +40,26 @@ module_param_named(set, atkbd_set, int, 0);
|
|||
MODULE_PARM_DESC(set, "Select keyboard code set (2 = default, 3 = PS/2 native)");
|
||||
|
||||
#if defined(__i386__) || defined(__x86_64__) || defined(__hppa__)
|
||||
static int atkbd_reset;
|
||||
static bool atkbd_reset;
|
||||
#else
|
||||
static int atkbd_reset = 1;
|
||||
static bool atkbd_reset = true;
|
||||
#endif
|
||||
module_param_named(reset, atkbd_reset, bool, 0);
|
||||
MODULE_PARM_DESC(reset, "Reset keyboard during initialization");
|
||||
|
||||
static int atkbd_softrepeat;
|
||||
static bool atkbd_softrepeat;
|
||||
module_param_named(softrepeat, atkbd_softrepeat, bool, 0);
|
||||
MODULE_PARM_DESC(softrepeat, "Use software keyboard repeat");
|
||||
|
||||
static int atkbd_softraw = 1;
|
||||
static bool atkbd_softraw = true;
|
||||
module_param_named(softraw, atkbd_softraw, bool, 0);
|
||||
MODULE_PARM_DESC(softraw, "Use software generated rawmode");
|
||||
|
||||
static int atkbd_scroll;
|
||||
static bool atkbd_scroll;
|
||||
module_param_named(scroll, atkbd_scroll, bool, 0);
|
||||
MODULE_PARM_DESC(scroll, "Enable scroll-wheel on MS Office and similar keyboards");
|
||||
|
||||
static int atkbd_extra;
|
||||
static bool atkbd_extra;
|
||||
module_param_named(extra, atkbd_extra, bool, 0);
|
||||
MODULE_PARM_DESC(extra, "Enable extra LEDs and keys on IBM RapidAcces, EzKey and similar keyboards");
|
||||
|
||||
|
@ -205,18 +205,18 @@ struct atkbd {
|
|||
unsigned short keycode[ATKBD_KEYMAP_SIZE];
|
||||
DECLARE_BITMAP(force_release_mask, ATKBD_KEYMAP_SIZE);
|
||||
unsigned char set;
|
||||
unsigned char translated;
|
||||
unsigned char extra;
|
||||
unsigned char write;
|
||||
unsigned char softrepeat;
|
||||
unsigned char softraw;
|
||||
unsigned char scroll;
|
||||
unsigned char enabled;
|
||||
bool translated;
|
||||
bool extra;
|
||||
bool write;
|
||||
bool softrepeat;
|
||||
bool softraw;
|
||||
bool scroll;
|
||||
bool enabled;
|
||||
|
||||
/* Accessed only from interrupt */
|
||||
unsigned char emul;
|
||||
unsigned char resend;
|
||||
unsigned char release;
|
||||
bool resend;
|
||||
bool release;
|
||||
unsigned long xl_bit;
|
||||
unsigned int last;
|
||||
unsigned long time;
|
||||
|
@ -298,18 +298,18 @@ static const unsigned int xl_table[] = {
|
|||
* Checks if we should mangle the scancode to extract 'release' bit
|
||||
* in translated mode.
|
||||
*/
|
||||
static int atkbd_need_xlate(unsigned long xl_bit, unsigned char code)
|
||||
static bool atkbd_need_xlate(unsigned long xl_bit, unsigned char code)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (code == ATKBD_RET_EMUL0 || code == ATKBD_RET_EMUL1)
|
||||
return 0;
|
||||
return false;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(xl_table); i++)
|
||||
if (code == xl_table[i])
|
||||
return test_bit(i, &xl_bit);
|
||||
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -356,7 +356,7 @@ static unsigned int atkbd_compat_scancode(struct atkbd *atkbd, unsigned int code
|
|||
*/
|
||||
|
||||
static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
||||
unsigned int flags)
|
||||
unsigned int flags)
|
||||
{
|
||||
struct atkbd *atkbd = serio_get_drvdata(serio);
|
||||
struct input_dev *dev = atkbd->dev;
|
||||
|
@ -365,20 +365,18 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
|||
int value;
|
||||
unsigned short keycode;
|
||||
|
||||
#ifdef ATKBD_DEBUG
|
||||
printk(KERN_DEBUG "atkbd.c: Received %02x flags %02x\n", data, flags);
|
||||
#endif
|
||||
dev_dbg(&serio->dev, "Received %02x flags %02x\n", data, flags);
|
||||
|
||||
#if !defined(__i386__) && !defined (__x86_64__)
|
||||
if ((flags & (SERIO_FRAME | SERIO_PARITY)) && (~flags & SERIO_TIMEOUT) && !atkbd->resend && atkbd->write) {
|
||||
printk(KERN_WARNING "atkbd.c: frame/parity error: %02x\n", flags);
|
||||
dev_warn(&serio->dev, "Frame/parity error: %02x\n", flags);
|
||||
serio_write(serio, ATKBD_CMD_RESEND);
|
||||
atkbd->resend = 1;
|
||||
atkbd->resend = true;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!flags && data == ATKBD_RET_ACK)
|
||||
atkbd->resend = 0;
|
||||
atkbd->resend = false;
|
||||
#endif
|
||||
|
||||
if (unlikely(atkbd->ps2dev.flags & PS2_FLAG_ACK))
|
||||
|
@ -409,32 +407,32 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
|||
}
|
||||
|
||||
switch (code) {
|
||||
case ATKBD_RET_BAT:
|
||||
atkbd->enabled = 0;
|
||||
serio_reconnect(atkbd->ps2dev.serio);
|
||||
goto out;
|
||||
case ATKBD_RET_EMUL0:
|
||||
atkbd->emul = 1;
|
||||
goto out;
|
||||
case ATKBD_RET_EMUL1:
|
||||
atkbd->emul = 2;
|
||||
goto out;
|
||||
case ATKBD_RET_RELEASE:
|
||||
atkbd->release = 1;
|
||||
goto out;
|
||||
case ATKBD_RET_ACK:
|
||||
case ATKBD_RET_NAK:
|
||||
if (printk_ratelimit())
|
||||
printk(KERN_WARNING "atkbd.c: Spurious %s on %s. "
|
||||
"Some program might be trying access hardware directly.\n",
|
||||
data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys);
|
||||
goto out;
|
||||
case ATKBD_RET_ERR:
|
||||
atkbd->err_count++;
|
||||
#ifdef ATKBD_DEBUG
|
||||
printk(KERN_DEBUG "atkbd.c: Keyboard on %s reports too many keys pressed.\n", serio->phys);
|
||||
#endif
|
||||
goto out;
|
||||
case ATKBD_RET_BAT:
|
||||
atkbd->enabled = false;
|
||||
serio_reconnect(atkbd->ps2dev.serio);
|
||||
goto out;
|
||||
case ATKBD_RET_EMUL0:
|
||||
atkbd->emul = 1;
|
||||
goto out;
|
||||
case ATKBD_RET_EMUL1:
|
||||
atkbd->emul = 2;
|
||||
goto out;
|
||||
case ATKBD_RET_RELEASE:
|
||||
atkbd->release = true;
|
||||
goto out;
|
||||
case ATKBD_RET_ACK:
|
||||
case ATKBD_RET_NAK:
|
||||
if (printk_ratelimit())
|
||||
dev_warn(&serio->dev,
|
||||
"Spurious %s on %s. "
|
||||
"Some program might be trying access hardware directly.\n",
|
||||
data == ATKBD_RET_ACK ? "ACK" : "NAK", serio->phys);
|
||||
goto out;
|
||||
case ATKBD_RET_ERR:
|
||||
atkbd->err_count++;
|
||||
dev_dbg(&serio->dev, "Keyboard on %s reports too many keys pressed.\n",
|
||||
serio->phys);
|
||||
goto out;
|
||||
}
|
||||
|
||||
code = atkbd_compat_scancode(atkbd, code);
|
||||
|
@ -448,71 +446,72 @@ static irqreturn_t atkbd_interrupt(struct serio *serio, unsigned char data,
|
|||
input_event(dev, EV_MSC, MSC_SCAN, code);
|
||||
|
||||
switch (keycode) {
|
||||
case ATKBD_KEY_NULL:
|
||||
break;
|
||||
case ATKBD_KEY_UNKNOWN:
|
||||
printk(KERN_WARNING
|
||||
"atkbd.c: Unknown key %s (%s set %d, code %#x on %s).\n",
|
||||
atkbd->release ? "released" : "pressed",
|
||||
atkbd->translated ? "translated" : "raw",
|
||||
atkbd->set, code, serio->phys);
|
||||
printk(KERN_WARNING
|
||||
"atkbd.c: Use 'setkeycodes %s%02x <keycode>' to make it known.\n",
|
||||
code & 0x80 ? "e0" : "", code & 0x7f);
|
||||
input_sync(dev);
|
||||
break;
|
||||
case ATKBD_SCR_1:
|
||||
scroll = 1 - atkbd->release * 2;
|
||||
break;
|
||||
case ATKBD_SCR_2:
|
||||
scroll = 2 - atkbd->release * 4;
|
||||
break;
|
||||
case ATKBD_SCR_4:
|
||||
scroll = 4 - atkbd->release * 8;
|
||||
break;
|
||||
case ATKBD_SCR_8:
|
||||
scroll = 8 - atkbd->release * 16;
|
||||
break;
|
||||
case ATKBD_SCR_CLICK:
|
||||
click = !atkbd->release;
|
||||
break;
|
||||
case ATKBD_SCR_LEFT:
|
||||
hscroll = -1;
|
||||
break;
|
||||
case ATKBD_SCR_RIGHT:
|
||||
hscroll = 1;
|
||||
break;
|
||||
default:
|
||||
if (atkbd->release) {
|
||||
value = 0;
|
||||
atkbd->last = 0;
|
||||
} else if (!atkbd->softrepeat && test_bit(keycode, dev->key)) {
|
||||
/* Workaround Toshiba laptop multiple keypress */
|
||||
value = time_before(jiffies, atkbd->time) && atkbd->last == code ? 1 : 2;
|
||||
} else {
|
||||
value = 1;
|
||||
atkbd->last = code;
|
||||
atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2;
|
||||
}
|
||||
case ATKBD_KEY_NULL:
|
||||
break;
|
||||
case ATKBD_KEY_UNKNOWN:
|
||||
dev_warn(&serio->dev,
|
||||
"Unknown key %s (%s set %d, code %#x on %s).\n",
|
||||
atkbd->release ? "released" : "pressed",
|
||||
atkbd->translated ? "translated" : "raw",
|
||||
atkbd->set, code, serio->phys);
|
||||
dev_warn(&serio->dev,
|
||||
"Use 'setkeycodes %s%02x <keycode>' to make it known.\n",
|
||||
code & 0x80 ? "e0" : "", code & 0x7f);
|
||||
input_sync(dev);
|
||||
break;
|
||||
case ATKBD_SCR_1:
|
||||
scroll = 1;
|
||||
break;
|
||||
case ATKBD_SCR_2:
|
||||
scroll = 2;
|
||||
break;
|
||||
case ATKBD_SCR_4:
|
||||
scroll = 4;
|
||||
break;
|
||||
case ATKBD_SCR_8:
|
||||
scroll = 8;
|
||||
break;
|
||||
case ATKBD_SCR_CLICK:
|
||||
click = !atkbd->release;
|
||||
break;
|
||||
case ATKBD_SCR_LEFT:
|
||||
hscroll = -1;
|
||||
break;
|
||||
case ATKBD_SCR_RIGHT:
|
||||
hscroll = 1;
|
||||
break;
|
||||
default:
|
||||
if (atkbd->release) {
|
||||
value = 0;
|
||||
atkbd->last = 0;
|
||||
} else if (!atkbd->softrepeat && test_bit(keycode, dev->key)) {
|
||||
/* Workaround Toshiba laptop multiple keypress */
|
||||
value = time_before(jiffies, atkbd->time) && atkbd->last == code ? 1 : 2;
|
||||
} else {
|
||||
value = 1;
|
||||
atkbd->last = code;
|
||||
atkbd->time = jiffies + msecs_to_jiffies(dev->rep[REP_DELAY]) / 2;
|
||||
}
|
||||
|
||||
input_event(dev, EV_KEY, keycode, value);
|
||||
input_sync(dev);
|
||||
input_event(dev, EV_KEY, keycode, value);
|
||||
input_sync(dev);
|
||||
|
||||
if (value && test_bit(code, atkbd->force_release_mask)) {
|
||||
input_report_key(dev, keycode, 0);
|
||||
input_sync(dev);
|
||||
}
|
||||
if (value && test_bit(code, atkbd->force_release_mask)) {
|
||||
input_report_key(dev, keycode, 0);
|
||||
input_sync(dev);
|
||||
}
|
||||
}
|
||||
|
||||
if (atkbd->scroll) {
|
||||
if (click != -1)
|
||||
input_report_key(dev, BTN_MIDDLE, click);
|
||||
input_report_rel(dev, REL_WHEEL, scroll);
|
||||
input_report_rel(dev, REL_WHEEL,
|
||||
atkbd->release ? -scroll : scroll);
|
||||
input_report_rel(dev, REL_HWHEEL, hscroll);
|
||||
input_sync(dev);
|
||||
}
|
||||
|
||||
atkbd->release = 0;
|
||||
atkbd->release = false;
|
||||
out:
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
@ -631,17 +630,18 @@ static int atkbd_event(struct input_dev *dev,
|
|||
|
||||
switch (type) {
|
||||
|
||||
case EV_LED:
|
||||
atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT);
|
||||
return 0;
|
||||
case EV_LED:
|
||||
atkbd_schedule_event_work(atkbd, ATKBD_LED_EVENT_BIT);
|
||||
return 0;
|
||||
|
||||
case EV_REP:
|
||||
if (!atkbd->softrepeat)
|
||||
atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT);
|
||||
return 0;
|
||||
case EV_REP:
|
||||
if (!atkbd->softrepeat)
|
||||
atkbd_schedule_event_work(atkbd, ATKBD_REP_EVENT_BIT);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -652,7 +652,7 @@ static int atkbd_event(struct input_dev *dev,
|
|||
static inline void atkbd_enable(struct atkbd *atkbd)
|
||||
{
|
||||
serio_pause_rx(atkbd->ps2dev.serio);
|
||||
atkbd->enabled = 1;
|
||||
atkbd->enabled = true;
|
||||
serio_continue_rx(atkbd->ps2dev.serio);
|
||||
}
|
||||
|
||||
|
@ -664,7 +664,7 @@ static inline void atkbd_enable(struct atkbd *atkbd)
|
|||
static inline void atkbd_disable(struct atkbd *atkbd)
|
||||
{
|
||||
serio_pause_rx(atkbd->ps2dev.serio);
|
||||
atkbd->enabled = 0;
|
||||
atkbd->enabled = false;
|
||||
serio_continue_rx(atkbd->ps2dev.serio);
|
||||
}
|
||||
|
||||
|
@ -685,7 +685,9 @@ static int atkbd_probe(struct atkbd *atkbd)
|
|||
|
||||
if (atkbd_reset)
|
||||
if (ps2_command(ps2dev, NULL, ATKBD_CMD_RESET_BAT))
|
||||
printk(KERN_WARNING "atkbd.c: keyboard reset failed on %s\n", ps2dev->serio->phys);
|
||||
dev_warn(&ps2dev->serio->dev,
|
||||
"keyboard reset failed on %s\n",
|
||||
ps2dev->serio->phys);
|
||||
|
||||
/*
|
||||
* Then we check the keyboard ID. We should get 0xab83 under normal conditions.
|
||||
|
@ -715,8 +717,9 @@ static int atkbd_probe(struct atkbd *atkbd)
|
|||
atkbd->id = (param[0] << 8) | param[1];
|
||||
|
||||
if (atkbd->id == 0xaca1 && atkbd->translated) {
|
||||
printk(KERN_ERR "atkbd.c: NCD terminal keyboards are only supported on non-translating\n");
|
||||
printk(KERN_ERR "atkbd.c: controllers. Use i8042.direct=1 to disable translation.\n");
|
||||
dev_err(&ps2dev->serio->dev,
|
||||
"NCD terminal keyboards are only supported on non-translating controlelrs. "
|
||||
"Use i8042.direct=1 to disable translation.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -734,7 +737,7 @@ static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra
|
|||
struct ps2dev *ps2dev = &atkbd->ps2dev;
|
||||
unsigned char param[2];
|
||||
|
||||
atkbd->extra = 0;
|
||||
atkbd->extra = false;
|
||||
/*
|
||||
* For known special keyboards we can go ahead and set the correct set.
|
||||
* We check for NCD PS/2 Sun, NorthGate OmniKey 101 and
|
||||
|
@ -753,7 +756,7 @@ static int atkbd_select_set(struct atkbd *atkbd, int target_set, int allow_extra
|
|||
if (allow_extra) {
|
||||
param[0] = 0x71;
|
||||
if (!ps2_command(ps2dev, param, ATKBD_CMD_EX_ENABLE)) {
|
||||
atkbd->extra = 1;
|
||||
atkbd->extra = true;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
@ -818,7 +821,8 @@ static int atkbd_activate(struct atkbd *atkbd)
|
|||
*/
|
||||
|
||||
if (ps2_command(ps2dev, NULL, ATKBD_CMD_ENABLE)) {
|
||||
printk(KERN_ERR "atkbd.c: Failed to enable keyboard on %s\n",
|
||||
dev_err(&ps2dev->serio->dev,
|
||||
"Failed to enable keyboard on %s\n",
|
||||
ps2dev->serio->phys);
|
||||
return -1;
|
||||
}
|
||||
|
@ -1090,12 +1094,14 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv)
|
|||
|
||||
switch (serio->id.type) {
|
||||
|
||||
case SERIO_8042_XL:
|
||||
atkbd->translated = 1;
|
||||
case SERIO_8042:
|
||||
if (serio->write)
|
||||
atkbd->write = 1;
|
||||
break;
|
||||
case SERIO_8042_XL:
|
||||
atkbd->translated = true;
|
||||
/* Fall through */
|
||||
|
||||
case SERIO_8042:
|
||||
if (serio->write)
|
||||
atkbd->write = true;
|
||||
break;
|
||||
}
|
||||
|
||||
atkbd->softraw = atkbd_softraw;
|
||||
|
@ -1103,7 +1109,7 @@ static int atkbd_connect(struct serio *serio, struct serio_driver *drv)
|
|||
atkbd->scroll = atkbd_scroll;
|
||||
|
||||
if (atkbd->softrepeat)
|
||||
atkbd->softraw = 1;
|
||||
atkbd->softraw = true;
|
||||
|
||||
serio_set_drvdata(serio, atkbd);
|
||||
|
||||
|
@ -1161,7 +1167,8 @@ static int atkbd_reconnect(struct serio *serio)
|
|||
struct serio_driver *drv = serio->drv;
|
||||
|
||||
if (!atkbd || !drv) {
|
||||
printk(KERN_DEBUG "atkbd: reconnect request, but serio is disconnected, ignoring...\n");
|
||||
dev_dbg(&serio->dev,
|
||||
"reconnect request, but serio is disconnected, ignoring...\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1288,7 +1295,8 @@ static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t coun
|
|||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
int err;
|
||||
unsigned char old_extra, old_set;
|
||||
bool old_extra;
|
||||
unsigned char old_set;
|
||||
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
@ -1371,7 +1379,7 @@ static ssize_t atkbd_set_scroll(struct atkbd *atkbd, const char *buf, size_t cou
|
|||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
int err;
|
||||
unsigned char old_scroll;
|
||||
bool old_scroll;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
return -EINVAL;
|
||||
|
@ -1415,7 +1423,8 @@ static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count)
|
|||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
int err;
|
||||
unsigned char old_set, old_extra;
|
||||
unsigned char old_set;
|
||||
bool old_extra;
|
||||
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
@ -1465,7 +1474,7 @@ static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t
|
|||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
int err;
|
||||
unsigned char old_softrepeat, old_softraw;
|
||||
bool old_softrepeat, old_softraw;
|
||||
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
@ -1485,7 +1494,7 @@ static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t
|
|||
atkbd->dev = new_dev;
|
||||
atkbd->softrepeat = value;
|
||||
if (atkbd->softrepeat)
|
||||
atkbd->softraw = 1;
|
||||
atkbd->softraw = true;
|
||||
atkbd_set_device_attrs(atkbd);
|
||||
|
||||
err = input_register_device(atkbd->dev);
|
||||
|
@ -1515,7 +1524,7 @@ static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t co
|
|||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
int err;
|
||||
unsigned char old_softraw;
|
||||
bool old_softraw;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Reference in New Issue