*/
 
 struct sunkbd {
-       unsigned char keycode[128];
+       unsigned char keycode[ARRAY_SIZE(sunkbd_keycode)];
        struct input_dev *dev;
        struct serio *serio;
        struct work_struct tq;
        char name[64];
        char phys[32];
        char type;
-       unsigned char enabled;
+       bool enabled;
        volatile s8 reset;
        volatile s8 layout;
 };
 static irqreturn_t sunkbd_interrupt(struct serio *serio,
                unsigned char data, unsigned int flags)
 {
-       struct sunkbd* sunkbd = serio_get_drvdata(serio);
+       struct sunkbd *sunkbd = serio_get_drvdata(serio);
 
-       if (sunkbd->reset <= -1) {              /* If cp[i] is 0xff, sunkbd->reset will stay -1. */
-               sunkbd->reset = data;           /* The keyboard sends 0xff 0xff 0xID on powerup */
+       if (sunkbd->reset <= -1) {
+               /*
+                * If cp[i] is 0xff, sunkbd->reset will stay -1.
+                * The keyboard sends 0xff 0xff 0xID on powerup.
+                */
+               sunkbd->reset = data;
                wake_up_interruptible(&sunkbd->wait);
                goto out;
        }
 
        switch (data) {
 
-               case SUNKBD_RET_RESET:
-                       schedule_work(&sunkbd->tq);
-                       sunkbd->reset = -1;
-                       break;
+       case SUNKBD_RET_RESET:
+               schedule_work(&sunkbd->tq);
+               sunkbd->reset = -1;
+               break;
 
-               case SUNKBD_RET_LAYOUT:
-                       sunkbd->layout = -1;
-                       break;
+       case SUNKBD_RET_LAYOUT:
+               sunkbd->layout = -1;
+               break;
 
-               case SUNKBD_RET_ALLUP: /* All keys released */
+       case SUNKBD_RET_ALLUP: /* All keys released */
+               break;
+
+       default:
+               if (!sunkbd->enabled)
                        break;
 
-               default:
-                       if (!sunkbd->enabled)
-                               break;
-
-                       if (sunkbd->keycode[data & SUNKBD_KEY]) {
-                                input_report_key(sunkbd->dev, sunkbd->keycode[data & SUNKBD_KEY], !(data & SUNKBD_RELEASE));
-                               input_sync(sunkbd->dev);
-                        } else {
-                                printk(KERN_WARNING "sunkbd.c: Unknown key (scancode %#x) %s.\n",
-                                        data & SUNKBD_KEY, data & SUNKBD_RELEASE ? "released" : "pressed");
-                        }
+               if (sunkbd->keycode[data & SUNKBD_KEY]) {
+                       input_report_key(sunkbd->dev,
+                                        sunkbd->keycode[data & SUNKBD_KEY],
+                                        !(data & SUNKBD_RELEASE));
+                       input_sync(sunkbd->dev);
+               } else {
+                       printk(KERN_WARNING
+                               "sunkbd.c: Unknown key (scancode %#x) %s.\n",
+                               data & SUNKBD_KEY,
+                               data & SUNKBD_RELEASE ? "released" : "pressed");
+               }
        }
 out:
        return IRQ_HANDLED;
  * sunkbd_event() handles events from the input module.
  */
 
-static int sunkbd_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
+static int sunkbd_event(struct input_dev *dev,
+                       unsigned int type, unsigned int code, int value)
 {
        struct sunkbd *sunkbd = input_get_drvdata(dev);
 
        switch (type) {
 
-               case EV_LED:
+       case EV_LED:
 
-                       serio_write(sunkbd->serio, SUNKBD_CMD_SETLED);
-                       serio_write(sunkbd->serio,
-                               (!!test_bit(LED_CAPSL, dev->led) << 3) | (!!test_bit(LED_SCROLLL, dev->led) << 2) |
-                               (!!test_bit(LED_COMPOSE, dev->led) << 1) | !!test_bit(LED_NUML, dev->led));
-                       return 0;
+               serio_write(sunkbd->serio, SUNKBD_CMD_SETLED);
+               serio_write(sunkbd->serio,
+                       (!!test_bit(LED_CAPSL,   dev->led) << 3) |
+                       (!!test_bit(LED_SCROLLL, dev->led) << 2) |
+                       (!!test_bit(LED_COMPOSE, dev->led) << 1) |
+                        !!test_bit(LED_NUML,    dev->led));
+               return 0;
 
-               case EV_SND:
+       case EV_SND:
 
-                       switch (code) {
+               switch (code) {
 
-                               case SND_CLICK:
-                                       serio_write(sunkbd->serio, SUNKBD_CMD_NOCLICK - value);
-                                       return 0;
+               case SND_CLICK:
+                       serio_write(sunkbd->serio, SUNKBD_CMD_NOCLICK - value);
+                       return 0;
 
-                               case SND_BELL:
-                                       serio_write(sunkbd->serio, SUNKBD_CMD_BELLOFF - value);
-                                       return 0;
-                       }
+               case SND_BELL:
+                       serio_write(sunkbd->serio, SUNKBD_CMD_BELLOFF - value);
+                       return 0;
+               }
 
-                       break;
+               break;
        }
 
        return -1;
        if (sunkbd->type == 4) {        /* Type 4 keyboard */
                sunkbd->layout = -2;
                serio_write(sunkbd->serio, SUNKBD_CMD_LAYOUT);
-               wait_event_interruptible_timeout(sunkbd->wait, sunkbd->layout >= 0, HZ/4);
-               if (sunkbd->layout < 0) return -1;
-               if (sunkbd->layout & SUNKBD_LAYOUT_5_MASK) sunkbd->type = 5;
+               wait_event_interruptible_timeout(sunkbd->wait,
+                                                sunkbd->layout >= 0, HZ / 4);
+               if (sunkbd->layout < 0)
+                       return -1;
+               if (sunkbd->layout & SUNKBD_LAYOUT_5_MASK)
+                       sunkbd->type = 5;
        }
 
        return 0;
                (!!test_bit(LED_SCROLLL, sunkbd->dev->led) << 2) |
                (!!test_bit(LED_COMPOSE, sunkbd->dev->led) << 1) |
                 !!test_bit(LED_NUML,    sunkbd->dev->led));
-       serio_write(sunkbd->serio, SUNKBD_CMD_NOCLICK - !!test_bit(SND_CLICK, sunkbd->dev->snd));
-       serio_write(sunkbd->serio, SUNKBD_CMD_BELLOFF - !!test_bit(SND_BELL, sunkbd->dev->snd));
+       serio_write(sunkbd->serio,
+               SUNKBD_CMD_NOCLICK - !!test_bit(SND_CLICK, sunkbd->dev->snd));
+       serio_write(sunkbd->serio,
+               SUNKBD_CMD_BELLOFF - !!test_bit(SND_BELL, sunkbd->dev->snd));
 }
 
-static void sunkbd_enable(struct sunkbd *sunkbd, int enable)
+static void sunkbd_enable(struct sunkbd *sunkbd, bool enable)
 {
        serio_pause_rx(sunkbd->serio);
        sunkbd->enabled = enable;
 }
 
 /*
- * sunkbd_connect() probes for a Sun keyboard and fills the necessary structures.
+ * sunkbd_connect() probes for a Sun keyboard and fills the necessary
+ * structures.
  */
 
 static int sunkbd_connect(struct serio *serio, struct serio_driver *drv)
                goto fail3;
        }
 
