Symbol: serio_raw
drivers/input/serio/serio_raw.c
107
struct serio_raw *serio_raw =
drivers/input/serio/serio_raw.c
108
container_of(kref, struct serio_raw, kref);
drivers/input/serio/serio_raw.c
110
put_device(&serio_raw->serio->dev);
drivers/input/serio/serio_raw.c
111
kfree(serio_raw);
drivers/input/serio/serio_raw.c
117
struct serio_raw *serio_raw = client->serio_raw;
drivers/input/serio/serio_raw.c
119
scoped_guard(serio_pause_rx, serio_raw->serio)
drivers/input/serio/serio_raw.c
124
kref_put(&serio_raw->kref, serio_raw_free);
drivers/input/serio/serio_raw.c
129
static bool serio_raw_fetch_byte(struct serio_raw *serio_raw, char *c)
drivers/input/serio/serio_raw.c
131
guard(serio_pause_rx)(serio_raw->serio);
drivers/input/serio/serio_raw.c
133
if (serio_raw->head == serio_raw->tail)
drivers/input/serio/serio_raw.c
136
*c = serio_raw->queue[serio_raw->tail];
drivers/input/serio/serio_raw.c
137
serio_raw->tail = (serio_raw->tail + 1) % SERIO_RAW_QUEUE_LEN;
drivers/input/serio/serio_raw.c
146
struct serio_raw *serio_raw = client->serio_raw;
drivers/input/serio/serio_raw.c
152
if (serio_raw->dead)
drivers/input/serio/serio_raw.c
155
if (serio_raw->head == serio_raw->tail &&
drivers/input/serio/serio_raw.c
162
while (read < count && serio_raw_fetch_byte(serio_raw, &c)) {
drivers/input/serio/serio_raw.c
172
error = wait_event_interruptible(serio_raw->wait,
drivers/input/serio/serio_raw.c
173
serio_raw->head != serio_raw->tail ||
drivers/input/serio/serio_raw.c
174
serio_raw->dead);
drivers/input/serio/serio_raw.c
187
struct serio_raw *serio_raw = client->serio_raw;
drivers/input/serio/serio_raw.c
192
if (serio_raw->dead)
drivers/input/serio/serio_raw.c
202
if (serio_write(serio_raw->serio, c)) {
drivers/input/serio/serio_raw.c
219
struct serio_raw *serio_raw = client->serio_raw;
drivers/input/serio/serio_raw.c
222
poll_wait(file, &serio_raw->wait, wait);
drivers/input/serio/serio_raw.c
224
mask = serio_raw->dead ? EPOLLHUP | EPOLLERR : EPOLLOUT | EPOLLWRNORM;
drivers/input/serio/serio_raw.c
225
if (serio_raw->head != serio_raw->tail)
drivers/input/serio/serio_raw.c
250
struct serio_raw *serio_raw = serio_get_drvdata(serio);
drivers/input/serio/serio_raw.c
252
unsigned int head = serio_raw->head;
drivers/input/serio/serio_raw.c
255
serio_raw->queue[head] = data;
drivers/input/serio/serio_raw.c
257
if (likely(head != serio_raw->tail)) {
drivers/input/serio/serio_raw.c
258
serio_raw->head = head;
drivers/input/serio/serio_raw.c
259
list_for_each_entry(client, &serio_raw->client_list, node)
drivers/input/serio/serio_raw.c
261
wake_up_interruptible(&serio_raw->wait);
drivers/input/serio/serio_raw.c
270
struct serio_raw *serio_raw;
drivers/input/serio/serio_raw.c
273
serio_raw = kzalloc_obj(*serio_raw);
drivers/input/serio/serio_raw.c
274
if (!serio_raw) {
drivers/input/serio/serio_raw.c
279
snprintf(serio_raw->name, sizeof(serio_raw->name),
drivers/input/serio/serio_raw.c
281
kref_init(&serio_raw->kref);
drivers/input/serio/serio_raw.c
282
INIT_LIST_HEAD(&serio_raw->client_list);
drivers/input/serio/serio_raw.c
283
init_waitqueue_head(&serio_raw->wait);
drivers/input/serio/serio_raw.c
285
serio_raw->serio = serio;
drivers/input/serio/serio_raw.c
288
serio_set_drvdata(serio, serio_raw);
drivers/input/serio/serio_raw.c
298
list_add_tail(&serio_raw->node, &serio_raw_list);
drivers/input/serio/serio_raw.c
301
serio_raw->dev.minor = PSMOUSE_MINOR;
drivers/input/serio/serio_raw.c
302
serio_raw->dev.name = serio_raw->name;
drivers/input/serio/serio_raw.c
303
serio_raw->dev.parent = &serio->dev;
drivers/input/serio/serio_raw.c
304
serio_raw->dev.fops = &serio_raw_fops;
drivers/input/serio/serio_raw.c
306
err = misc_register(&serio_raw->dev);
drivers/input/serio/serio_raw.c
308
serio_raw->dev.minor = MISC_DYNAMIC_MINOR;
drivers/input/serio/serio_raw.c
309
err = misc_register(&serio_raw->dev);
drivers/input/serio/serio_raw.c
320
serio->phys, serio_raw->name, serio_raw->dev.minor);
drivers/input/serio/serio_raw.c
324
list_del_init(&serio_raw->node);
drivers/input/serio/serio_raw.c
329
kref_put(&serio_raw->kref, serio_raw_free);
drivers/input/serio/serio_raw.c
335
struct serio_raw *serio_raw = serio_get_drvdata(serio);
drivers/input/serio/serio_raw.c
338
if (!drv || !serio_raw) {
drivers/input/serio/serio_raw.c
355
static void serio_raw_hangup(struct serio_raw *serio_raw)
drivers/input/serio/serio_raw.c
359
scoped_guard(serio_pause_rx, serio_raw->serio) {
drivers/input/serio/serio_raw.c
360
list_for_each_entry(client, &serio_raw->client_list, node)
drivers/input/serio/serio_raw.c
364
wake_up_interruptible(&serio_raw->wait);
drivers/input/serio/serio_raw.c
370
struct serio_raw *serio_raw = serio_get_drvdata(serio);
drivers/input/serio/serio_raw.c
372
misc_deregister(&serio_raw->dev);
drivers/input/serio/serio_raw.c
375
serio_raw->dead = true;
drivers/input/serio/serio_raw.c
376
list_del_init(&serio_raw->node);
drivers/input/serio/serio_raw.c
379
serio_raw_hangup(serio_raw);
drivers/input/serio/serio_raw.c
382
kref_put(&serio_raw->kref, serio_raw_free);
drivers/input/serio/serio_raw.c
44
struct serio_raw *serio_raw;
drivers/input/serio/serio_raw.c
62
static struct serio_raw *serio_raw_locate(int minor)
drivers/input/serio/serio_raw.c
64
struct serio_raw *serio_raw;
drivers/input/serio/serio_raw.c
66
list_for_each_entry(serio_raw, &serio_raw_list, node) {
drivers/input/serio/serio_raw.c
67
if (serio_raw->dev.minor == minor)
drivers/input/serio/serio_raw.c
68
return serio_raw;
drivers/input/serio/serio_raw.c
76
struct serio_raw *serio_raw;
drivers/input/serio/serio_raw.c
80
serio_raw = serio_raw_locate(iminor(inode));
drivers/input/serio/serio_raw.c
81
if (!serio_raw)
drivers/input/serio/serio_raw.c
84
if (serio_raw->dead)
drivers/input/serio/serio_raw.c
91
client->serio_raw = serio_raw;
drivers/input/serio/serio_raw.c
94
kref_get(&serio_raw->kref);
drivers/input/serio/serio_raw.c
96
scoped_guard(serio_pause_rx, serio_raw->serio)
drivers/input/serio/serio_raw.c
97
list_add_tail(&client->node, &serio_raw->client_list);