Lines Matching refs:iforce

30 void iforce_serial_xmit(struct iforce *iforce)  in iforce_serial_xmit()  argument
36 if (test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) { in iforce_serial_xmit()
37 set_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags); in iforce_serial_xmit()
41 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_serial_xmit()
44 if (iforce->xmit.head == iforce->xmit.tail) { in iforce_serial_xmit()
45 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_serial_xmit()
46 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_serial_xmit()
52 serio_write(iforce->serio, 0x2b); in iforce_serial_xmit()
54 serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]); in iforce_serial_xmit()
55 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serial_xmit()
56 XMIT_INC(iforce->xmit.tail, 1); in iforce_serial_xmit()
58 for (i=iforce->xmit.buf[iforce->xmit.tail]; i >= 0; --i) { in iforce_serial_xmit()
59 serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]); in iforce_serial_xmit()
60 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serial_xmit()
61 XMIT_INC(iforce->xmit.tail, 1); in iforce_serial_xmit()
64 serio_write(iforce->serio, cs); in iforce_serial_xmit()
66 if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags)) in iforce_serial_xmit()
69 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_serial_xmit()
71 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_serial_xmit()
76 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_write_wakeup() local
78 iforce_serial_xmit(iforce); in iforce_serio_write_wakeup()
84 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_irq() local
86 if (!iforce->pkt) { in iforce_serio_irq()
88 iforce->pkt = 1; in iforce_serio_irq()
92 if (!iforce->id) { in iforce_serio_irq()
94 iforce->pkt = 0; in iforce_serio_irq()
96 iforce->id = data; in iforce_serio_irq()
100 if (!iforce->len) { in iforce_serio_irq()
102 iforce->pkt = 0; in iforce_serio_irq()
103 iforce->id = 0; in iforce_serio_irq()
105 iforce->len = data; in iforce_serio_irq()
110 if (iforce->idx < iforce->len) { in iforce_serio_irq()
111 iforce->csum += iforce->data[iforce->idx++] = data; in iforce_serio_irq()
115 if (iforce->idx == iforce->len) { in iforce_serio_irq()
116 iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data); in iforce_serio_irq()
117 iforce->pkt = 0; in iforce_serio_irq()
118 iforce->id = 0; in iforce_serio_irq()
119 iforce->len = 0; in iforce_serio_irq()
120 iforce->idx = 0; in iforce_serio_irq()
121 iforce->csum = 0; in iforce_serio_irq()
129 struct iforce *iforce; in iforce_serio_connect() local
132 iforce = kzalloc(sizeof(struct iforce), GFP_KERNEL); in iforce_serio_connect()
133 if (!iforce) in iforce_serio_connect()
136 iforce->bus = IFORCE_232; in iforce_serio_connect()
137 iforce->serio = serio; in iforce_serio_connect()
139 serio_set_drvdata(serio, iforce); in iforce_serio_connect()
145 err = iforce_init_device(iforce); in iforce_serio_connect()
153 kfree(iforce); in iforce_serio_connect()
159 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_disconnect() local
161 input_unregister_device(iforce->dev); in iforce_serio_disconnect()
164 kfree(iforce); in iforce_serio_disconnect()