+/*
+ * Use the following functions to protect critical sections in
+ * driver code from port's interrupt handler
+ */
+static inline void serio_pause_rx(struct serio *serio)
+{
+ spin_lock_irq(&serio->lock);
+}
+
+static inline void serio_continue_rx(struct serio *serio)
+{
+ spin_unlock_irq(&serio->lock);
+}
+
+/*
+ * Use the following functions to pin serio's driver in process context
+ */
+static inline int serio_pin_driver(struct serio *serio)
+{
+ return mutex_lock_interruptible(&serio->drv_mutex);
+}
+
+static inline void serio_pin_driver_uninterruptible(struct serio *serio)
+{
+ mutex_lock(&serio->drv_mutex);
+}
+
+static inline void serio_unpin_driver(struct serio *serio)
+{
+ mutex_unlock(&serio->drv_mutex);
+}
+
+