Lines Matching refs:iforce_serio
12 struct iforce_serio { struct
26 struct iforce_serio *iforce_serio = container_of(iforce, in iforce_serio_xmit() argument
27 struct iforce_serio, in iforce_serio_xmit()
49 serio_write(iforce_serio->serio, 0x2b); in iforce_serio_xmit()
51 serio_write(iforce_serio->serio, iforce->xmit.buf[iforce->xmit.tail]); in iforce_serio_xmit()
56 serio_write(iforce_serio->serio, in iforce_serio_xmit()
62 serio_write(iforce_serio->serio, cs); in iforce_serio_xmit()
75 struct iforce_serio *iforce_serio = container_of(iforce, in iforce_serio_get_id() local
76 struct iforce_serio, in iforce_serio_get_id()
79 iforce_serio->expect_packet = HI(FF_CMD_QUERY); in iforce_serio_get_id()
80 iforce_serio->cmd_response_len = 0; in iforce_serio_get_id()
85 !iforce_serio->expect_packet, HZ); in iforce_serio_get_id()
87 if (iforce_serio->expect_packet) { in iforce_serio_get_id()
88 iforce_serio->expect_packet = 0; in iforce_serio_get_id()
92 if (iforce_serio->cmd_response[0] != id) in iforce_serio_get_id()
95 memcpy(response_data, iforce_serio->cmd_response, in iforce_serio_get_id()
96 iforce_serio->cmd_response_len); in iforce_serio_get_id()
97 *response_len = iforce_serio->cmd_response_len; in iforce_serio_get_id()
130 struct iforce_serio *iforce_serio = serio_get_drvdata(serio); in iforce_serio_irq() local
131 struct iforce *iforce = &iforce_serio->iforce; in iforce_serio_irq()
133 if (!iforce_serio->pkt) { in iforce_serio_irq()
135 iforce_serio->pkt = 1; in iforce_serio_irq()
139 if (!iforce_serio->id) { in iforce_serio_irq()
141 iforce_serio->pkt = 0; in iforce_serio_irq()
143 iforce_serio->id = data; in iforce_serio_irq()
147 if (!iforce_serio->len) { in iforce_serio_irq()
149 iforce_serio->pkt = 0; in iforce_serio_irq()
150 iforce_serio->id = 0; in iforce_serio_irq()
152 iforce_serio->len = data; in iforce_serio_irq()
157 if (iforce_serio->idx < iforce_serio->len) { in iforce_serio_irq()
158 iforce_serio->data_in[iforce_serio->idx++] = data; in iforce_serio_irq()
159 iforce_serio->csum += data; in iforce_serio_irq()
163 if (iforce_serio->idx == iforce_serio->len) { in iforce_serio_irq()
165 if (iforce_serio->expect_packet == iforce_serio->id) { in iforce_serio_irq()
166 iforce_serio->expect_packet = 0; in iforce_serio_irq()
167 memcpy(iforce_serio->cmd_response, in iforce_serio_irq()
168 iforce_serio->data_in, IFORCE_MAX_LENGTH); in iforce_serio_irq()
169 iforce_serio->cmd_response_len = iforce_serio->len; in iforce_serio_irq()
174 iforce_process_packet(iforce, iforce_serio->id, in iforce_serio_irq()
175 iforce_serio->data_in, in iforce_serio_irq()
176 iforce_serio->len); in iforce_serio_irq()
179 iforce_serio->pkt = 0; in iforce_serio_irq()
180 iforce_serio->id = 0; in iforce_serio_irq()
181 iforce_serio->len = 0; in iforce_serio_irq()
182 iforce_serio->idx = 0; in iforce_serio_irq()
183 iforce_serio->csum = 0; in iforce_serio_irq()
191 struct iforce_serio *iforce_serio; in iforce_serio_connect() local
194 iforce_serio = kzalloc(sizeof(*iforce_serio), GFP_KERNEL); in iforce_serio_connect()
195 if (!iforce_serio) in iforce_serio_connect()
198 iforce_serio->iforce.xport_ops = &iforce_serio_xport_ops; in iforce_serio_connect()
200 iforce_serio->serio = serio; in iforce_serio_connect()
201 serio_set_drvdata(serio, iforce_serio); in iforce_serio_connect()
207 err = iforce_init_device(&serio->dev, BUS_RS232, &iforce_serio->iforce); in iforce_serio_connect()
215 kfree(iforce_serio); in iforce_serio_connect()
221 struct iforce_serio *iforce_serio = serio_get_drvdata(serio); in iforce_serio_disconnect() local
223 input_unregister_device(iforce_serio->iforce.dev); in iforce_serio_disconnect()
226 kfree(iforce_serio); in iforce_serio_disconnect()