Lines Matching refs:iio_evgen
48 static struct iio_dummy_eventgen *iio_evgen; variable
54 iio_evgen = kzalloc(sizeof(*iio_evgen), GFP_KERNEL); in iio_dummy_evgen_create()
55 if (!iio_evgen) in iio_dummy_evgen_create()
58 ret = irq_sim_init(&iio_evgen->irq_sim, IIO_EVENTGEN_NO); in iio_dummy_evgen_create()
60 kfree(iio_evgen); in iio_dummy_evgen_create()
64 iio_evgen->base = irq_sim_irqnum(&iio_evgen->irq_sim, 0); in iio_dummy_evgen_create()
65 mutex_init(&iio_evgen->lock); in iio_dummy_evgen_create()
80 if (!iio_evgen) in iio_dummy_evgen_get_irq()
83 mutex_lock(&iio_evgen->lock); in iio_dummy_evgen_get_irq()
85 if (!iio_evgen->inuse[i]) { in iio_dummy_evgen_get_irq()
86 ret = irq_sim_irqnum(&iio_evgen->irq_sim, i); in iio_dummy_evgen_get_irq()
87 iio_evgen->inuse[i] = true; in iio_dummy_evgen_get_irq()
91 mutex_unlock(&iio_evgen->lock); in iio_dummy_evgen_get_irq()
107 mutex_lock(&iio_evgen->lock); in iio_dummy_evgen_release_irq()
108 iio_evgen->inuse[irq - iio_evgen->base] = false; in iio_dummy_evgen_release_irq()
109 mutex_unlock(&iio_evgen->lock); in iio_dummy_evgen_release_irq()
115 return &iio_evgen->regs[irq - iio_evgen->base]; in iio_dummy_evgen_get_regs()
121 irq_sim_fini(&iio_evgen->irq_sim); in iio_dummy_evgen_free()
122 kfree(iio_evgen); in iio_dummy_evgen_free()
143 iio_evgen->regs[this_attr->address].reg_id = this_attr->address; in iio_evgen_poke()
144 iio_evgen->regs[this_attr->address].reg_data = event; in iio_evgen_poke()
146 irq_sim_fire(&iio_evgen->irq_sim, this_attr->address); in iio_evgen_poke()