Lines Matching refs:userio

57 	struct userio_device *userio = id->port_data;  in userio_device_write()  local
60 spin_lock_irqsave(&userio->buf_lock, flags); in userio_device_write()
62 userio->buf[userio->head] = val; in userio_device_write()
63 userio->head = (userio->head + 1) % USERIO_BUFSIZE; in userio_device_write()
65 if (userio->head == userio->tail) in userio_device_write()
69 spin_unlock_irqrestore(&userio->buf_lock, flags); in userio_device_write()
71 wake_up_interruptible(&userio->waitq); in userio_device_write()
78 struct userio_device *userio; in userio_char_open() local
80 userio = kzalloc(sizeof(struct userio_device), GFP_KERNEL); in userio_char_open()
81 if (!userio) in userio_char_open()
84 mutex_init(&userio->mutex); in userio_char_open()
85 spin_lock_init(&userio->buf_lock); in userio_char_open()
86 init_waitqueue_head(&userio->waitq); in userio_char_open()
88 userio->serio = kzalloc(sizeof(struct serio), GFP_KERNEL); in userio_char_open()
89 if (!userio->serio) { in userio_char_open()
90 kfree(userio); in userio_char_open()
94 userio->serio->write = userio_device_write; in userio_char_open()
95 userio->serio->port_data = userio; in userio_char_open()
97 file->private_data = userio; in userio_char_open()
104 struct userio_device *userio = file->private_data; in userio_char_release() local
106 if (userio->running) { in userio_char_release()
111 serio_unregister_port(userio->serio); in userio_char_release()
113 kfree(userio->serio); in userio_char_release()
116 kfree(userio); in userio_char_release()
124 struct userio_device *userio = file->private_data; in userio_char_read() local
138 spin_lock_irqsave(&userio->buf_lock, flags); in userio_char_read()
140 nonwrap_len = CIRC_CNT_TO_END(userio->head, in userio_char_read()
141 userio->tail, in userio_char_read()
145 memcpy(buf, &userio->buf[userio->tail], copylen); in userio_char_read()
146 userio->tail = (userio->tail + copylen) % in userio_char_read()
150 spin_unlock_irqrestore(&userio->buf_lock, flags); in userio_char_read()
166 error = wait_event_interruptible(userio->waitq, in userio_char_read()
167 userio->head != userio->tail); in userio_char_read()
182 struct userio_device *userio = file->private_data; in userio_char_write() local
194 error = mutex_lock_interruptible(&userio->mutex); in userio_char_write()
200 if (!userio->serio->id.type) { in userio_char_write()
208 if (userio->running) { in userio_char_write()
215 userio->running = true; in userio_char_write()
216 serio_register_port(userio->serio); in userio_char_write()
220 if (userio->running) { in userio_char_write()
227 userio->serio->id.type = cmd.data; in userio_char_write()
231 if (!userio->running) { in userio_char_write()
238 serio_interrupt(userio->serio, cmd.data, 0); in userio_char_write()
247 mutex_unlock(&userio->mutex); in userio_char_write()
253 struct userio_device *userio = file->private_data; in userio_char_poll() local
255 poll_wait(file, &userio->waitq, wait); in userio_char_poll()
257 if (userio->head != userio->tail) in userio_char_poll()