about iicdev_writeto() on ralink soc
Mori Hiroki
yamori813 at yahoo.co.jp
Fri Oct 20 23:06:17 UTC 2017
Hi
----- Original Message -----
> From: Ian Lepore <ian at freebsd.org>
> To: Mori Hiroki <yamori813 at yahoo.co.jp>
> Cc: "freebsd-mips at freebsd.org" <freebsd-mips at freebsd.org>
> Date: 2017/10/21, Sat 00:00
> Subject: Re: about iicdev_writeto() on ralink soc
>
> On Fri, 2017-10-20 at 20:24 +0900, Mori Hiroki wrote:
>> Hi
>>
>> I make mips mediatek iic driver. Mediatek(Ralink) soc(RT2880 and
>> RT3050) is not support nostop option at I2C device. This soc i2c
>> device is set transfer length and automatically send stop. And
>> Always send device address at first byte.
>>
>> your added iicdev_writeto() not work in these soc i2c device.
>>
>>
>>
>> https://svnweb.freebsd.org/base?view=revision&revision=321583
>>
>>
>> Could you please change single transfer in iicdev_writeto() at
>> iiconf.c.
>>
>> Regards
>>
>> Hiroki Mori
>
Thanks check RT datasheet.
> iicdev_writeto() does the correct sequence of operations.
>
> I think if you set the ADDRDIS bit in the device control register and
> ignore the NOSTOP flag in the messages, it will work for most slave
> devices. Some slave devices require a repeat-start to work correctly,
> and those will never work right on a controller like this.
>
> -- Ian
>
No.
Ralink Datasheet is very confuse. ADDRDIR is register address disable.
DEVADDIS is device address disable.
If not set DEVADDIS and ADDRDIR then
<Device address> <Register address> <data> ...
If set ADDRDIR then
<Device address> <data> ...
If set DEVADDIS then ignore ADDRDIR
<Register address> <data> ...
always two more byte send this soc.
Driver review is this.
https://reviews.freebsd.org/D12736
Thanks
Hiroki Mori
More information about the freebsd-mips
mailing list