On Fri, Feb 28, 2014 at 09:32:12PM +0100, Belisko Marek wrote: > On Fri, Feb 28, 2014 at 3:05 AM, Sebastian Reichel <s...@debian.org> wrote: > > On Thu, Feb 27, 2014 at 10:34:35PM +0100, Belisko Marek wrote: > >> Well I've tried and it's worse :). I got during booting: > >> [ 2.218383] ERROR: could not get IIO channel /battery:temp(0) > >> [ 2.224639] platform battery.4: Driver twl4030_madc_battery > >> requests probe deferral > >> Not sure if it's just error or warning but temp is always reported as > >> 0 (and also other values in sysfs). > > > > This is an error, which basically means, that twl4030-madc has not > > yet been loaded. Do you get proper values when you use the old madc > > API with the patchset applied? > > It works without converting to iio consumer (at least I get some > reasonable values). With conversion it fails with above error. I > recheck (add printk to iio twl4030-madc) that madc driver is > loaded. Could this be that twl4030_madc_battery is loaded earlier > then twl4030_madc and than it fails to get iio channels?
The error above implies, that twl4030-madc has not been loaded when twl4030-madc-battery was loaded. This iio_channel_get() fails and returns -EPROBE_DEFER. This results in twl4030-madc-battery probe function returning -EPROBE_DEFER. Thus you can simply ignore the error if the twl4030-madc-battery driver is loaded later. I guess the easiest way to debug the problem is adding some dev_dbg() at the start of twl4030_madc_conversion(), which prints out the entries of twl4030_madc_request. Currently the IIO API simply calls twl4030_madc_request(), so you should be able to find out the difference. Also: Can you post you DTS? I use the following for Nokia N900: / { battery: n900-battery { compatible = "nokia,n900-battery"; io-channels = <&twl_madc 0>, <&twl_madc 4>, <&twl_madc 12>; io-channel-names = "temp", "bsi", "vbat"; }; }; &twl { twl_madc: madc { compatible = "ti,twl4030-madc"; interrupts = <3>; #io-channel-cells = <1>; }; }; -- Sebastian
signature.asc
Description: Digital signature