public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: Wolfram Sang <wsa-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
To: Simon Horman <horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
Cc: Yoshihiro Kaneko
	<ykaneko0929-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Magnus Damm <magnus.damm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH/RFC] i2c: rcar: Support ACK by HW auto restart after NACK
Date: Fri, 6 Mar 2015 23:18:09 +0100	[thread overview]
Message-ID: <20150306221809.GB6572@katana> (raw)
In-Reply-To: <20150304040635.GA12776-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 1942 bytes --]


> > >Even if R-Car I2C received NACK, after that it might receive ACK
> > >by HW auto restart. In case of that, driver would continue process.
> > >If R-Car I2C didn't receive ACK, the driver would detect timeout
> > >and would report NACK as -ENXIO.
> > >
> > >Signed-off-by: Ryo Kataoka <ryo.kataoka.wt-zM6kxYcvzFBBDgjK7y7TUQ@public.gmane.org>
> > >Signed-off-by: Yoshihiro Kaneko <ykaneko0929-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > 
> > Excuse me, but what exactly is HW auto restart in this case? Is it a feature
> > of the I2C slave?
> 
> I asked Kataoka-san about this and his response was as follows:
> 
>     It is a feature of the i2c-rcar(H/W) master.
> 
>     If system(CPU) is busy, NACK procedure may have interrupt latency.
>     Since the clear of ICMCR.ESG bit is delayed, i2c-rcar(H/W) may auto-restart
>     after NACK. Please refer to ESG bit of H/W UM section 55.3.5.
> 
>     For example, this is I2C write transmitting.
>     1.Start / 2.SlaveAddr,ACK / 3.RegAddr,ACK / 4.RegData,ACK / 5.Stop
> 
>     If No.2 has NACK and interruption has delay, this transmitting is as follows.
>     1.Start / 2.SlaveAddr,NACK/ 1x.auto-restart / 2x.SlaveAddr,ACK
>                                     / 3.RegAddr,ACK / 4.RegData,ACK / 5.Stop
> 
>     NACK of No.2 is invalidated by ACK of No.2x. It means recover.

Does this make some I2C device work which did not work before?

Most I2C devices always ack their address, so NACK very often means
"nothing is there". I think it makes sense that the rcar driver returns
ENXIO in this case which is documented to be used for NACK after address
phase. Then, the i2c client driver should know if this means "not there"
or "currently busy". And it should know when is a good time for another
try. As I read the patch, the driver would use the auto-restart feature
until the timeout is reached. That would make bus scanning pretty slow,
too.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  parent reply	other threads:[~2015-03-06 22:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-15 14:44 [PATCH/RFC] i2c: rcar: Support ACK by HW auto restart after NACK Yoshihiro Kaneko
     [not found] ` <1424011480-3551-1-git-send-email-ykaneko0929-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-02-23 13:08   ` Wolfram Sang
     [not found]     ` <2775fbb6b2e2b333ef2457133f419d4d-z923LK4zBo2bacvFa/9K2g@public.gmane.org>
2015-03-04  4:06       ` Simon Horman
     [not found]         ` <20150304040635.GA12776-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2015-03-06 22:18           ` Wolfram Sang [this message]
2015-03-27 13:11             ` Wolfram Sang
2015-03-27 22:04               ` Simon Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150306221809.GB6572@katana \
    --to=wsa-z923lk4zbo2bacvfa/9k2g@public.gmane.org \
    --cc=horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org \
    --cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=magnus.damm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=ykaneko0929-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox