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