• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/serio/

Lines Matching refs:serio_raw

32 struct serio_raw {
47 struct serio_raw *serio_raw;
66 static struct serio_raw *serio_raw_locate(int minor)
68 struct serio_raw *serio_raw;
70 list_for_each_entry(serio_raw, &serio_raw_list, node) {
71 if (serio_raw->dev.minor == minor)
72 return serio_raw;
80 struct serio_raw *serio_raw;
88 serio_raw = serio_raw_locate(iminor(inode));
89 if (!serio_raw) {
94 if (!serio_raw->serio) {
105 list->serio_raw = serio_raw;
108 serio_raw->refcnt++;
109 list_add_tail(&list->node, &serio_raw->list);
116 static int serio_raw_cleanup(struct serio_raw *serio_raw)
118 if (--serio_raw->refcnt == 0) {
119 misc_deregister(&serio_raw->dev);
120 list_del_init(&serio_raw->node);
121 kfree(serio_raw);
132 struct serio_raw *serio_raw = list->serio_raw;
136 serio_raw_cleanup(serio_raw);
142 static int serio_raw_fetch_byte(struct serio_raw *serio_raw, char *c)
147 spin_lock_irqsave(&serio_raw->serio->lock, flags);
149 empty = serio_raw->head == serio_raw->tail;
151 *c = serio_raw->queue[serio_raw->tail];
152 serio_raw->tail = (serio_raw->tail + 1) % SERIO_RAW_QUEUE_LEN;
155 spin_unlock_irqrestore(&serio_raw->serio->lock, flags);
163 struct serio_raw *serio_raw = list->serio_raw;
167 if (!serio_raw->serio)
170 if (serio_raw->head == serio_raw->tail && (file->f_flags & O_NONBLOCK))
173 retval = wait_event_interruptible(list->serio_raw->wait,
174 serio_raw->head != serio_raw->tail || !serio_raw->serio);
178 if (!serio_raw->serio)
181 while (retval < count && serio_raw_fetch_byte(serio_raw, &c)) {
201 if (!list->serio_raw->serio) {
214 if (serio_write(list->serio_raw->serio, c)) {
230 poll_wait(file, &list->serio_raw->wait, wait);
232 if (list->serio_raw->head != list->serio_raw->tail)
256 struct serio_raw *serio_raw = serio_get_drvdata(serio);
258 unsigned int head = serio_raw->head;
261 serio_raw->queue[head] = data;
263 if (likely(head != serio_raw->tail)) {
264 serio_raw->head = head;
265 list_for_each_entry(list, &serio_raw->list, node)
267 wake_up_interruptible(&serio_raw->wait);
275 struct serio_raw *serio_raw;
278 if (!(serio_raw = kzalloc(sizeof(struct serio_raw), GFP_KERNEL))) {
279 printk(KERN_ERR "serio_raw.c: can't allocate memory for a device\n");
285 snprintf(serio_raw->name, sizeof(serio_raw->name), "serio_raw%d", serio_raw_no++);
286 serio_raw->refcnt = 1;
287 serio_raw->serio = serio;
288 INIT_LIST_HEAD(&serio_raw->list);
289 init_waitqueue_head(&serio_raw->wait);
291 serio_set_drvdata(serio, serio_raw);
297 list_add_tail(&serio_raw->node, &serio_raw_list);
299 serio_raw->dev.minor = PSMOUSE_MINOR;
300 serio_raw->dev.name = serio_raw->name;
301 serio_raw->dev.parent = &serio->dev;
302 serio_raw->dev.fops = &serio_raw_fops;
304 err = misc_register(&serio_raw->dev);
306 serio_raw->dev.minor = MISC_DYNAMIC_MINOR;
307 err = misc_register(&serio_raw->dev);
311 printk(KERN_INFO "serio_raw: failed to register raw access device for %s\n",
316 printk(KERN_INFO "serio_raw: raw access enabled on %s (%s, minor %d)\n",
317 serio->phys, serio_raw->name, serio_raw->dev.minor);
322 list_del_init(&serio_raw->node);
325 kfree(serio_raw);
333 struct serio_raw *serio_raw = serio_get_drvdata(serio);
336 if (!drv || !serio_raw) {
337 printk(KERN_DEBUG "serio_raw: reconnect request, but serio is disconnected, ignoring...\n");
350 struct serio_raw *serio_raw;
354 serio_raw = serio_get_drvdata(serio);
359 serio_raw->serio = NULL;
360 if (!serio_raw_cleanup(serio_raw))
361 wake_up_interruptible(&serio_raw->wait);
386 .name = "serio_raw",