* vf610_adc: Division by zero
@ 2015-11-03 15:26 Fabio Estevam
2015-11-03 16:01 ` Fabio Estevam
0 siblings, 1 reply; 3+ messages in thread
From: Fabio Estevam @ 2015-11-03 15:26 UTC (permalink / raw)
To: Duan Fugang-B38611; +Cc: Jonathan Cameron, linux-iio
Hi Andy,
Enabling vf610-adc in a imx6sx dts file causes the following error:
[ 2.196814] Hardware name: Freescale i.MX6 SoloX (Device Tree)
[ 2.202652] Backtrace:
[ 2.205156] [<c0013600>] (dump_backtrace) from [<c001379c>]
(show_stack+0x18/0x1c)
[ 2.212730] r6:ef138410 r5:00000000 r4:00000000 r3:00000000
[ 2.218494] [<c0013784>] (show_stack) from [<c02d8220>]
(dump_stack+0x88/0xa4)
[ 2.225756] [<c02d8198>] (dump_stack) from [<c001346c>] (__div0+0x18/0x20)
[ 2.232636] r5:00000001 r4:eeb0a800
[ 2.236286] [<c0013454>] (__div0) from [<c02d6be4>] (Ldiv0+0x8/0x10)
[ 2.242657] [<c0574574>] (vf610_adc_probe) from [<c03c9274>]
(platform_drv_probe+0x58/0xb4)
[ 2.251038] r10:00000000 r9:000000d8 r8:00000000 r7:c0b39ea4
r6:fffffdfb r5:ef138410
[ 2.258980] r4:fffffffe
[ 2.261541] [<c03c921c>] (platform_drv_probe) from [<c03c7a30>]
(driver_probe_device+0x1e4/0x2b0)
[ 2.270446] r7:c0b39ea4 r6:00000000 r5:ef138410 r4:c13592f0
[ 2.276211] [<c03c784c>] (driver_probe_device) from [<c03c7b98>]
(__driver_attach+0x9c/0xa0)
[ 2.284677] r8:c0ab91a0 r7:00000000 r6:ef138444 r5:c0b39ea4
r4:ef138410 r3:00000000
[ 2.292517] [<c03c7afc>] (__driver_attach) from [<c03c5f4c>]
(bus_for_each_dev+0x5c/0x90)
[ 2.300723] r6:c03c7afc r5:c0b39ea4 r4:00000000 r3:ef11b55c
[ 2.306486] [<c03c5ef0>] (bus_for_each_dev) from [<c03c730c>]
(driver_attach+0x20/0x28)
[ 2.314519] r6:c0b0e920 r5:eeaf8f80 r4:c0b39ea4
[ 2.319199] [<c03c72ec>] (driver_attach) from [<c03c7070>]
(bus_add_driver+0xec/0x1fc)
[ 2.327150] [<c03c6f84>] (bus_add_driver) from [<c03c842c>]
(driver_register+0x80/0xfc)
[ 2.335182] r7:c0ac884c r6:eeafb580 r5:c0ae5c58 r4:c0b39ea4
[ 2.340919] [<c03c83ac>] (driver_register) from [<c03c9100>]
(__platform_driver_register+0x38/0x4c)
[ 2.349993] r5:c0ae5c58 r4:c0ae5c58
[ 2.353639] [<c03c90c8>] (__platform_driver_register) from
[<c0ab91b8>] (vf610_adc_driver_init+0x18/0x20)
[ 2.363243] [<c0ab91a0>] (vf610_adc_driver_init) from [<c00098bc>]
(do_one_initcall+0x88/0x1e4)
[ 2.371956] [<c0009834>] (do_one_initcall) from [<c0a6ee64>]
(kernel_init_freeable+0x11c/0x1f0)
[ 2.380682] r10:c0ac8858 r9:000000d8 r8:00000000 r7:c0ac884c
r6:c0b50000 r5:00000006
[ 2.388624] r4:c0adac2c
[ 2.391190] [<c0a6ed48>] (kernel_init_freeable) from [<c07b24fc>]
(kernel_init+0x10/0xf4)
[ 2.399399] r10:00000000 r9:00000000 r8:00000000 r7:00000000
r6:00000000 r5:c07b24ec
[ 2.407344] r4:00000000
[ 2.409908] [<c07b24ec>] (kernel_init) from [<c000fe30>]
(ret_from_fork+0x14/0x24)
[ 2.417507] r4:00000000 r3:00000000
The problem is taht adck_rate is 0 and there is no protection for
calculating adck_period:
if (adck_rate) {
/* calculate clk divider which is within specification */
divisor = ipg_rate / adck_rate;
adc_feature->clk_div = 1 << fls(divisor + 1);
} else {
/* fall-back value using a safe divisor */
adc_feature->clk_div = 8;
}
/*
* Determine the long sample time adder value to be used based
* on the default minimum sample time provided.
*/
adck_period = NSEC_PER_SEC / adck_rate;
What would be the correct fix here?
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: vf610_adc: Division by zero
2015-11-03 15:26 vf610_adc: Division by zero Fabio Estevam
@ 2015-11-03 16:01 ` Fabio Estevam
2015-11-04 3:49 ` Duan Andy
0 siblings, 1 reply; 3+ messages in thread
From: Fabio Estevam @ 2015-11-03 16:01 UTC (permalink / raw)
To: Duan Fugang-B38611; +Cc: Jonathan Cameron, linux-iio
On Tue, Nov 3, 2015 at 1:26 PM, Fabio Estevam <festevam@gmail.com> wrote:
> Hi Andy,
>
> Enabling vf610-adc in a imx6sx dts file causes the following error:
Ok, passing fsl,adck-max-frequency in the dtsi avoids the issue:
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -1152,6 +1152,8 @@
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6SX_CLK_IPG>;
clock-names = "adc";
+ fsl,adck-max-frequency = <30000000>, <40000000>,
+ <20000000>;
status = "disabled";
};
@@ -1161,6 +1163,8 @@
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6SX_CLK_IPG>;
clock-names = "adc";
+ fsl,adck-max-frequency = <30000000>, <40000000>,
+ <20000000>;
status = "disabled";
};
,but we still should better add some default frequencies in case
'adck-max-frequency' property is absent.
^ permalink raw reply [flat|nested] 3+ messages in thread
* RE: vf610_adc: Division by zero
2015-11-03 16:01 ` Fabio Estevam
@ 2015-11-04 3:49 ` Duan Andy
0 siblings, 0 replies; 3+ messages in thread
From: Duan Andy @ 2015-11-04 3:49 UTC (permalink / raw)
To: Fabio Estevam; +Cc: Jonathan Cameron, linux-iio
RnJvbTogRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29tPiBTZW50OiBXZWRuZXNkYXks
IE5vdmVtYmVyIDA0LCAyMDE1IDEyOjAxIEFNDQo+IFRvOiBEdWFuIEZ1Z2FuZy1CMzg2MTENCj4g
Q2M6IEpvbmF0aGFuIENhbWVyb247IGxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVj
dDogUmU6IHZmNjEwX2FkYzogRGl2aXNpb24gYnkgemVybw0KPiANCj4gT24gVHVlLCBOb3YgMywg
MjAxNSBhdCAxOjI2IFBNLCBGYWJpbyBFc3RldmFtIDxmZXN0ZXZhbUBnbWFpbC5jb20+IHdyb3Rl
Og0KPiA+IEhpIEFuZHksDQo+ID4NCj4gPiBFbmFibGluZyB2ZjYxMC1hZGMgaW4gYSBpbXg2c3gg
ZHRzIGZpbGUgY2F1c2VzIHRoZSBmb2xsb3dpbmcgZXJyb3I6DQo+IA0KPiBPaywgcGFzc2luZyBm
c2wsYWRjay1tYXgtZnJlcXVlbmN5IGluIHRoZSBkdHNpIGF2b2lkcyB0aGUgaXNzdWU6DQo+IA0K
PiAtLS0gYS9hcmNoL2FybS9ib290L2R0cy9pbXg2c3guZHRzaQ0KPiArKysgYi9hcmNoL2FybS9i
b290L2R0cy9pbXg2c3guZHRzaQ0KPiBAQCAtMTE1Miw2ICsxMTUyLDggQEANCj4gICAgICAgICAg
ICAgICAgICBpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTAwIElSUV9UWVBFX0xFVkVMX0hJR0g+Ow0K
PiAgICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmY2xrcyBJTVg2U1hfQ0xLX0lQRz47DQo+ICAg
ICAgICAgICAgICAgICAgY2xvY2stbmFtZXMgPSAiYWRjIjsNCj4gKyAgICAgICAgICAgICAgICBm
c2wsYWRjay1tYXgtZnJlcXVlbmN5ID0gPDMwMDAwMDAwPiwgPDQwMDAwMDAwPiwNCj4gKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDIwMDAwMDAwPjsNCj4gICAgICAgICAgICAgICAgICBz
dGF0dXMgPSAiZGlzYWJsZWQiOw0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgfTsNCj4gDQo+
IEBAIC0xMTYxLDYgKzExNjMsOCBAQA0KPiAgICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8
R0lDX1NQSSAxMDEgSVJRX1RZUEVfTEVWRUxfSElHSD47DQo+ICAgICAgICAgICAgICAgICAgY2xv
Y2tzID0gPCZjbGtzIElNWDZTWF9DTEtfSVBHPjsNCj4gICAgICAgICAgICAgICAgICBjbG9jay1u
YW1lcyA9ICJhZGMiOw0KPiArICAgICAgICAgICAgICAgIGZzbCxhZGNrLW1heC1mcmVxdWVuY3kg
PSA8MzAwMDAwMDA+LCA8NDAwMDAwMDA+LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8MjAwMDAwMDA+Ow0KPiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9ICJkaXNhYmxlZCI7DQo+
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ow0KPiANCj4gLGJ1dCB3ZSBzdGlsbCBzaG91bGQg
YmV0dGVyIGFkZCBzb21lIGRlZmF1bHQgZnJlcXVlbmNpZXMgaW4gY2FzZSAnYWRjay0NCj4gbWF4
LWZyZXF1ZW5jeScgcHJvcGVydHkgaXMgYWJzZW50Lg0KDQpZb3UgYXJlIHJpZ2h0LCBJIHdpbGwg
c3VibWl0IG9uZSBwYXRjaCBmb3IgdGhpcy4NCg0KUmVncmFkcy4NCg==
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-11-04 3:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-03 15:26 vf610_adc: Division by zero Fabio Estevam
2015-11-03 16:01 ` Fabio Estevam
2015-11-04 3:49 ` Duan Andy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.