[PARISC] Update parisc specific input code from parisc tree
Update drivers to new input layer changes. Signed-off-by: Helge Deller <deller@parisc-linux.org> Signed-off-by: Matthew Wilcox <willy@parisc-linux.org> Reorder code in gscps2_interrupt() and only enable ports when opened. This fixes issues with hangs booting an SMP kernel on my C360. Previously serio_interrupt() could be called before the lock in struct serio was initialised. Signed-off-by: Richard Hirst <rhirst@parisc-linux.org> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
This commit is contained in:
committed by
Kyle McMartin
parent
ae8c75c1c4
commit
6ab0f5cd36
@@ -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;
|
||||
@@ -867,7 +875,7 @@ int hil_mlc_register(hil_mlc *mlc) {
|
||||
mlc_serio = kmalloc(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;
|
||||
|
||||
Reference in New Issue
Block a user