Lines Matching refs:irq_line
207 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[gpio]; in virtio_gpio_irq_prepare() local
208 struct virtio_gpio_irq_request *ireq = &irq_line->ireq; in virtio_gpio_irq_prepare()
209 struct virtio_gpio_irq_response *ires = &irq_line->ires; in virtio_gpio_irq_prepare()
213 if (WARN_ON(irq_line->queued || irq_line->masked || irq_line->disabled)) in virtio_gpio_irq_prepare()
222 ret = virtqueue_add_sgs(vgpio->event_vq, sgs, 1, 1, irq_line, GFP_ATOMIC); in virtio_gpio_irq_prepare()
228 irq_line->queued = true; in virtio_gpio_irq_prepare()
236 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_enable() local
239 irq_line->disabled = false; in virtio_gpio_irq_enable()
240 irq_line->masked = false; in virtio_gpio_irq_enable()
241 irq_line->queue_pending = true; in virtio_gpio_irq_enable()
244 irq_line->update_pending = true; in virtio_gpio_irq_enable()
251 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_disable() local
254 irq_line->disabled = true; in virtio_gpio_irq_disable()
255 irq_line->masked = true; in virtio_gpio_irq_disable()
256 irq_line->queue_pending = false; in virtio_gpio_irq_disable()
259 irq_line->update_pending = true; in virtio_gpio_irq_disable()
266 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_mask() local
269 irq_line->masked = true; in virtio_gpio_irq_mask()
277 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_unmask() local
280 irq_line->masked = false; in virtio_gpio_irq_unmask()
291 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_set_type() local
314 irq_line->type = type; in virtio_gpio_irq_set_type()
315 irq_line->update_pending = true; in virtio_gpio_irq_set_type()
332 struct vgpio_irq_line *irq_line = &vgpio->irq_lines[d->hwirq]; in virtio_gpio_irq_bus_sync_unlock() local
333 u8 type = irq_line->disabled ? VIRTIO_GPIO_IRQ_TYPE_NONE : irq_line->type; in virtio_gpio_irq_bus_sync_unlock()
336 if (irq_line->update_pending) { in virtio_gpio_irq_bus_sync_unlock()
337 irq_line->update_pending = false; in virtio_gpio_irq_bus_sync_unlock()
343 if (irq_line->queue_pending) { in virtio_gpio_irq_bus_sync_unlock()
344 irq_line->queue_pending = false; in virtio_gpio_irq_bus_sync_unlock()
367 struct vgpio_irq_line *irq_line) in ignore_irq() argument
372 irq_line->queued = false; in ignore_irq()
375 if (irq_line->masked || irq_line->disabled) { in ignore_irq()
384 if (irq_line->ires.status == VIRTIO_GPIO_IRQ_STATUS_INVALID) { in ignore_irq()
390 if (WARN_ON(irq_line->ires.status != VIRTIO_GPIO_IRQ_STATUS_VALID)) in ignore_irq()
403 struct vgpio_irq_line *irq_line; in virtio_gpio_event_vq() local
408 irq_line = virtqueue_get_buf(vgpio->event_vq, &len); in virtio_gpio_event_vq()
409 if (!irq_line) in virtio_gpio_event_vq()
412 if (len != sizeof(irq_line->ires)) { in virtio_gpio_event_vq()
414 len, (unsigned int)sizeof(irq_line->ires)); in virtio_gpio_event_vq()
424 gpio = irq_line - vgpio->irq_lines; in virtio_gpio_event_vq()
427 if (unlikely(ignore_irq(vgpio, gpio, irq_line))) in virtio_gpio_event_vq()