linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* iio_trigger_poll_chained stop and trig->use_count always equals to 1
@ 2013-07-16  9:26 Denis CIOCCA
  2013-07-16 10:28 ` Lars-Peter Clausen
  0 siblings, 1 reply; 4+ messages in thread
From: Denis CIOCCA @ 2013-07-16  9:26 UTC (permalink / raw)
  To: linux-iio@vger.kernel.org; +Cc: jonathan cameron

Hi all,

I need your help to understanding my strange issue...
The scenario is that:

- I have one I2C device (microcontroller) that expose some sensors.
- I wrote one driver that create one IIO device for each sensor.
- There is only one trigger associated to all IIO devices, and one buffer f=
or=20
each device.

When interrupt appear (DRDY of one or more sensors), the driver reads a mas=
k=20
from micro to understand how many sensors have new data. After that, the=20
driver reads all new data from micro and save all data to one buffer. This =
is=20
done in a threaded irq function.

When iio_trigger_poll_chained is called, all data are saved to one common=20
buffer, each iio_triggered_buffer_setup functions is called and can split a=
nd=20
push their data to iio_buffer.

The issue is that: after some samples (about 50:100) the=20
iio_trigger_poll_chained doesn't call the iio_triggered_buffer_setup functi=
ons=20
and trig->use_count is always equals to 1.

To well understanding:

static irqreturn_t st_drdy_poll(int irq, void *private)
{
	// stuff statements
	// i2c read mask
	// i2c read sensors data
	iio_trigger_poll_chained(trig, 0);
	return IRQ_HANDLED;
}

static irqreturn_t st_trigger_handler(int irq, void *p)
{
	// stuff statements
	// only check operations
	iio_push_to_buffers(sensor_iio_dev, sdata->buffer_data);
	iio_trigger_notify_done(sensor_iio_dev->trig);
	return IRQ_HANDLED;
}

trigger_allocate()
{
err =3D request_threaded_irq(client->irq,
				NULL,
				st_drdy_poll,
				IRQF_TRIGGER_RISING | IRQF_ONESHOT,
				name,
				trig);
}

buffer_allocate()
{
return iio_triggered_buffer_setup(sensor_iio_dev,
						&iio_pollfunc_store_time,
						&st_trigger_handler,
						&st_buffer_setup_ops);
}



If you have any comments...Thanks for your time!

Denis

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-07-16 14:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-16  9:26 iio_trigger_poll_chained stop and trig->use_count always equals to 1 Denis CIOCCA
2013-07-16 10:28 ` Lars-Peter Clausen
2013-07-16 13:26   ` Denis CIOCCA
2013-07-16 14:26     ` Lars-Peter Clausen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).