Re: SMBus quick command problem

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

 



> I don't get where you're going with rewriting the driver. You'll end up
> with a larger driver doing exactly the same, without taking benefit of
> the SMBus emulation layer from i2c-core. If the hardware has a problem
> with Quick commands, rewriting the driver won't solve that. Better
> intercept that case in the current driver and return an error.

Hmm, maybe you are right. I'm a beginner in kernel hacking and I tried to
rewrite this driver mainly to learn linux-driver programming.

> So what problem are
> you trying to solve exactly?

Well, when I modprobe the original ocore driver, an i2c slave driver already
present under the kernel probe the bus with write-quick command. This command
block the controller :
http://dl.free.fr/qS2l40o9p
(yellow:SDA, green:SCL, pink: interrupt)

This problem is normal if I read the
datasheet(http://www.opencores.org/cvsweb.shtml/i2c/doc/i2c_specs.pdf), because
to send only one byte (address byte) the stop command must be send at the same
time that start command.

The driver is marked as SMBus emulation compatible :
static u32 ocores_func(struct i2c_adapter *adap)
{
	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
}

But apparently it does not support all SMBus commands, and I can't use
i2cdetect to scan the bus.

With my new version of the driver, really bigger than original, SMBus commands
are supported one by one and I can use i2cdetect to scan the bus:
static u32 ocores_func(struct i2c_adapter *adap)
{
	return  I2C_FUNC_SMBUS_BYTE_DATA|
		I2C_FUNC_SMBUS_WORD_DATA|
		I2C_FUNC_SMBUS_BYTE|
		I2C_FUNC_SMBUS_QUICK|
		I2C_FUNC_SMBUS_WRITE_I2C_BLOCK|
		I2C_FUNC_SMBUS_READ_I2C_BLOCK;
}

But maybe it's a bad idea to re-write the driver, I will investigate
to find another solution.

Fabien M
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux