All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Benoît Monin" <benoit.monin@bootlin.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "Andi Shyti" <andi.shyti@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Jarkko Nikula" <jarkko.nikula@linux.intel.com>,
	"Mika Westerberg" <mika.westerberg@linux.intel.com>,
	"Jan Dabros" <jsd@semihalf.com>,
	"Sebastian Andrzej Siewior" <bigeasy@linutronix.de>,
	"Clark Williams" <clrkwllms@kernel.org>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Gregory CLEMENT" <gregory.clement@bootlin.com>,
	"Théo Lebrun" <theo.lebrun@bootlin.com>,
	"Tawfik Bayouk" <tawfik.bayouk@mobileye.com>,
	"Vladimir Kondratiev" <vladimir.kondratiev@mobileye.com>,
	"Dmitry Guzman" <dmitry.guzman@mobileye.com>,
	linux-i2c@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-rt-devel@lists.linux.dev
Subject: Re: [PATCH v3 7/7] i2c: designware: Support of controller with IC_EMPTYFIFO_HOLD_MASTER disabled
Date: Tue, 25 Nov 2025 11:45:35 +0100	[thread overview]
Message-ID: <3583116.sQuhbGJ8Bu@benoit.monin> (raw)
In-Reply-To: <aR4lVB8FRzHLcXJT@smile.fi.intel.com>

Hi Andy,

Thanks for the reviews.
(ack on other comments)

On Wednesday, 19 November 2025 at 21:15:16 CET, Andy Shevchenko wrote:
> On Wed, Nov 19, 2025 at 04:05:36PM +0100, Benoît Monin wrote:
[...]

> > i2c_dw_msg_is_valid(struct dw_i2c_dev *dev, const struct i2c_msg *msgs, size_t i
> 
> > +	/*
> > +	 * Make sure we don't need explicit RESTART between two messages
> > +	 * in the same direction for controllers that cannot emit them.
> > +	 */
> > +	if (dev->flags & NO_EMPTYFIFO_HOLD_MASTER &&
> > +	    (msgs[idx - 1].flags & I2C_M_RD) == (msgs[idx].flags & I2C_M_RD)) {
> > +		dev_err(dev->dev, "cannot emit RESTART\n");
> > +		return false;
> > +	}
> 
> Ah, Now I see the point of checking the idx first, but can we rather call it
> with idx >= 1 to begin with?
> 
We would still have to check it when calling i2c_dw_msg_is_valid(), as the
first message after a STOP don't have any limitation. It is not just for
protecting against an out-of-bound access to msgs. The validity of a
message is in relation to the previous message in the same transaction.

I will change the comment to make this clearer.

> >  	return true;
> >  }
[...]

> >  	{ .compatible = "baikal,bt1-sys-i2c", .data = (void *)MODEL_BAIKAL_BT1 },
> > +	{ .compatible = "mobileye,eyeq6lplus-i2c", .data = (void *)NO_EMPTYFIFO_HOLD_MASTER },
> 
> Are you expecting more with this? I would rather use a compatible matching
> instead of the flag,
> 
The IC_EMPTYFIFO_HOLD_MASTER_EN parameter is part of the DesignWare IP, it
is not specific to Mobileye. Given that typical i2c accesses (single read,
single write, write-then-read) work on non-PREMPT_RT without this patch, I
suspect there are other controllers that lack the ability to hold the clock
when the FIFO is empty that could benefit from this flag.

> >  	{ .compatible = "mscc,ocelot-i2c", .data = (void *)MODEL_MSCC_OCELOT },
> >  	{ .compatible = "snps,designware-i2c" },
> 
> 

Best regards,
-- 
Benoît Monin, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com




  reply	other threads:[~2025-11-25 10:45 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-19 15:05 [PATCH v3 0/7] i2c: designware: Improve support of multi-messages transfer Benoît Monin
2025-11-19 15:05 ` [PATCH v3 1/7] dt-bindings: i2c: dw: Add Mobileye I2C controllers Benoît Monin
2025-11-20  7:55   ` Krzysztof Kozlowski
2025-11-19 15:05 ` [PATCH v3 2/7] i2c: designware: Optimize flag reading in i2c_dw_read() Benoît Monin
2025-11-19 20:05   ` Andy Shevchenko
2025-11-19 15:05 ` [PATCH v3 3/7] i2c: designware: Sort compatible strings in alphabetical order Benoît Monin
2025-11-19 15:05 ` [PATCH v3 4/7] i2c: designware: Use runtime PM macro for auto-cleanup Benoît Monin
2025-11-19 18:46   ` Andy Shevchenko
2025-11-20 10:34   ` Mika Westerberg
2025-11-19 15:05 ` [PATCH v3 5/7] i2c: designware: Add dedicated algorithm for AMD NAVI Benoît Monin
2025-11-19 20:04   ` Andy Shevchenko
2025-11-19 15:05 ` [PATCH v3 6/7] i2c: designware: Implement I2C_M_STOP support Benoît Monin
2025-11-19 20:03   ` Andy Shevchenko
2025-11-19 15:05 ` [PATCH v3 7/7] i2c: designware: Support of controller with IC_EMPTYFIFO_HOLD_MASTER disabled Benoît Monin
2025-11-19 20:15   ` Andy Shevchenko
2025-11-25 10:45     ` Benoît Monin [this message]
2025-11-25 11:12       ` Andy Shevchenko

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=3583116.sQuhbGJ8Bu@benoit.monin \
    --to=benoit.monin@bootlin.com \
    --cc=andi.shyti@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=clrkwllms@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.guzman@mobileye.com \
    --cc=gregory.clement@bootlin.com \
    --cc=jarkko.nikula@linux.intel.com \
    --cc=jsd@semihalf.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-devel@lists.linux.dev \
    --cc=mika.westerberg@linux.intel.com \
    --cc=robh@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=tawfik.bayouk@mobileye.com \
    --cc=theo.lebrun@bootlin.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=vladimir.kondratiev@mobileye.com \
    /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.