## page was renamed from IIO cleanup These tasks are for you to get familiar with the IIO subsystem. Please email your solutions to daniel.baluta at intel dot com and octavian.purdila at intel dot com. Your email should have the subject '''Task XX: Short task description''' = Experimenting with IIO subsystem = For this we will use two kernel modules found in {{{drivers/staging/iio}}}: * {{{iio_dummy_evgen.ko}}} - generates ''fake'' events interrupts to be used by the {{{iio_dummy}}} example driver * implementation for this module is in {{{iio_dummy_evgen.c}}} * {{{iio_dummy.ko}}} - example IIO driver to demonstrate existing functionality * core implementation can be found in {{{iio_simple_dummy.c}}} * buffer functionality is implemented in {{{iio_simple_dummy_buffer.c}}} * events functionality is implemented in {{{iio_simple_dummy_events.c}}} == Dummy modules compilation == You need to select the following config options: * {{{CONFIG_IIO_DUMMY_EVGEN}}} - for building {{{iio_dummy_evgen}}} kernel module * {{{CONFIG_IIO_SIMPLE_DUMMY}}} - for building {{{iio_dummy}}} kernel module * {{{CONFIG_IIO_SIMPLE_DUMMY_EVENTS}}}, {{{CONFIG_IIO_SIMPLE_DUMMY_BUFFER}}} should be selected for events and buffer functionality. Use the following commands for modules compilation: * {{{$ make drivers/staging/iio/iio_dummy_evgen.ko}}} * {{{$ make drivers/staging/iio/iio_dummy.ko}}} Use the following commands for module loading: * {{{$ insmod iio_dummy_evgen.ko}}} * {{{$ insmod iio_dummy.ko}}} Task 01: * Show that the modules were successfully loaded. * lsmod * ls -l /sys/bus/iio/devices/ * ls -l /sys/bus/iio/devices/iio:device0/ * ls -l /sys/bus/iio/devices/iio_evgen/ Task 02: * Add channels for a 3-axis compass to iio_simple_dummy module. * Show that channels were successfully added * ls -l /sys/bus/iio/devices/iio:device0/ * ls -l /sys/bus/iio/devices/iio:device0/scan_elements * create a patch with your changes * '''Hints''': * channel type for a compass is IIO_MAGN * users should be able to read raw readings from each axis * users should be able to read a shared scale * users should be able to access data via a buffer * data is unsigned, resolution is 16 bits, storage is 16 bits * compass doesn't support events == IIO event monitor == IIO event monitor is an user space example application which reads events from IIO layer and pretty prints the results. Implementation can be found in {{{iio_event_monitor.c}}} under {{{tools/iio/}}}. [[BR]] Task 03: * compile {{{iio_event_monitor.c}}} to obtain an executable called {{{iio_event_monitor}}}. * send us the command(s) used to successfully compoile iio_event_monitor.c