On 03/28/2018 03:37 PM, Akihiro TSUKADA wrote:
Hi,
thanks for the comment.
You should implement i2c adapter to demod driver and not add such glue
to that USB-bridge. I mean that "relayed" stuff, i2c communication to
tuner via demod. I2C-mux may not work I think as there is no gate-style
multiplexing so you probably need plain i2c adapter. There is few
examples already on some demod drivers.
I am afraid that the glue is actually necessary.
host - USB -> gl861 - I2C(1) -> tc90522 (addr:X)
\- I2C(2) -> tua6034 (addr:Y)
To send an i2c read message to tua6034,
one has to issue two transactions:
1. write via I2C(1) to addr:X, [ reg:0xfe, val: Y ]
2. read via I2C(1) from addr:X, [ out_data0, out_data1, ....]
The problem is that the transaction 1 is (somehow) implemented with
the different USB request than the other i2c transactions on I2C(1).
(this is confirmed by a packet capture on Windows box).
Although tc90522 already creats the i2c adapter for I2C(2),
tc90522 cannot know/control the USB implementation of I2C(1),
only the bridge driver can do this.
I simply cannot see why it cannot work. Just add i2c adapter and
suitable logic there. Transaction on your example is simply and there is
no problem to implement that kind of logic to demod i2c adapter.
If gl861 driver i2c adapter logic is broken it can be fixed easily too.
It seems to support only i2c writes with len 1 and 2 bytes, but fixing
it should be easy if you has some sniffs.
Antti
--
http://palosaari.fi/