On Wed, Aug 01, 2012 at 11:59:40AM -0400, John Rippetoe wrote:
I am attempting to setup lm-sensors on an embedded platform, more
specifically the Micromint Electrum 100. I'm experiencing an issue
with the output of the sensors program where the output is obviously
bogus, especially given that all the values are identical. Some
basic details about the system:
- 6.04 Debian squeeze
- Atmel AT91SAM9G20 cpu (armv5)
- ADC128S052 SPI ADC
- atmel_spi driver built in to pre-compiled kernel
- hwmon, and adcxx loaded as modules later
The adcxx kernel module successfully loads and binds to the device.
Reading the sysfs files it creates for each input, the same value of
52799 is seen on each. I know the device works because I have
tested it with some userland example code provided by the
manufacturer and get expected values for various inputs.
I initially had an issue with getting the adcxx module to bind with
the device, but found that the problem was because of an alias
problem. In ./arch/arm/mach-at91/board-electrum-100.c the ADC was
declared with an alias as shown in the code segment below:
/static struct spi_board_info ek_spi_devices[] = {
/ .....
/ { /* ADC128S052 analog inputs */
/ .modalias = "adc128s052",
/ .chip_select = 2,
/ .max_speed_hz = 8 * 1000 * 1000,
/ .bus_num = 1,
/ },
/ .....
./arch/arm/mach-at91/board-electrum-100.c is not in mainline, so this is a bit
difficult. Given the above, it may even be that there is a separate driver for
the chip somewhere in your tree (ok, I think I found the patch, there isn't,
but that means this never worked).
Other than that, there could be many things wrong. Chip select, bus number,
clock speed, chip access mode. There is no example for a working instantiation
in the upstream kernel, so I have no idea what the valid parameters might be.
You mentioned user mode access worked - maybe you can compare it with the kernel
settings.
Guenter
Rather than change the alias in board-electrum-100.c and have to
recompile and install a new kernel, I opted to add the alias as
shown above to adcxx_ids[] in adcxx.c
/static const struct spi_device_id adcxx_ids[] = {
/ { "adcxx1s", 1 },
/ { "adcxx2s", 2 },
/ { "adcxx4s", 4 },
/ { "adcxx8s", 8 },
/ { "adc128s052", 8}, <-- added here
/ { },
/};
With that done, sensors starting giving me output, just not anything
worth reading. At this point I'm a little baffled as to what is
causing this and crawling the internet has turned up nothing. Here
is my output for sensors:
electrum100:~# sensors
adcxx8s-spi-1-2
Adapter: SPI adapter
in0: +52.80 V
in1: +52.80 V
in2: +52.80 V
in3: +52.80 V
in4: +52.80 V
in5: +52.80 V
in6: +52.80 V
in7: +52.80 V
Any help would be greatly appreciated. Thank you.
- John
_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors