Lines Matching refs:le
557 struct gpio_v2_line_event *le) in linereq_put_event() argument
566 kfifo_in(&lr->events, le, 1); in linereq_put_event()
597 struct gpio_v2_line_event le; in process_hw_ts_thread() local
607 memset(&le, 0, sizeof(le)); in process_hw_ts_thread()
609 le.timestamp_ns = line->timestamp_ns; in process_hw_ts_thread()
621 le.id = line_event_id(level); in process_hw_ts_thread()
624 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE; in process_hw_ts_thread()
627 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE; in process_hw_ts_thread()
632 le.line_seqno = line->line_seqno; in process_hw_ts_thread()
633 le.seqno = (lr->num_lines == 1) ? le.line_seqno : line->req_seqno; in process_hw_ts_thread()
634 le.offset = gpio_chip_hwgpio(line->desc); in process_hw_ts_thread()
636 linereq_put_event(lr, &le); in process_hw_ts_thread()
716 struct gpio_v2_line_event le; in edge_irq_thread() local
719 memset(&le, 0, sizeof(le)); in edge_irq_thread()
722 le.timestamp_ns = line->timestamp_ns; in edge_irq_thread()
729 le.timestamp_ns = line_event_timestamp(line); in edge_irq_thread()
737 le.id = line_event_id(gpiod_get_value_cansleep(line->desc)); in edge_irq_thread()
740 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE; in edge_irq_thread()
743 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE; in edge_irq_thread()
749 le.line_seqno = line->line_seqno; in edge_irq_thread()
750 le.seqno = (lr->num_lines == 1) ? le.line_seqno : line->req_seqno; in edge_irq_thread()
751 le.offset = gpio_chip_hwgpio(line->desc); in edge_irq_thread()
753 linereq_put_event(lr, &le); in edge_irq_thread()
807 struct gpio_v2_line_event le; in debounce_work_func() local
845 memset(&le, 0, sizeof(le)); in debounce_work_func()
848 le.timestamp_ns = line_event_timestamp(line); in debounce_work_func()
849 le.offset = gpio_chip_hwgpio(line->desc); in debounce_work_func()
857 le.line_seqno = line->line_seqno; in debounce_work_func()
858 le.seqno = (lr->num_lines == 1) ? in debounce_work_func()
859 le.line_seqno : atomic_add_return(diff_seqno, &lr->seqno); in debounce_work_func()
864 le.line_seqno = line->line_seqno; in debounce_work_func()
865 le.seqno = (lr->num_lines == 1) ? in debounce_work_func()
866 le.line_seqno : atomic_inc_return(&lr->seqno); in debounce_work_func()
869 le.id = line_event_id(level); in debounce_work_func()
871 linereq_put_event(lr, &le); in debounce_work_func()
1428 struct gpio_v2_line_event le; in linereq_read() local
1432 if (count < sizeof(le)) in linereq_read()
1456 ret = kfifo_out(&lr->events, &le, 1); in linereq_read()
1468 if (copy_to_user(buf + bytes_read, &le, sizeof(le))) in linereq_read()
1470 bytes_read += sizeof(le); in linereq_read()
1471 } while (count >= bytes_read + sizeof(le)); in linereq_read()
1716 struct lineevent_state *le = file->private_data; in lineevent_poll() local
1719 poll_wait(file, &le->wait, wait); in lineevent_poll()
1721 if (!kfifo_is_empty_spinlocked_noirqsave(&le->events, &le->wait.lock)) in lineevent_poll()
1737 struct lineevent_state *le = file->private_data; in lineevent_read() local
1760 spin_lock(&le->wait.lock); in lineevent_read()
1761 if (kfifo_is_empty(&le->events)) { in lineevent_read()
1763 spin_unlock(&le->wait.lock); in lineevent_read()
1768 spin_unlock(&le->wait.lock); in lineevent_read()
1772 ret = wait_event_interruptible_locked(le->wait, in lineevent_read()
1773 !kfifo_is_empty(&le->events)); in lineevent_read()
1775 spin_unlock(&le->wait.lock); in lineevent_read()
1780 ret = kfifo_out(&le->events, &ge, 1); in lineevent_read()
1781 spin_unlock(&le->wait.lock); in lineevent_read()
1800 static void lineevent_free(struct lineevent_state *le) in lineevent_free() argument
1802 if (le->irq) in lineevent_free()
1803 free_irq(le->irq, le); in lineevent_free()
1804 if (le->desc) in lineevent_free()
1805 gpiod_free(le->desc); in lineevent_free()
1806 kfree(le->label); in lineevent_free()
1807 put_device(&le->gdev->dev); in lineevent_free()
1808 kfree(le); in lineevent_free()
1820 struct lineevent_state *le = file->private_data; in lineevent_ioctl() local
1833 val = gpiod_get_value_cansleep(le->desc); in lineevent_ioctl()
1868 struct lineevent_state *le = p; in lineevent_irq_thread() local
1879 if (!le->timestamp) in lineevent_irq_thread()
1882 ge.timestamp = le->timestamp; in lineevent_irq_thread()
1884 if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE in lineevent_irq_thread()
1885 && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) { in lineevent_irq_thread()
1886 int level = gpiod_get_value_cansleep(le->desc); in lineevent_irq_thread()
1894 } else if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE) { in lineevent_irq_thread()
1897 } else if (le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) { in lineevent_irq_thread()
1904 ret = kfifo_in_spinlocked_noirqsave(&le->events, &ge, in lineevent_irq_thread()
1905 1, &le->wait.lock); in lineevent_irq_thread()
1907 wake_up_poll(&le->wait, EPOLLIN); in lineevent_irq_thread()
1916 struct lineevent_state *le = p; in lineevent_irq_handler() local
1922 le->timestamp = ktime_get_ns(); in lineevent_irq_handler()
1930 struct lineevent_state *le; in lineevent_create() local
1970 le = kzalloc(sizeof(*le), GFP_KERNEL); in lineevent_create()
1971 if (!le) in lineevent_create()
1973 le->gdev = gdev; in lineevent_create()
1978 le->label = kstrndup(eventreq.consumer_label, in lineevent_create()
1981 if (!le->label) { in lineevent_create()
1987 ret = gpiod_request_user(desc, le->label); in lineevent_create()
1990 le->desc = desc; in lineevent_create()
1991 le->eflags = eflags; in lineevent_create()
2016 INIT_KFIFO(le->events); in lineevent_create()
2017 init_waitqueue_head(&le->wait); in lineevent_create()
2024 le->label, in lineevent_create()
2025 le); in lineevent_create()
2029 le->irq = irq; in lineevent_create()
2039 le, in lineevent_create()
2064 lineevent_free(le); in lineevent_create()