Hi Daniel, On Fri, Jun 28, 2013 at 01:19:58PM -0400, Daniel Drake wrote: > +static int olpc_apsp_open(struct serio *port) > +{ > + struct olpc_apsp *priv = port->port_data; > + unsigned int tmp; > + > + if (priv->open_count++ == 0) { > + /* Enable interrupt 0 by clearing its bit */ > + tmp = readl(priv->base + PJ_INTERRUPT_MASK); > + writel(tmp & ~INT_0, priv->base + PJ_INTERRUPT_MASK); > + } > + > + return 0; > +} > + > +static void olpc_apsp_close(struct serio *port) > +{ > + struct olpc_apsp *priv = port->port_data; > + unsigned int tmp; > + > + if (--priv->open_count == 0) { Both need locking. It looks like you need the song and dance similar to what i8042 has to do with it's multiplexed ports. Or ps2mult.c... -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html