Lines Matching refs:le
518 struct gpio_v2_line_event *le)
527 kfifo_in(&lr->events, le, 1);
539 struct gpio_v2_line_event le;
542 memset(&le, 0, sizeof(le));
545 le.timestamp_ns = line->timestamp_ns;
552 le.timestamp_ns = ktime_get_ns();
564 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE;
567 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE;
570 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE;
573 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE;
578 le.line_seqno = line->line_seqno;
579 le.seqno = (lr->num_lines == 1) ? le.line_seqno : line->req_seqno;
580 le.offset = gpio_chip_hwgpio(line->desc);
582 linereq_put_event(lr, &le);
636 struct gpio_v2_line_event le;
666 memset(&le, 0, sizeof(le));
669 le.timestamp_ns = ktime_get_ns();
670 le.offset = gpio_chip_hwgpio(line->desc);
672 le.line_seqno = line->line_seqno;
673 le.seqno = (lr->num_lines == 1) ?
674 le.line_seqno : atomic_inc_return(&lr->seqno);
678 le.id = GPIO_V2_LINE_EVENT_RISING_EDGE;
681 le.id = GPIO_V2_LINE_EVENT_FALLING_EDGE;
683 linereq_put_event(lr, &le);
1218 struct gpio_v2_line_event le;
1225 if (count < sizeof(le))
1249 ret = kfifo_out(&lr->events, &le, 1);
1261 if (copy_to_user(buf + bytes_read, &le, sizeof(le)))
1263 bytes_read += sizeof(le);
1264 } while (count >= bytes_read + sizeof(le));
1487 struct lineevent_state *le = file->private_data;
1490 if (!le->gdev->chip)
1493 poll_wait(file, &le->wait, wait);
1495 if (!kfifo_is_empty_spinlocked_noirqsave(&le->events, &le->wait.lock))
1522 struct lineevent_state *le = file->private_data;
1528 if (!le->gdev->chip)
1545 spin_lock(&le->wait.lock);
1546 if (kfifo_is_empty(&le->events)) {
1548 spin_unlock(&le->wait.lock);
1553 spin_unlock(&le->wait.lock);
1557 ret = wait_event_interruptible_locked(le->wait,
1558 !kfifo_is_empty(&le->events));
1560 spin_unlock(&le->wait.lock);
1565 ret = kfifo_out(&le->events, &ge, 1);
1566 spin_unlock(&le->wait.lock);
1585 static void lineevent_free(struct lineevent_state *le)
1587 if (le->irq)
1588 free_irq(le->irq, le);
1589 if (le->desc)
1590 gpiod_free(le->desc);
1591 kfree(le->label);
1592 put_device(&le->gdev->dev);
1593 kfree(le);
1605 struct lineevent_state *le = file->private_data;
1609 if (!le->gdev->chip)
1621 val = gpiod_get_value_cansleep(le->desc);
1656 struct lineevent_state *le = p;
1667 if (!le->timestamp)
1670 ge.timestamp = le->timestamp;
1672 if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE
1673 && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
1674 int level = gpiod_get_value_cansleep(le->desc);
1682 } else if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE) {
1685 } else if (le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
1692 ret = kfifo_in_spinlocked_noirqsave(&le->events, &ge,
1693 1, &le->wait.lock);
1695 wake_up_poll(&le->wait, EPOLLIN);
1704 struct lineevent_state *le = p;
1710 le->timestamp = ktime_get_ns();
1718 struct lineevent_state *le;
1758 le = kzalloc(sizeof(*le), GFP_KERNEL);
1759 if (!le)
1761 le->gdev = gdev;
1766 le->label = kstrndup(eventreq.consumer_label,
1769 if (!le->label) {
1775 ret = gpiod_request(desc, le->label);
1778 le->desc = desc;
1779 le->eflags = eflags;
1804 INIT_KFIFO(le->events);
1805 init_waitqueue_head(&le->wait);
1812 le->label,
1813 le);
1817 le->irq = irq;
1827 le,
1852 lineevent_free(le);