====== GSoC 2018: IIO driver project ====== [[:gsoc:google-summer-code-2018|Main GSoC Linux Foundation page: How to apply, deadlines, other workgroups, ...]] ===== Proposal ===== The main purpose of the Industrial I/O subsystem (IIO) is to provide support for devices that in some sense perform either analog-to-digital conversion (ADC) or digital-to-analog conversion (DAC) or both. Devices that fall into this category include: ADCs, DACs, accelerometers, gyroscopes, color and light sensors, pressure sensors, magnetometers, VOC sensors, etc. The goal of this project is to write a driver for [[https://learn.adafruit.com/adafruit-bme680-humidity-temperature-barometic-pressure-voc-gas | Bosch BME680]] temperature, barometric, pressure and VOC gas sensor using the [[https://www.kernel.org/doc/html/v4.15/driver-api/iio/index.html | IIO]] interface. The project is split in the following subtasks: * get familiar with IIO subsystem, I2C and SPI API. * create skeleton driver registering an IIO device * add IIO channel for humidity * add IIO channel for temperature * add IIO channel for pressure * add IIO channel for VOC * add support for buffer triggered readings for each of the supported channels in order to efficiently read samples * add support for power management Desired knowledge: * comfortable with C * basic low level programming concepts (files, memory, buses) The accepted student will work on writing the driver for the proposed sensor. In the application form please let me know your plan on how to test your code. Hints: * sensor communicates over SPI/I2C. * SBC or USB to I2C/SPI bridge. Code license: GPL The project is considered successful if the code is accepted into Linux kernel IIO maintainer's tree. ===== Where to start? ===== Have a look at the [[https://kernelnewbies.org/IIO_tasks]] page. The IIO tasks are part of your application process, try to solve as many as you can. ===== Contact ===== IRC: #linux-iio, on irc.oftc.net server. Mentor: Daniel Baluta