linux/drivers/iio/adc
Sanchayan Maity 8546d2e5b1 iio: adc: vf610_adc: Fix division by zero error
In case the fsl,adck-max-frequency property is not present in
the device tree, a division by zero error results during the
probe call on kernel boot (see below). This patch fixes it and
also restores device tree compatibility in case kernels are
booting with old device trees without this property specified.

[    1.063229] Division by zero in kernel.
[    1.067152] CPU: 0 PID: 1 Comm: swapper Not tainted
4.3.0-rc5-00212-gcc88cef #37
[    1.074650] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
[    1.081135] Backtrace:
[    1.083694] [<800134a4>] (dump_backtrace) from [<8001369c>]
(show_stack+0x18/0x1c)
[    1.091340]  r7:00000008 r6:8e0ae210 r5:00000000 r4:8e299800
[    1.097146] [<80013684>] (show_stack) from [<80297b1c>]
(dump_stack+0x24/0x28)
[    1.104483] [<80297af8>] (dump_stack) from [<80013608>]
(__div0+0x1c/0x20)
[    1.111421] [<800135ec>] (__div0) from [<802968b4>] (Ldiv0+0x8/0x10)
[    1.117865] [<80424350>] (vf610_adc_probe) from [<803153b4>]
(platform_drv_probe+0x4c/0xac)
[    1.126311]  r10:00000000 r9:8076a5ec r8:00000000 r7:fffffdfb
r6:807cc67c r5:8e0ae210
[    1.134319]  r4:807f6c54
[    1.136915] [<80315368>] (platform_drv_probe) from [<803138bc>]
(driver_probe_device+0x20c/0x2f8)
[    1.145882]  r7:807cc67c r6:00000000 r5:8e0ae210 r4:807f6c54
[    1.151657] [<803136b0>] (driver_probe_device) from [<80313a3c>]
(__driver_attach+0x94/0x98)
[    1.160190]  r9:8076a5ec r8:00000098 r7:00000000 r6:8e0ae244
r5:807cc67c r4:8e0ae210
[    1.168112] [<803139a8>] (__driver_attach) from [<80311cb8>]
(bus_for_each_dev+0x70/0xa4)
[    1.176383]  r7:00000000 r6:803139a8 r5:807cc67c r4:00000000
[    1.182159] [<80311c48>] (bus_for_each_dev) from [<80313318>]
(driver_attach+0x24/0x28)
[    1.190260]  r6:807bb568 r5:8e2a5b00 r4:807cc67c
[    1.194996] [<803132f4>] (driver_attach) from [<80312f50>]
(bus_add_driver+0x1a4/0x21c)
[    1.203113] [<80312dac>] (bus_add_driver) from [<803142a8>]
(driver_register+0x80/0x100)
[    1.211275]  r7:8e2a7dc0 r6:807a8160 r5:80789e14 r4:807cc67c
[    1.217075] [<80314228>] (driver_register) from [<803152f8>]
(__platform_driver_register+0x5c/0x64)
[    1.226216]  r5:80789e14 r4:807a8160
[    1.229877] [<8031529c>] (__platform_driver_register) from
[<80789e30>] (vf610_adc_driver_init+0x1c/0x20)
[    1.239556] [<80789e14>] (vf610_adc_driver_init) from [<800095f8>]
(do_one_initcall+0x94/0x1dc)
[    1.248365] [<80009564>] (do_one_initcall) from [<8076ae34>]
(kernel_init_freeable+0x13c/0x1e0)
[    1.257155]  r10:80794830 r9:8076a5ec r8:00000098 r7:807d5780
r6:807d5780 r5:00000006
[    1.265153]  r4:807a0ee8
[    1.267753] [<8076acf8>] (kernel_init_freeable) from [<80590ef0>]
(kernel_init+0x18/0xf0)
[    1.276021]  r10:00000000 r9:00000000 r8:00000000 r7:00000000
r6:00000000 r5:80590ed8
[    1.284015]  r4:807d5780
[    1.286615] [<80590ed8>] (kernel_init) from [<8000f878>]
(ret_from_fork+0x14/0x3c)
[    1.294278]  r5:80590ed8 r4:00000000

