Would you mind trying another patch for me? I believe this one is more
correct since I've changed it to only probe our I2C bus rather than
every one. (Remove the first patch before trying this).
Chris Baumgartner wrote:
The patch took care of it. These messages are no longer generated.
Thanks,
--Chris
Bryan Mayland wrote:
Try this patch out. The problem is that when we probe for the cx25840,
we ask the adapter if it can do SMBus byte transfers and that I801
adapter can indeed do SMBus byte transfers. However, when we actually
go to use the bus, we expect a direct I2C level transfer, which it does
not, so we error out.
I modified the code to check the adapter for the proper I2C-level
transfer on probe, but the problem is that the i2c-algo-bit doesn't
correctly report that it supports it until kernel 2.6.11(although it has
all along). So this is kinda a hack, but it should work better.
Chris (Kennedy), should we consider revising our code to use SMBus
functions? cx25840_write/read will be easy, but the audio firmware
upload will have to be "chunkified" since a SMBus block transfer can
only do 16 bytes at a time. Thoughts?
Chris Baumgartner wrote:
i2c_adapter i2c-1: I2C level transfers not supported
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
ivtv-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ivtv-devel
Index: driver/cx25840-driver.c
===================================================================
--- driver/cx25840-driver.c (revision 313)
+++ driver/cx25840-driver.c (working copy)
@@ -1073,9 +1073,11 @@
static int cx25840_attach_adapter(struct i2c_adapter *adapter)
{
- DEBUG(1, "starting probe for adapter %s (0x%x)", adapter->name,
- adapter->id);
- return i2c_probe(adapter, &addr_data, &cx25840_detect_client);
+ if (adapter->id == (I2C_ALGO_BIT | I2C_HW_B_BT848)) {
+ DEBUG(1, "starting probe for adapter %s (0x%x)", adapter->name,
+ adapter->id);
+ return i2c_probe(adapter, &addr_data, &cx25840_detect_client);
+ }
return 0;
}