Re: Parallella board temperature sensing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 7 June 2015 at 00:55, Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
> On 06/06/2015 08:28 AM, Gergely Imreh wrote:
>>
>> On 6 June 2015 at 23:05, Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>>>
>>> On 06/06/2015 08:01 AM, Guenter Roeck wrote:
>>>>
>>>>
>>>> On 06/06/2015 07:51 AM, Gergely Imreh wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> I was checking out what would it take to support lm-sensors on the
>>>>> Parallella board[1]. It's an interesting little board with a dual core
>>>>> Xilinx ARM Cortex-A9, an FPGA, and a 16-core Epiphany co-processor.
>>>>> It's Xilinx XADC sensor used for temperature/voltage sensing does not
>>>>> seem to be anywhere on the lm-sensors supported device list. Currently
>>>>> users seem to monitor it through reading the device data directly from
>>>>> the /sys entries and doing the necessary scaling and conversion (as it
>>>>> was discussed on the Parallella forums, bash script included[2])
>>>>>
>>>>> In a nutshell, the data is accessible through
>>>>> /sys/bus/iio/devices/iio:device0/in_temp0_{raw,offset,scale} files.
>>>>> There are also 8 voltage readings there that could be extracted.
>>>>>
>>>>
>>>> If it is supported through iio, it should be possible use the iio->hwmon
>>>> bridge.
>>>>
>>>
>>> Here is an example devicetree entry, used to configure a max1139 as
>>> hwmon device.
>>>
>>>                  max1139: voltage-sensor@35 {
>>>                          compatible = "maxim,max1139";
>>>                          reg = <0x35>;
>>>                          vcc-supply = <&reg_3p3v>;
>>>                          vref-supply = <&reg_3p3v>;
>>>                          #io-channel-cells = <1>;
>>>                  };
>>>
>>> ...
>>>
>>>          max1139@35 {
>>>                  compatible = "iio-hwmon";
>>>
>>>                  io-channels = <&max1139 0>, <&max1139 1>, <&max1139 2>,
>>>                          <&max1139 3>, <&max1139 4>, <&max1139 5>,
>>>                          <&max1139 6>, <&max1139 7>, <&max1139 8>,
>>>                          <&max1139 9>, <&max1139 10>, <&max1139 11>;
>>>          };
>>>
>>> Guenter
>>>
>>
>> So if I get it right, all the support can be enabled through iio-hwmon
>> by modifying the Parallella device tree?
>>
>> If so, the relevant entry is I think this (from the repo[1])
>>
>> xadc@f8007100 {
>>      compatible = "xlnx,zynq-xadc-1.00.a", "xlnx,ps7-xadc-1.00.a";
>>      reg = <0xf8007100 0x20>;
>>      interrupts = <0 7 4>;
>>      interrupt-parent = <&gic>;
>>      clocks = <&clkc 12>;
>> };
>>
>> I guess in the above example "voltage-sensor" is just a descriptive
>> label, can be anything else too, right?
>>
> Yes.
>
>> Looking at the iio-hwmon binding docs[2], would a version like this be
>> usable?
>>
>> adc: xadc@f8007100 {
>>      compatible = "xlnx,zynq-xadc-1.00.a", "xlnx,ps7-xadc-1.00.a";
>>      reg = <0xf8007100 0x20>;
>>      interrupts = <0 7 4>;
>>      interrupt-parent = <&gic>;
>>      clocks = <&clkc 12>;
>>      #io-channel-cells = <1>;
>> };
>>
>> iio_hwmon {
>>      compatible = "iio-hwmon";
>>      io-channels = <&adc 0>, <&adc 1>, <&adc 2>,
>>                           <&adc 3>, <&adc 4>, <&adc 5>,
>>                           <&adc 6>, <&adc 7>, <&adc 8>,
>>                           <&adc 9>; <&adc 10>; <&adc 11>;
>>                           <&adc 12>; <&adc 13>; <&adc 14>;
>>                           <&adc 15>; <&adc 16>; <&adc 17>;
>>                           <&adc 18>;
>> };
>
>
> Something like that, correct.
>
>>
>> How would this be able to tell which adc channels belong to what? (eg.
>> 0-1-2 are needed for the temperature sensing, the rest are voltage
>> sensors in pairs, raw and scale values)
>>
>
> iio-hwmon checks the sensor type and instantiates it accordingly.
>

I've added a modified version and works like a charm! Took a bit of
trial and error, and had to update the iio driver for the relevant
Xilinx ADC (voltage channels returned offset even when there was
none), but now sensors can read both the temperature and the 8 voltage
channels!

Thanks a lor for the help!

If interested, here's the pull request I've sent to Parallella:
https://github.com/parallella/parallella-linux/pull/6 and the forum
post discussing this:
https://parallella.org/forums/viewtopic.php?f=48&t=2512&sid=d0e7173edac3777fbea4906d8c640c08
Any other feedback is appreciated.

Cheers,
   Greg

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux