Lines Matching refs:le
624 struct gpio_v2_line_event *le)
633 kfifo_in(&lr->events, le, 1);
664 struct gpio_v2_line_event le;
674 memset(&le, 0, sizeof(le));
676 le.timestamp_ns = line->timestamp_ns;
688 le.id = line_event_id(level);
691 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE;
694 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE;
699 le.line_seqno = line->line_seqno;
700 le.seqno = (lr->num_lines == 1) ? le.line_seqno : line->req_seqno;
701 le.offset = gpio_chip_hwgpio(line->desc);
703 linereq_put_event(lr, &le);
783 struct gpio_v2_line_event le;
786 memset(&le, 0, sizeof(le));
789 le.timestamp_ns = line->timestamp_ns;
796 le.timestamp_ns = line_event_timestamp(line);
804 le.id = line_event_id(gpiod_get_value_cansleep(line->desc));
807 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE;
810 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE;
816 le.line_seqno = line->line_seqno;
817 le.seqno = (lr->num_lines == 1) ? le.line_seqno : line->req_seqno;
818 le.offset = gpio_chip_hwgpio(line->desc);
820 linereq_put_event(lr, &le);
874 struct gpio_v2_line_event le;
912 memset(&le, 0, sizeof(le));
915 le.timestamp_ns = line_event_timestamp(line);
916 le.offset = gpio_chip_hwgpio(line->desc);
924 le.line_seqno = line->line_seqno;
925 le.seqno = (lr->num_lines == 1) ?
926 le.line_seqno : atomic_add_return(diff_seqno, &lr->seqno);
931 le.line_seqno = line->line_seqno;
932 le.seqno = (lr->num_lines == 1) ?
933 le.line_seqno : atomic_inc_return(&lr->seqno);
936 le.id = line_event_id(level);
938 linereq_put_event(lr, &le);
1514 struct gpio_v2_line_event le;
1521 if (count < sizeof(le))
1545 ret = kfifo_out(&lr->events, &le, 1);
1557 if (copy_to_user(buf + bytes_read, &le, sizeof(le)))
1559 bytes_read += sizeof(le);
1560 } while (count >= bytes_read + sizeof(le));
1824 struct lineevent_state *le = file->private_data;
1827 if (!le->gdev->chip)
1830 poll_wait(file, &le->wait, wait);
1832 if (!kfifo_is_empty_spinlocked_noirqsave(&le->events, &le->wait.lock))
1841 struct lineevent_state *le = file->private_data;
1843 return call_poll_locked(file, wait, le->gdev, lineevent_poll_unlocked);
1849 struct lineevent_state *le = container_of(nb, struct lineevent_state,
1852 wake_up_poll(&le->wait, EPOLLIN | EPOLLERR);
1865 struct lineevent_state *le = file->private_data;
1871 if (!le->gdev->chip)
1891 spin_lock(&le->wait.lock);
1892 if (kfifo_is_empty(&le->events)) {
1894 spin_unlock(&le->wait.lock);
1899 spin_unlock(&le->wait.lock);
1903 ret = wait_event_interruptible_locked(le->wait,
1904 !kfifo_is_empty(&le->events));
1906 spin_unlock(&le->wait.lock);
1911 ret = kfifo_out(&le->events, &ge, 1);
1912 spin_unlock(&le->wait.lock);
1934 struct lineevent_state *le = file->private_data;
1936 return call_read_locked(file, buf, count, f_ps, le->gdev,
1940 static void lineevent_free(struct lineevent_state *le)
1942 if (le->device_unregistered_nb.notifier_call)
1943 blocking_notifier_chain_unregister(&le->gdev->device_notifier,
1944 &le->device_unregistered_nb);
1945 if (le->irq)
1946 free_irq(le->irq, le);
1947 if (le->desc)
1948 gpiod_free(le->desc);
1949 kfree(le->label);
1950 gpio_device_put(le->gdev);
1951 kfree(le);
1963 struct lineevent_state *le = file->private_data;
1967 if (!le->gdev->chip)
1979 val = gpiod_get_value_cansleep(le->desc);
1995 struct lineevent_state *le = file->private_data;
1997 return call_ioctl_locked(file, cmd, arg, le->gdev,
2023 struct lineevent_state *le = p;
2034 if (!le->timestamp)
2037 ge.timestamp = le->timestamp;
2039 if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE
2040 && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
2041 int level = gpiod_get_value_cansleep(le->desc);
2049 } else if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE) {
2052 } else if (le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
2059 ret = kfifo_in_spinlocked_noirqsave(&le->events, &ge,
2060 1, &le->wait.lock);
2062 wake_up_poll(&le->wait, EPOLLIN);
2071 struct lineevent_state *le = p;
2077 le->timestamp = ktime_get_ns();
2085 struct lineevent_state *le;
2125 le = kzalloc(sizeof(*le), GFP_KERNEL);
2126 if (!le)
2128 le->gdev = gpio_device_get(gdev);
2132 le->label = kstrndup(eventreq.consumer_label,
2135 if (!le->label) {
2141 ret = gpiod_request_user(desc, le->label);
2144 le->desc = desc;
2145 le->eflags = eflags;
2169 INIT_KFIFO(le->events);
2170 init_waitqueue_head(&le->wait);
2172 le->device_unregistered_nb.notifier_call = lineevent_unregistered_notify;
2174 &le->device_unregistered_nb);
2183 le->label,
2184 le);
2188 le->irq = irq;
2198 le,
2223 lineevent_free(le);