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 = <®_3p3v>; >>> vref-supply = <®_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