Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / input / serio / hil_mlc.c
index c243cb6..bbbe15e 100644 (file)
@@ -556,7 +556,7 @@ static inline void hilse_setup_input(hil_mlc *mlc, struct hilse_node *node) {
        do_gettimeofday(&(mlc->instart));
        mlc->icount = 15;
        memset(mlc->ipacket, 0, 16 * sizeof(hil_packet));
-       if (down_trylock(&(mlc->isem))) BUG();
+       BUG_ON(down_trylock(&(mlc->isem)));
 
        return;
 }
@@ -801,7 +801,8 @@ static int hil_mlc_serio_open(struct serio *serio) {
        struct hil_mlc_serio_map *map;
        struct hil_mlc *mlc;
 
-       if (serio->private != NULL) return -EBUSY;
+       if (serio_get_drvdata(serio) != NULL)
+               return -EBUSY;
 
        map = serio->port_data;
        if (map == NULL) {
@@ -832,11 +833,18 @@ static void hil_mlc_serio_close(struct serio *serio) {
                return;
        }
 
-       serio->private = NULL;
+       serio_set_drvdata(serio, NULL);
        serio->drv = NULL;
        /* TODO wake up interruptable */
 }
 
+static struct serio_device_id hil_mlc_serio_id = {
+       .type = SERIO_HIL_MLC,
+       .proto = SERIO_HIL,
+       .extra = SERIO_ANY,
+       .id = SERIO_ANY,
+};
+
 int hil_mlc_register(hil_mlc *mlc) {
        int i;
         unsigned long flags;
@@ -864,10 +872,9 @@ int hil_mlc_register(hil_mlc *mlc) {
        for (i = 0; i < HIL_MLC_DEVMEM; i++) {
                struct serio *mlc_serio;
                hil_mlc_copy_di_scratch(mlc, i);
-               mlc_serio = kmalloc(sizeof(*mlc_serio), GFP_KERNEL);
+               mlc_serio = kzalloc(sizeof(*mlc_serio), GFP_KERNEL);
                mlc->serio[i] = mlc_serio;
-               memset(mlc_serio, 0, sizeof(*mlc_serio));
-               mlc_serio->type                 = SERIO_HIL | SERIO_HIL_MLC;
+               mlc_serio->id                   = hil_mlc_serio_id;
                mlc_serio->write                = hil_mlc_serio_write;
                mlc_serio->open                 = hil_mlc_serio_open;
                mlc_serio->close                = hil_mlc_serio_close;