From: Michal Simek <michal.simek@xilinx.com>
To: Guenter Roeck <linux@roeck-us.net>,
Michal Simek <michal.simek@xilinx.com>
Cc: "linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
mtitinger@baylibre.com, Kevin Hilman <khilman@baylibre.com>,
Lars-Peter Clausen <lars@metafoo.de>,
narmstrong@baylibre.com
Subject: Re: ina226 as IIO device instead of HWMON
Date: Mon, 12 Aug 2019 13:28:52 +0200 [thread overview]
Message-ID: <df2c9d5f-a4fa-52a9-1b26-3553a0f9e2df@xilinx.com> (raw)
In-Reply-To: <20190809145418.GA1096@roeck-us.net>
On 09. 08. 19 16:54, Guenter Roeck wrote:
> On Fri, Aug 09, 2019 at 03:42:00PM +0200, Michal Simek wrote:
>> On 09. 08. 19 15:02, Guenter Roeck wrote:
>>> Hi Michal,
>>>
>>> On 8/9/19 3:37 AM, Michal Simek wrote:
>>>> Hi,
>>>>
>>>> we are dealing with one issue with ina226 on xilinx platform when hwmon
>>>> driver is used. We have board for battery monitoring with shunt resistor
>>>> setup to 10 Ohm which is out of config value in hwmon driver. I have
>>>
>>> Took me a while to understand that you mean 10 Ohm, not mOhm.
>>
>> yes.
>>
>>> Well, yes, that is a bit large. I'd be open to accept a patch fixing that,
>>> though I don't immediately know how to update the devicetree property (and,
>>> unless I am missing something, the iio driver has the same problem).
>>
>> There is shunt-resistor property in uOhm that's why 10 Ohm is like this
>> shunt-resistor = <10000000>;
>>
>
> Yes, I know, but that applies to both hwmon and iio. What am I missing ?
> Is there some overflow condition in the hwmon driver ? If yes, that should
> be easy to fix.
For hwmon driver the issue is with ina2xx_set_shunt()
where passed val is 10000000 (10 Ohm)
unsigned int dividend = DIV_ROUND_CLOSEST(1000000000,
data->config->shunt_div);
/* 1000 000 000 / 400 = 2 500 000; */
if (val <= 0 || val > dividend)
return -EINVAL;
And on this condition you see that 10 000 000 is bigger then 2 500 000.
>
>>>
>>>> temporary code to workaround this but I have also found that ina226 is
>>>> supported via iio framework. I have seen that Baylibre was trying to add
>>>> generic iio support to sigrok.
>>>> http://wiki.baylibre.com/doku.php?id=acme:oldstart
>>>>
>>>> I expect you wanted to use sigrok also for ina226.
>>>>
>>>> Anyway my question is if there is any standard tool which is capable to
>>>> calculate and show information from iio ina226 chip which is can be used
>>>> instead of lm-sensors and hwmon driver.
>>>>
>>>> I would expect that iio-hwmon could be also used but didn't try that yet
>>>> with ina226 chip.
>>>>
>>>
>>> I don't immediately see why iio-hwmon couldn't be used. Also, if you don't
>>> use the ina226 as hardware monitoring device, iio would be a more
>>> appropriate
>>> solution anyway.
>>
>> I have tried this and found that IIO_POWER is not exported via iio-hwmon
>> driver.
>
> Probably IIO_POWER didn't exist when the iio-hwmon bridge was written.
> Patches welcome.
ok.
>
>> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>> /tree/drivers/hwmon/iio_hwmon.c?h=next-20190809#n104
>>
>> It is easy to add because ina226 iio export power via channel 2
>>
>> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/drivers/iio/adc/ina2xx-adc.c?h=next-20190809#n690
>>
>> Also dt description is easy to add. + iio-channels = <1>; to ina226 dt node.
>> iio-hwmon {
>> compatible = "iio-hwmon";
>> io-channels = <&ps_pmbus 1>, <&ps_pmbus 2>, <&ps_pmbus 3>;
>> };
>>
>>>
>>> FWIW, we should actually remove the in22xx hwmon driver at some point and
>>> ask users to use the iio driver combined with the iio-hwmon bridge instead
>>> (after making sure that the iio driver combined with the iio-hwmon bridge
>>> provides the same functionality).
>>
>> The functionality is likely the same but I would expect that with this
>> new driver we should get something more. Especially that sigrok
>> connection looks interesting.
>
> Sorry, which new driver, and what is "something more" ?
Based on what I have read IIO (new) driver is capable to run kernel
thread and in buffer mode is capturing data from the device which then
you can read back. That's why I would expect that there are user space
tools which are ready to use and capable to simply enable buffer mode
and capture that data for you.
Anyway I am able to see ina226 via iio_info.
iio:device1: ina226 (buffer capable)
9 channels found:
voltage0: (input, index: 0, format: le:U16/16>>0)
3 channel-specific attributes found:
attr 0: integration_time value: 0.001100
attr 1: raw value: 2611
attr 2: scale value: 0.002500000
voltage1: (input, index: 1, format: le:U16/16>>0)
3 channel-specific attributes found:
attr 0: integration_time value: 0.001100
attr 1: raw value: 678
attr 2: scale value: 1.250000000
power2: (input, index: 2, format: le:U16/16>>0)
2 channel-specific attributes found:
attr 0: raw value: 88
attr 1: scale value: 0.006250000
current3: (input, index: 3, format: le:U16/16>>0)
2 channel-specific attributes found:
attr 0: raw value: 2611
attr 1: scale value: 0.000250000
timestamp: (input, index: 4, format: le:S64/64>>0)
allow: (input)
1 channel-specific attributes found:
attr 0: async_readout value: 0
oversampling: (input)
1 channel-specific attributes found:
attr 0: ratio value: 4
sampling: (input)
1 channel-specific attributes found:
attr 0: frequency value: 114
shunt: (input)
1 channel-specific attributes found:
attr 0: resistor value: 10.000000000
2 device-specific attributes found:
attr 0: current_timestamp_clock value: realtime
attr 1: integration_time_available value: 0.000140 0.000204
0.000332 0.000588 0.001100 0.002116 0.004156 0.008244
2 buffer-specific attributes found:
attr 0: data_available value: 0
attr 1: watermark value: 1
1 debug attributes found:
debug attr 0: direct_reg_access value: 0x4327
but running iio_readdev ina226 locally is just returning error
root@zynqmp-debian:~# iio_readdev ina226
WARNING: High-speed mode not enabled
Unable to refill buffer: Connection timed out
But when I run iiod on target and
iio_readdev -n 192.168.0.208 ina226 | od -x
on host I am getting data.
It would be interesting to know if anybody really test ina2xx IIO driver
regularly.
It looks like sigrok support has never been finished too.
https://sourceforge.net/p/sigrok/mailman/message/35148318/#
Lars: Have you ever tried it? I am using zcu102 for experiments and you
should have it around too.
Thanks,
Michal
prev parent reply other threads:[~2019-08-12 11:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-09 10:37 ina226 as IIO device instead of HWMON Michal Simek
2019-08-09 13:02 ` Guenter Roeck
2019-08-09 13:42 ` Michal Simek
2019-08-09 14:54 ` Guenter Roeck
2019-08-12 11:28 ` Michal Simek [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=df2c9d5f-a4fa-52a9-1b26-3553a0f9e2df@xilinx.com \
--to=michal.simek@xilinx.com \
--cc=khilman@baylibre.com \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mtitinger@baylibre.com \
--cc=narmstrong@baylibre.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).