linux/drivers/iio
Alexandre Belloni 467a44b037 iio: adc: at91_adc: Repair broken platform_data support
Trying to use the at91_adc driver while not using device tree is ending up in a
kernel crash:

Unable to handle kernel NULL pointer dereference at virtual address 00000004
[...]
[<c01f3510>] (at91_adc_probe) from [<c0183828>] (platform_drv_probe+0x18/0x48)
[<c0183828>] (platform_drv_probe) from [<c01824a4>] (driver_probe_device+0x100/0x218)
[<c01824a4>] (driver_probe_device) from [<c0182648>] (__driver_attach+0x8c/0x90)
[<c0182648>] (__driver_attach) from [<c0180de4>] (bus_for_each_dev+0x58/0x88)
[<c0180de4>] (bus_for_each_dev) from [<c0181c7c>] (bus_add_driver+0xd4/0x1d4)
[<c0181c7c>] (bus_add_driver) from [<c0182c40>] (driver_register+0x78/0xf4)
[<c0182c40>] (driver_register) from [<c0008998>] (do_one_initcall+0xe8/0x14c)
[<c0008998>] (do_one_initcall) from [<c02f0b50>] (kernel_init_freeable+0xec/0x1b4)
[<c02f0b50>] (kernel_init_freeable) from [<c022acdc>] (kernel_init+0x8/0xe4)
[<c022acdc>] (kernel_init) from [<c0009670>] (ret_from_fork+0x14/0x24)

This is because the at91_adc_caps structure is mandatory but is not filled when
using platform_data. Correct that by using an id_table. It ensues that the
driver will not match "at91_adc" anymore but it was crashing anyway.

Fixes: c46016665f (iio: at91: ADC start-up time calculation changed since at91sam9x5)
Cc: stable@vger.kernel.org # v3.13+

Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Tested-by: Josh Wu <josh.wu@atmel.com>
Acked-by: Josh Wu <josh.wu@atmel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2014-03-06 19:08:12 +00:00
..
accel iio:accel:bma180: Use modifier instead of index in channel specification 2014-02-08 11:31:50 +00:00
adc iio: adc: at91_adc: Repair broken platform_data support 2014-03-06 19:08:12 +00:00
amplifiers iio: amplifiers: ad8366: Remove regulator_put 2013-09-28 11:49:45 +01:00
common iio: hid-sensors: Fix power and report state 2013-12-02 21:05:32 +00:00
dac iio:dac:mcp4725 drop specification of scan type as unused in this driver. 2013-12-17 21:08:19 +00:00
frequency Merge 3.12-rc6 into staging-next. 2013-10-19 13:14:34 -07:00
gyro iio:gyro: bug on L3GD20H gyroscope support 2014-02-18 10:24:49 +00:00
humidity iio: Add new driver dht11 2013-12-03 20:22:30 +00:00
imu iio: adis16400: Set timestamp as the last element in chan_spec 2014-02-08 11:26:06 +00:00
light iio: cm32181: Change cm32181 ambient light sensor driver 2014-02-18 10:22:30 +00:00
magnetometer iio: ak8975: Fix calculation formula for convert micro tesla to gauss unit 2014-02-08 10:28:05 +00:00
orientation iio: hid-sensors: Added Inclinometer 3D 2013-12-03 20:31:59 +00:00
pressure iio: Add Freescale MPL3115A2 pressure / temperature sensor driver 2013-11-24 21:07:13 +00:00
temperature Merge 3.12-rc2 into staging-next. 2013-09-25 08:59:04 -07:00
trigger iio:trigger: fix sysfs name on list mutex 2013-09-28 11:51:16 +01:00
buffer_cb.c iio: Add reference counting for buffers 2013-10-12 12:04:01 +01:00
iio_core_trigger.h iio: fix semicolon in io_core_trigger.h 2013-08-03 18:40:32 +01:00
iio_core.h iio: Factor IIO value formating into its own function 2013-10-12 12:23:33 +01:00
industrialio-buffer.c iio: Add support for blocking IO on buffers 2013-12-03 20:22:29 +00:00
industrialio-core.c iio: Add support for humidity sensors 2013-12-03 20:22:29 +00:00
industrialio-event.c iio: Remove support for the legacy event config interface 2013-12-08 13:13:52 +00:00
industrialio-trigger.c iio:trigger: Convert to use ATTRIBUTE_GROUPS 2013-12-03 20:22:29 +00:00
industrialio-triggered-buffer.c iio:triggered-buffer: Remove redundant call to iio_sw_buffer_preenable(). 2013-10-16 19:12:47 +01:00
inkern.c iio: inkern: fix iio_convert_raw_to_processed_unlocked 2013-07-03 20:30:52 +01:00
Kconfig iio: hid-sensors: Added Inclinometer 3D 2013-12-03 20:31:59 +00:00
kfifo_buf.c iio: kfifo_buf: Implement data_available() callback 2013-12-03 20:22:28 +00:00
Makefile iio: hid-sensors: Added Inclinometer 3D 2013-12-03 20:31:59 +00:00