-       snprintf(sunkbd->name, sizeof(sunkbd->name), "Sun Type %d keyboard", sunkbd->type);
+       snprintf(sunkbd->name, sizeof(sunkbd->name),
+                "Sun Type %d keyboard", sunkbd->type);
        memcpy(sunkbd->keycode, sunkbd_keycode, sizeof(sunkbd->keycode));
 
        input_dev->name = sunkbd->name;
        input_dev->keycode = sunkbd->keycode;
        input_dev->keycodesize = sizeof(unsigned char);
        input_dev->keycodemax = ARRAY_SIZE(sunkbd_keycode);
-       for (i = 0; i < 128; i++)
-               set_bit(sunkbd->keycode[i], input_dev->keybit);
-       clear_bit(0, input_dev->keybit);
+       for (i = 0; i < ARRAY_SIZE(sunkbd_keycode); i++)
+               __set_bit(sunkbd->keycode[i], input_dev->keybit);
+       __clear_bit(KEY_RESERVED, input_dev->keybit);
 
-       sunkbd_enable(sunkbd, 1);
+       sunkbd_enable(sunkbd, true);
 
        err = input_register_device(sunkbd->dev);
        if (err)
 
        return 0;
 
- fail4:        sunkbd_enable(sunkbd, 0);
+ fail4:        sunkbd_enable(sunkbd, false);
  fail3:        serio_close(serio);
  fail2:        serio_set_drvdata(serio, NULL);
  fail1:        input_free_device(input_dev);
 {
        struct sunkbd *sunkbd = serio_get_drvdata(serio);
 
-       sunkbd_enable(sunkbd, 0);
+       sunkbd_enable(sunkbd, false);
        input_unregister_device(sunkbd->dev);
        serio_close(serio);
        serio_set_drvdata(serio, NULL);