Lines Matching refs:gdev
67 struct gpio_device *gdev, poll_fn func)
71 down_read(&gdev->sem);
73 up_read(&gdev->sem);
79 unsigned long arg, struct gpio_device *gdev,
84 down_read(&gdev->sem);
86 up_read(&gdev->sem);
93 struct gpio_device *gdev, read_fn func)
97 down_read(&gdev->sem);
99 up_read(&gdev->sem);
111 * @gdev: the GPIO device the handle pertains to
117 struct gpio_device *gdev;
248 if (!lh->gdev->chip)
302 return call_ioctl_locked(file, cmd, arg, lh->gdev,
322 gpio_device_put(lh->gdev);
342 static int linehandle_create(struct gpio_device *gdev, void __user *ip)
364 lh->gdev = gpio_device_get(gdev);
382 struct gpio_desc *desc = gpiochip_get_desc(gdev->chip, offset);
417 dev_dbg(&gdev->dev, "registered chardev handle for line %d\n",
449 dev_dbg(&gdev->dev, "registered chardev handle for %d lines\n",
551 * @gdev: the GPIO device the line request pertains to
555 * @device_unregistered_nb: notifier block for receiving gdev unregister events
566 struct gpio_device *gdev;
1452 if (!lr->gdev->chip)
1472 return call_ioctl_locked(file, cmd, arg, lr->gdev,
1490 if (!lr->gdev->chip)
1507 return call_poll_locked(file, wait, lr->gdev, linereq_poll_unlocked);
1518 if (!lr->gdev->chip)
1570 return call_read_locked(file, buf, count, f_ps, lr->gdev,
1579 blocking_notifier_chain_unregister(&lr->gdev->device_notifier,
1590 gpio_device_put(lr->gdev);
1606 struct device *dev = &lr->gdev->dev;
1632 static int linereq_create(struct gpio_device *gdev, void __user *ip)
1660 lr->gdev = gpio_device_get(gdev);
1692 struct gpio_desc *desc = gpiochip_get_desc(gdev->chip, offset);
1737 dev_dbg(&gdev->dev, "registered chardev handle for line %d\n",
1742 ret = blocking_notifier_chain_register(&gdev->device_notifier,
1773 dev_dbg(&gdev->dev, "registered chardev handle for %d lines\n",
1793 * @gdev: the GPIO device the event pertains to
1799 * @device_unregistered_nb: notifier block for receiving gdev unregister events
1806 struct gpio_device *gdev;
1827 if (!le->gdev->chip)
1843 return call_poll_locked(file, wait, le->gdev, lineevent_poll_unlocked);
1871 if (!le->gdev->chip)
1936 return call_read_locked(file, buf, count, f_ps, le->gdev,
1943 blocking_notifier_chain_unregister(&le->gdev->device_notifier,
1950 gpio_device_put(le->gdev);
1967 if (!le->gdev->chip)
1997 return call_ioctl_locked(file, cmd, arg, le->gdev,
2082 static int lineevent_create(struct gpio_device *gdev, void __user *ip)
2102 desc = gpiochip_get_desc(gdev->chip, offset);
2128 le->gdev = gpio_device_get(gdev);
2173 ret = blocking_notifier_chain_register(&gdev->device_notifier,
2274 struct gpio_chip *gc = desc->gdev->chip;
2357 struct gpio_device *gdev;
2370 struct gpio_device *gdev = cdev->gdev;
2375 strscpy(chipinfo.name, dev_name(&gdev->dev), sizeof(chipinfo.name));
2376 strscpy(chipinfo.label, gdev->label, sizeof(chipinfo.label));
2377 chipinfo.lines = gdev->ngpio;
2409 desc = gpiochip_get_desc(cdev->gdev->chip, lineinfo.line_offset);
2446 desc = gpiochip_get_desc(cdev->gdev->chip, lineinfo.offset);
2476 if (offset >= cdev->gdev->ngpio)
2488 struct gpio_device *gdev = cdev->gdev;
2492 if (!gdev->chip)
2501 return linehandle_create(gdev, ip);
2503 return lineevent_create(gdev, ip);
2514 return linereq_create(gdev, ip);
2529 return call_ioctl_locked(file, cmd, arg, cdev->gdev,
2585 if (!cdev->gdev->chip)
2602 return call_poll_locked(file, pollt, cdev->gdev,
2615 if (!cdev->gdev->chip)
2690 return call_read_locked(file, buf, count, off, cdev->gdev,
2702 struct gpio_device *gdev = container_of(inode->i_cdev,
2707 down_read(&gdev->sem);
2710 if (!gdev->chip) {
2719 cdev->watched_lines = bitmap_zalloc(gdev->chip->ngpio, GFP_KERNEL);
2725 cdev->gdev = gpio_device_get(gdev);
2728 ret = blocking_notifier_chain_register(&gdev->line_state_notifier,
2735 ret = blocking_notifier_chain_register(&gdev->device_notifier,
2746 up_read(&gdev->sem);
2751 blocking_notifier_chain_unregister(&gdev->device_notifier,
2754 blocking_notifier_chain_unregister(&gdev->line_state_notifier,
2757 gpio_device_put(gdev);
2762 up_read(&gdev->sem);
2775 struct gpio_device *gdev = cdev->gdev;
2778 blocking_notifier_chain_unregister(&gdev->device_notifier,
2780 blocking_notifier_chain_unregister(&gdev->line_state_notifier,
2782 gpio_device_put(gdev);
2801 int gpiolib_cdev_register(struct gpio_device *gdev, dev_t devt)
2805 cdev_init(&gdev->chrdev, &gpio_fileops);
2806 gdev->chrdev.owner = THIS_MODULE;
2807 gdev->dev.devt = MKDEV(MAJOR(devt), gdev->id);
2809 ret = cdev_device_add(&gdev->chrdev, &gdev->dev);
2813 chip_dbg(gdev->chip, "added GPIO chardev (%d:%d)\n",
2814 MAJOR(devt), gdev->id);
2819 void gpiolib_cdev_unregister(struct gpio_device *gdev)
2821 cdev_device_del(&gdev->chrdev, &gdev->dev);
2822 blocking_notifier_call_chain(&gdev->device_notifier, 0, NULL);