IIO Device drivers

This is not intended to provide a comprehensive guide to writing an
IIO device driver.  For further information see the drivers within the
subsystem.

The crucial structure for device drivers in iio is iio_dev.

First allocate one using:

struct iio_dev *indio_dev = iio_allocate_device();

Then fill in the following:

indio_dev->dev.parent
  the struct device associated with the underlying hardware.

indio_dev->num_interrupt_lines
   number of event triggering hardware lines the device has.

indio_dev->event_attrs
   attributes used to enable / disable hardware events - note the
   attributes are embedded in iio_event_attr structures with an
   associated iio_event_handler which may or may note be shared.
   If num_interrupt_lines = 0, then no need to fill this in.

indio_dev->attrs
   general attributes such as polled access to device channels.

indio_dev->dev_data
   private device specific data.

indio_dev->driver_module
   typically set to THIS_MODULE. Used to specify ownership of some
   iio created resources.

indio_dev->modes
   whether direct access and / or ring buffer access is supported.

Once these are set up, a call to iio_device_register(indio_dev),
will register the device with the iio core.

Worth noting here is that, if a ring buffer is to be used, it can be
allocated prior to registering the device with the iio-core, but must
be registered afterwards (otherwise the whole parentage of devices
gets confused)

On remove, iio_device_unregister(indio_dev) will remove the device from
the core, and iio_free_device will clean up.
