Lines Matching refs:iforce
26 void iforce_serial_xmit(struct iforce *iforce) in iforce_serial_xmit() argument
32 if (test_and_set_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags)) { in iforce_serial_xmit()
33 set_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags); in iforce_serial_xmit()
37 spin_lock_irqsave(&iforce->xmit_lock, flags); in iforce_serial_xmit()
40 if (iforce->xmit.head == iforce->xmit.tail) { in iforce_serial_xmit()
41 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_serial_xmit()
42 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_serial_xmit()
48 serio_write(iforce->serio, 0x2b); in iforce_serial_xmit()
50 serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]); in iforce_serial_xmit()
51 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serial_xmit()
52 XMIT_INC(iforce->xmit.tail, 1); in iforce_serial_xmit()
54 for (i=iforce->xmit.buf[iforce->xmit.tail]; i >= 0; --i) { in iforce_serial_xmit()
55 serio_write(iforce->serio, iforce->xmit.buf[iforce->xmit.tail]); in iforce_serial_xmit()
56 cs ^= iforce->xmit.buf[iforce->xmit.tail]; in iforce_serial_xmit()
57 XMIT_INC(iforce->xmit.tail, 1); in iforce_serial_xmit()
60 serio_write(iforce->serio, cs); in iforce_serial_xmit()
62 if (test_and_clear_bit(IFORCE_XMIT_AGAIN, iforce->xmit_flags)) in iforce_serial_xmit()
65 clear_bit(IFORCE_XMIT_RUNNING, iforce->xmit_flags); in iforce_serial_xmit()
67 spin_unlock_irqrestore(&iforce->xmit_lock, flags); in iforce_serial_xmit()
72 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_write_wakeup() local
74 iforce_serial_xmit(iforce); in iforce_serio_write_wakeup()
80 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_irq() local
82 if (!iforce->pkt) { in iforce_serio_irq()
84 iforce->pkt = 1; in iforce_serio_irq()
88 if (!iforce->id) { in iforce_serio_irq()
90 iforce->pkt = 0; in iforce_serio_irq()
92 iforce->id = data; in iforce_serio_irq()
96 if (!iforce->len) { in iforce_serio_irq()
98 iforce->pkt = 0; in iforce_serio_irq()
99 iforce->id = 0; in iforce_serio_irq()
101 iforce->len = data; in iforce_serio_irq()
106 if (iforce->idx < iforce->len) { in iforce_serio_irq()
107 iforce->csum += iforce->data[iforce->idx++] = data; in iforce_serio_irq()
111 if (iforce->idx == iforce->len) { in iforce_serio_irq()
112 iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data); in iforce_serio_irq()
113 iforce->pkt = 0; in iforce_serio_irq()
114 iforce->id = 0; in iforce_serio_irq()
115 iforce->len = 0; in iforce_serio_irq()
116 iforce->idx = 0; in iforce_serio_irq()
117 iforce->csum = 0; in iforce_serio_irq()
125 struct iforce *iforce; in iforce_serio_connect() local
128 iforce = kzalloc(sizeof(struct iforce), GFP_KERNEL); in iforce_serio_connect()
129 if (!iforce) in iforce_serio_connect()
132 iforce->bus = IFORCE_232; in iforce_serio_connect()
133 iforce->serio = serio; in iforce_serio_connect()
135 serio_set_drvdata(serio, iforce); in iforce_serio_connect()
141 err = iforce_init_device(iforce); in iforce_serio_connect()
149 kfree(iforce); in iforce_serio_connect()
155 struct iforce *iforce = serio_get_drvdata(serio); in iforce_serio_disconnect() local
157 input_unregister_device(iforce->dev); in iforce_serio_disconnect()
160 kfree(iforce); in iforce_serio_disconnect()