Lines Matching refs:taos
71 struct taos_data *taos = serio_get_drvdata(serio); in taos_smbus_xfer() local
76 p = taos->buffer; in taos_smbus_xfer()
80 if (addr != taos->addr) in taos_smbus_xfer()
102 dev_dbg(&adapter->dev, "Command buffer: %s\n", taos->buffer); in taos_smbus_xfer()
103 for (p = taos->buffer; *p; p++) in taos_smbus_xfer()
106 taos->addr = addr; in taos_smbus_xfer()
109 taos->pos = 0; in taos_smbus_xfer()
110 taos->state = TAOS_STATE_RECV; in taos_smbus_xfer()
112 wait_event_interruptible_timeout(wq, taos->state == TAOS_STATE_IDLE, in taos_smbus_xfer()
114 if (taos->state != TAOS_STATE_IDLE in taos_smbus_xfer()
115 || taos->pos != 5) { in taos_smbus_xfer()
117 taos->pos); in taos_smbus_xfer()
120 dev_dbg(&adapter->dev, "Answer buffer: %s\n", taos->buffer); in taos_smbus_xfer()
123 p = taos->buffer + 1; in taos_smbus_xfer()
154 struct taos_data *taos = serio_get_drvdata(serio); in taos_interrupt() local
156 switch (taos->state) { in taos_interrupt()
158 taos->buffer[taos->pos++] = data; in taos_interrupt()
160 || taos->pos == TAOS_BUFFER_SIZE - 1) { in taos_interrupt()
161 taos->buffer[taos->pos] = '\0'; in taos_interrupt()
162 taos->state = TAOS_STATE_IDLE; in taos_interrupt()
167 taos->state = TAOS_STATE_IDLE; in taos_interrupt()
171 taos->buffer[taos->pos++] = data; in taos_interrupt()
173 taos->buffer[taos->pos] = '\0'; in taos_interrupt()
174 taos->state = TAOS_STATE_IDLE; in taos_interrupt()
203 struct taos_data *taos; in taos_connect() local
208 taos = kzalloc(sizeof(struct taos_data), GFP_KERNEL); in taos_connect()
209 if (!taos) { in taos_connect()
213 taos->state = TAOS_STATE_INIT; in taos_connect()
214 serio_set_drvdata(serio, taos); in taos_connect()
220 adapter = &taos->adapter; in taos_connect()
228 wait_event_interruptible_timeout(wq, taos->state == TAOS_STATE_IDLE, in taos_connect()
231 if (taos->state != TAOS_STATE_IDLE) { in taos_connect()
234 "pos=%d)\n", taos->state, taos->pos); in taos_connect()
238 name = taos_adapter_name(taos->buffer); in taos_connect()
247 taos->state = TAOS_STATE_EOFF; in taos_connect()
250 wait_event_interruptible_timeout(wq, taos->state == TAOS_STATE_IDLE, in taos_connect()
252 if (taos->state != TAOS_STATE_IDLE) { in taos_connect()
255 "(state=%d)\n", taos->state); in taos_connect()
264 taos->client = taos_instantiate_device(adapter); in taos_connect()
270 kfree(taos); in taos_connect()
277 struct taos_data *taos = serio_get_drvdata(serio); in taos_disconnect() local
279 if (taos->client) in taos_disconnect()
280 i2c_unregister_device(taos->client); in taos_disconnect()
281 i2c_del_adapter(&taos->adapter); in taos_disconnect()
283 kfree(taos); in taos_disconnect()