On 09/06/2014 09:09 AM, Akihiro TSUKADA wrote:
3. Should I also use RegMap API for register access?
I tried using it but gave up,
because it does not fit well to one of my use-case,
where (only) reads must be done via 0xfb register, like
READ(reg, buf, len) -> [addr/w, 0xfb, reg], [addr/r, buf[0]...],
WRITE(reg, buf, len) -> [addr/w, reg, buf[0]...],
and regmap looked to me overkill for 8bit-reg, 8bit-val cases
and did not simplify the code.
so I'd like to go without RegMap if possible,
since I'm already puzzled enough by I2C binding, regmap, clock source,
as well as dvb-core, PCI ;)
That is MaxLinear MxL301RF tuner I2C. Problem is there that it uses
write + STOP + write, so you should not even do that as a one I2C
i2c_transfer. All I2C messages send using i2c_transfer are send so
called REPEATED START condition.
I ran that same problem ears ago in a case of, surprise, MxL5007 tuner.
https://patchwork.linuxtv.org/patch/17847/
I think you could just write wanted register to command register 0xfb.
And after that all the reads are coming from that active register until
you change it.
RegMap API cannot handle I2C command format like that, it relies
repeated start for reads.
Si2157 / Si2168 are using I2C access with STOP condition - but it is
otherwise bad example as there is firmware API, not register API. Look
still as a example.
regards
Antti
--
http://palosaari.fi/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html