Lines Matching refs:iforce
13 struct iforce iforce; member
24 static void iforce_serio_xmit(struct iforce *iforce) in iforce_serio_xmit() argument
26 struct iforce_serio *iforce_serio = container_of(iforce, in iforce_serio_xmit()
28 iforce); in iforce_serio_xmit()
32 if (test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) { in iforce_serio_xmit()
33 set_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags); in iforce_serio_xmit()
37 guard(spinlock_irqsave)(&iforce->xmit_lock); in iforce_serio_xmit()
40 if (iforce->xmit.head == iforce->xmit.tail) in iforce_serio_xmit()
48 iforce->xmit.buf[iforce->xmit.tail]); in iforce_serio_xmit()
49 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serio_xmit()
50 XMIT_INC(iforce->xmit.tail, 1); in iforce_serio_xmit()
52 for (i = iforce->xmit.buf[iforce->xmit.tail]; i >= 0; --i) { in iforce_serio_xmit()
54 iforce->xmit.buf[iforce->xmit.tail]); in iforce_serio_xmit()
55 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serio_xmit()
56 XMIT_INC(iforce->xmit.tail, 1); in iforce_serio_xmit()
61 } while (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags)); in iforce_serio_xmit()
63 iforce_clear_xmit_and_wake(iforce); in iforce_serio_xmit()
66 static int iforce_serio_get_id(struct iforce *iforce, u8 id, in iforce_serio_get_id() argument
69 struct iforce_serio *iforce_serio = container_of(iforce, in iforce_serio_get_id()
71 iforce); in iforce_serio_get_id()
76 iforce_send_packet(iforce, FF_CMD_QUERY, &id); in iforce_serio_get_id()
78 wait_event_interruptible_timeout(iforce->wait, in iforce_serio_get_id()
96 static int iforce_serio_start_io(struct iforce *iforce) in iforce_serio_start_io() argument
102 static void iforce_serio_stop_io(struct iforce *iforce) in iforce_serio_stop_io() argument
116 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_write_wakeup() local
118 iforce_serio_xmit(iforce); in iforce_serio_write_wakeup()
125 struct iforce *iforce = &iforce_serio->iforce; in iforce_serio_irq() local
166 wake_up_all(&iforce->wait); in iforce_serio_irq()
167 } else if (likely(iforce->type)) { in iforce_serio_irq()
168 iforce_process_packet(iforce, iforce_serio->id, in iforce_serio_irq()
192 iforce_serio->iforce.xport_ops = &iforce_serio_xport_ops; in iforce_serio_connect()
201 err = iforce_init_device(&serio->dev, BUS_RS232, &iforce_serio->iforce); in iforce_serio_connect()
217 input_unregister_device(iforce_serio->iforce.dev); in iforce_serio_disconnect()