Signed-off-by: Sanchayan Maity <maitysanchayan@gmail.com>
Acked-by: Fugang Duan <B38611@freescale.com>
Acked-by: Stefan Agner <stefan@agner.ch>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
2015-11-08 15:41:09 +00:00
..
ad799x.c iio: ad799x: Fix ad7991/ad7995/ad7999 config setup 2014-12-12 12:34:00 +00:00
ad7266.c
ad7291.c 3rd round of IIO new drivers, cleanups and functionality for the 3.17 cycle. 2014-07-13 12:31:47 -07:00
ad7298.c iio:adc:ad7298: Use BIT() and GENMASK() macros 2014-06-14 16:04:24 +01:00
ad7476.c iio:adc:ad7476: Use GENMASK() macro 2014-06-14 16:03:48 +01:00
ad7791.c
ad7793.c iio:ad7793: Fix ad7785 product ID 2015-10-25 13:39:42 +00:00
ad7887.c iio:adc:ad7887: Use BIT() and GENMASK() macros 2014-06-14 16:03:19 +01:00
ad7923.c
ad_sigma_delta.c iio: adc: ad_sigma_delta: Fix indio_dev->trig assignment 2014-08-25 21:48:29 +01:00
at91_adc.c iio: adc: at91_adc: allow to use full range of startup time 2015-07-19 11:48:06 +01:00
axp288_adc.c Second set of new driver, functionality and cleanups for IIO in the 4.2 cycle. 2015-05-24 11:45:21 -07:00
berlin2-adc.c iio:adc:berlin2-adc: Fix register definition 2015-08-12 19:24:08 +01:00
cc10001_adc.c iio: adc: cc10001: Power-up the ADC at probe time when used remotely 2015-06-14 12:21:22 +01:00
da9150-gpadc.c iio: Add support for DA9150 GPADC 2015-02-25 21:05:26 +01:00
exynos_adc.c iio: adc: exynos_adc: Add support for exynos7 2014-11-05 15:38:25 +00:00
Kconfig Second set of new device support, features and cleanup for the 4.3 cycle. 2015-08-12 12:43:41 -07:00
lp8788_adc.c iio: remove .owner field for driver using module_platform_driver 2014-08-26 21:08:38 +01:00
Makefile iio: adc: add support for Berlin 2015-05-23 10:47:40 +01:00
max1027.c treewide: Fix typo in printk messages 2015-03-06 23:05:39 +01:00
max1363.c
mcp320x.c Second set of new device support, features and cleanup for the 4.3 cycle. 2015-08-12 12:43:41 -07:00
mcp3422.c iio: Drop owner assignment from i2c_driver 2015-07-11 18:50:07 +01:00
men_z188_adc.c iio: adc: men_z188_adc: Add terminating entry for men_z188_ids 2014-11-15 16:12:04 +00:00
nau7802.c
qcom-spmi-iadc.c iio: iadc: wait_for_completion_timeout time in jiffies 2015-01-10 11:43:26 +00:00
qcom-spmi-vadc.c iio: adc: spmi-vadc: Fix overflow in output value normalization 2015-04-18 17:40:04 +01:00
rockchip_saradc.c iio: adc: rockchip_saradc: add missing MODULE_* data 2015-07-19 11:47:58 +01:00
ti_am335x_adc.c iio: adc: ti_am335x_adc: make sample delay, open delay, averaging DT parameters 2015-05-13 18:37:22 +01:00
ti-adc081c.c iio: Drop owner assignment from i2c_driver 2015-07-11 18:50:07 +01:00
ti-adc128s052.c iio:adc128s052: add support for adc122s021 2015-05-23 12:42:43 +01:00
twl4030-madc.c iio: adc: twl4030: Fix ADC[3:6] readings 2015-10-03 10:27:18 +01:00
twl6030-gpadc.c iio: adc: twl6030-gpadc: Fix modalias 2015-05-23 12:30:52 +01:00
vf610_adc.c iio: adc: vf610_adc: Fix division by zero error 2015-11-08 15:41:09 +00:00
viperboard_adc.c iio: remove .owner field for driver using module_platform_driver 2014-08-26 21:08:38 +01:00
xilinx-xadc-core.c iio: adc: xilinx: Fix VREFN sign 2015-04-19 13:49:54 +01:00
xilinx-xadc-events.c iio: xilinx-xadc: Remove unused variable 2014-07-03 22:00:40 +01:00
xilinx-xadc.h iio: adc: xilinx: Fix register addresses 2015-04-19 13:47:58 +01:00