All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dinh Nguyen <dinguyen@kernel.org>
To: Wolfram Sang <wsa@kernel.org>,
	jarkko.nikula@linux.intel.com, andriy.shevchenko@linux.intel.com,
	mika.westerberg@linux.intel.com, robh+dt@kernel.org,
	krzk+dt@kernel.org, linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCHv6 1/2] i2c: designware: introduce a custom scl recovery for SoCFPGA platforms
Date: Wed, 22 Jun 2022 08:45:12 -0500	[thread overview]
Message-ID: <928b2996-b2e7-d847-0e20-7e19df3cbf03@kernel.org> (raw)
In-Reply-To: <YrI6EeVkkWVMNPFY@shikoro>



On 6/21/22 16:37, Wolfram Sang wrote:
> On Mon, Jun 20, 2022 at 06:01:08PM -0500, Dinh Nguyen wrote:
>> The I2C pins on the SoCFPGA platforms do not go through a GPIO module,
>> thus cannot be recovered by the default method of by doing a GPIO access.
>> Only a reset of the I2C IP block can a recovery be successful, so this
>> change effectively resets the I2C controller, NOT any attached clients.
> 
> I am afraid here is a serious misunderstanding. The I2C bus recovery
> procedure is a documented mechanism how to get a stalled bus back in the
> case that a client device holds SDA low. This mechanism consists of 9
> SCL pulses. A reset of the IP core is *not a recovery*. If SocFPGA
> cannot togle SCL in some way, it cannot do recovery and
> adap->bus_recovery_info should be NULL. Or did I miss something?

 From the original code, the first mechanism to a recovery is to acquire 
a GPIO for the SCL line and send the 9 SCL pulses, after that, it does a 
reset of the I2C module. For the SOCFPGA part, there is no GPIO line for 
the SCL, thus the I2C module cannot even get a reset. This code allows 
the function to reset the I2C module for SOCFPGA, which is the 2nd part 
of the recovery process.

> 
>> +static int i2c_socfpga_scl_recovery(struct i2c_adapter *adap)
>> +{
>> +	struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
>> +
>> +	bri->prepare_recovery(adap);
>> +	bri->unprepare_recovery(adap);
>> +
>> +	return 0;
>> +}
> 
> See, this function is named scl_recovery, but there is no SCL involved.
> This is why I think there is the misunderstanding here.
> 

I understand your point here. Perhaps just call it i2c_socfpga_recovery()?

Dinh

  reply	other threads:[~2022-06-22 13:45 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-20 23:01 [PATCHv6 1/2] i2c: designware: introduce a custom scl recovery for SoCFPGA platforms Dinh Nguyen
2022-06-20 23:01 ` [PATCHv6 2/2] dt-bindings: i2c: dw: Add Intel's SoCFPGA I2C controller Dinh Nguyen
2022-06-21 14:14 ` [PATCHv6 1/2] i2c: designware: introduce a custom scl recovery for SoCFPGA platforms Jarkko Nikula
2022-06-21 21:37 ` Wolfram Sang
2022-06-22 13:45   ` Dinh Nguyen [this message]
2022-06-22 20:07     ` Wolfram Sang
2022-07-12 12:41       ` Dinh Nguyen
2022-07-12 12:52         ` Dinh Nguyen
2022-07-12 13:29         ` Wolfram Sang

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=928b2996-b2e7-d847-0e20-7e19df3cbf03@kernel.org \
    --to=dinguyen@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=jarkko.nikula@linux.intel.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=robh+dt@kernel.org \
    --cc=wsa@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.