Re: i2c device w/o registers

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

 



Thanks Jean.  The user-space method worked great.

For kernel space access, is there an easy way to get a reference to the i2c 
client (struct i2c_client *client) to pass to i2c_master_recv(), since I can't 
do open() via a kernel module?  I've searched all around, but can't find such an 
example.  I think my system would be cleaner as a kernel module (my I2C devices 
are ADCs, so I'd use a different analog driver over i2c for different chips in 
my system, and they'd all publish common analog read commands...).

Thanks,

Randy



----- Original Message ----
From: Jean Delvare <khali@xxxxxxxxxxxx>
To: Randy <singularity_2@xxxxxxxxx>
Cc: lm-sensors@xxxxxxxxxxxxxx
Sent: Mon, June 6, 2011 11:48:12 PM
Subject: Re:  i2c device w/o registers

Hi Randy,

On Mon, 6 Jun 2011 17:25:10 -0700 (PDT), Randy wrote:
> I have an ADC (MCP3424) that doesn't use registers/commands. 
> 
> To configure the device, you simply write the configuration to the appropriate 

> I2C device address.
> 
> To read the sensor data, you simply issue a read to the device, which will 
> return the ADC sample and the current control register (3 or 4 bytes total, 
> depending on mode).
> 
> All the commands in i2c-tools and the i2c drivers, except for the read/write 
> byte commands, want to take an additional register parameter.  This extra param 
>
> going over the wire messes up the chip.
> 
> Is there any simple way to support devices that don't support registers?  I 
> searched the archive, and found some requests for a i2c_smbus_read_word() 
> command, but that's about it.

This question would have better been asked on the linux-i2c list,
methinks.

Anyway, the I2C commands you need aren't part of the SMBus command
subset, so you have to use raw I2C messaging. The functions you need
are i2c_master_send() and i2c_master_recv() in kernel space. In
user space, you'd simply call read() and write() on the device node. I
don't think there's any example of this in i2c-tools, but the i2c-dev
driver supports it.

-- 
Jean Delvare


_______________________________________________
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