9
9
First allocate one using:
11
struct iio_dev *indio_dev = iio_allocate_device();
11
struct iio_dev *indio_dev = iio_allocate_device(sizeof(struct chip_state));
12
where chip_state is a structure of local state data for this instance of
15
That data can be accessed using iio_priv(struct iio_dev *)
13
17
Then fill in the following:
16
the struct device associated with the underlying hardware.
18
indio_dev->num_interrupt_lines
19
number of event triggering hardware lines the device has.
21
indio_dev->event_attrs
22
attributes used to enable / disable hardware events - note the
23
attributes are embedded in iio_event_attr structures with an
24
associated iio_event_handler which may or may note be shared.
25
If num_interrupt_lines = 0, then no need to fill this in.
28
general attributes such as polled access to device channels.
31
private device specific data.
33
indio_dev->driver_module
34
typically set to THIS_MODULE. Used to specify ownership of some
35
iio created resources.
38
whether direct access and / or ring buffer access is supported.
19
- indio_dev->dev.parent
20
Struct device associated with the underlying hardware.
22
Name of the device being driven - made available as the name
26
pointer to a structure with elements that tend to be fixed for
27
large sets of different parts supported by a given driver.
29
* info->driver_module:
30
Set to THIS_MODULE. Used to ensure correct ownership
31
of various resources allocate by the core.
32
* info->num_interrupt_lines:
33
Number of event triggering hardware lines the device has.
35
Attributes used to enable / disable hardware events.
37
General device attributes. Typically used for the weird
38
and the wonderful bits not covered by the channel specification.
40
Raw data reading function. Used for both raw channel access
41
and for associate parameters such as offsets and scales.
43
Raw value writing function. Used for writable device values such
44
as DAC values and caliboffset.
45
* info->read_event_config:
46
Typically only set if there are some interrupt lines. This
47
is used to read if an on sensor event detector is enabled.
48
* info->write_event_config:
49
Enable / disable an on sensor event detector.
50
* info->read_event_value:
51
Read value associated with on sensor event detectors. Note that
52
the meaning of the returned value is dependent on the event
54
* info->write_event_value:
55
Write the value associated with on sensor event detectors. E.g.
56
a threshold above which an interrupt occurs. Note that the
57
meaning of the value to be set is event type dependant.
60
Specify whether direct access and / or ring buffer access is supported.
62
An optional associated buffer.
63
- indio_dev->pollfunc:
64
Poll function related elements. This controls what occurs when a trigger
65
to which this device is attached sends and event.
66
- indio_dev->channels:
67
Specification of device channels. Most attributes etc are built
69
- indio_dev->num_channels:
70
How many channels are there?
40
72
Once these are set up, a call to iio_device_register(indio_dev),
41
73
will register the device with the iio core.