All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tarang Raval <tarang.raval@siliconsignals.io>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Mehdi Djait" <mehdi.djait@linux.intel.com>,
	"Alim Akhtar" <alim.akhtar@samsung.com>,
	"André Apitzsch" <git@apitzsch.eu>,
	"Andrzej Hajda" <andrzej.hajda@intel.com>,
	"Arec Kao" <arec.kao@intel.com>,
	"Benjamin Mugnier" <benjamin.mugnier@foss.st.com>,
	"Bingbu Cao" <bingbu.cao@intel.com>,
	"Bjorn Andersson" <andersson@kernel.org>,
	"Bryan O'Donoghue" <bod@kernel.org>,
	"Bryan O'Donoghue" <bryan.odonoghue@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Daniel Scally" <djrscally@gmail.com>,
	"Dongcheng Yan" <dongcheng.yan@intel.com>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Hans de Goede" <hansg@kernel.org>,
	"Hans Verkuil" <hverkuil@kernel.org>,
	"Hao Yao" <hao.yao@intel.com>,
	"Heimir Thor Sverrisson" <heimir.sverrisson@gmail.com>,
	"Jacopo Mondi" <jacopo@jmondi.org>,
	"Jimmy Su" <jimmy.su@intel.com>,
	"Jingjing Xiong" <jingjing.xiong@intel.com>,
	"Jonas Karlman" <jonas@kwiboo.se>,
	"Konrad Dybcio" <konradybcio@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Lad Prabhakar" <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	"Leon Luo" <leonl@leopardimaging.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Mark Brown" <broonie@kernel.org>,
	"Matthew Majewski" <mattwmajewski@gmail.com>,
	"Matthias Fend" <matthias.fend@emfend.at>,
	"Mikhail Rudenko" <mike.rudenko@gmail.com>,
	"Nicolas Dufresne" <nicolas.dufresne@collabora.com>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
	"Pavel Machek" <pavel@kernel.org>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Ricardo Ribalda" <ribalda@chromium.org>,
	"Rob Herring" <robh@kernel.org>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Shunqian Zheng" <zhengsq@rock-chips.com>,
	"Sylvain Petinot" <sylvain.petinot@foss.st.com>,
	"Sylwester Nawrocki" <s.nawrocki@samsung.com>,
	"Tianshu Qiu" <tian.shu.qiu@intel.com>,
	"Todor Tomov" <todor.too@gmail.com>,
	"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
	"Tony Lindgren" <tony@atomide.com>,
	"Zhi Mao" <zhi.mao@mediatek.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"imx@lists.linux.dev" <imx@lists.linux.dev>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>
Subject: Re: [PATCH 00/72] media: i2c: Reduce cargo-cult
Date: Fri, 25 Jul 2025 14:00:24 +0300	[thread overview]
Message-ID: <20250725110024.GA30386@pendragon.ideasonboard.com> (raw)
In-Reply-To: <PN3P287MB1829C2D2D0577D4DA82D6AF58B59A@PN3P287MB1829.INDP287.PROD.OUTLOOK.COM>

On Fri, Jul 25, 2025 at 10:35:28AM +0000, Tarang Raval wrote:
> > On Fri, Jul 25, 2025 at 07:00:40AM +0000, Tarang Raval wrote:
> > > > On Thu, Jul 24, 2025 at 02:20:10PM +0000, Tarang Raval wrote:
> > > > > > > > > 2. In the regulator code, you can reduce boilerplate by using
> > > > > > > > >    devm_regulator_bulk_get_enable().
> > > > > > > >
> > > > > > > > devm_regulator_bulk_get_enable() doesn't seem to be a good idea. You
> > > > > > > > generally don't want to enable power everywhere unconditionally, and
> > > > > > > > sensors very often need a guaranteed power up sequence.
> > >
> > > -----(1)
> > >
> > > > > > >
> > > > > > > The regulators are optional, we supply power to the camera sensor directly
> > > > > > > through dedicated power rails and there is no strict enable sequence
> > > > > > > required in this case.
> > > > > >
> > > > > > What exactly do you mean by "this case" ? Are you talking about one
> > > > > > particular sensor ? One particular camera module ?
> > > > >
> > > > > Laurent, by “this case” I meant the common scenario where power to the
> > > > > camera sensor is supplied by a PMIC regulator that is always-on. In such
> > > > > setups, the regulator is fixed and cannot be enabled or disabled from the
> > > > > driver, the sensor is always powered.
> > > > >
> > > > > This is what I’ve seen in most platforms, where the CSI input connector
> > > > > provides fixed 3.3V/1.8V power rails directly to the camera module.
> > > > >
> > > > > Of course, if the camera supply comes from a dedicated regulator controlled
> > > > > via a GPIO, then the driver would need to handle enable/disable sequencing
> > > > > explicitly. But I’m specifically referring to the first case, where the power rails
> > > > > are always-on.
> > > >
> > > > How does the sensor driver know which of those two cases it is dealing
> > > > with ?
> > >
> > > The sensor driver typically determines this via the presence (or absence)
> > > of regulator supply entries in the Device Tree. If a supply is not defined,
> > > it's assumed to be always-on (e.g., provided by the board via fixed rails).
> > 
> > Do we have sensor drivers that check the presense of supply properties ?
> > Drivers generally shouldn't.
> > 
> > > When defined, the driver retrieves and manages the regulator. This approach
> > > allows a single driver to support both cases, by treating supplies as optional
> > > and only enabling them when explicitly defined.
> > 
> > I don't see what you're trying to do here. A sensor always needs
> > supplies, regardless of whether or not they're always on. Drivers should
> > get the supplies with regulator_get() (or possibly the bulk API), and
> > then implement the power enable/disable sequences that the sensor
> > requires. If all suplies are manually controllable, this will produce
> > the correct sequence. If the supplies are always on, it will be a no-op.
> > That's a single implementation in the driver, you don't need to care
> > about the nature of the supplies, or their presence in DT.
> > 
> > > At comment (1): you gave two reasons why we cannot use devm_regulator_bulk_get_enable.
> > >
> > > What I’m trying to say is:
> > >
> > > You mentioned "generally don't want to enable power everywhere unconditionally,"
> > > but on almost every platform, the power rails are always-on.
> > 
> > "almost every platform" doesn't sound right to me. It does happen though.
> > 
> > > And regarding the second point — "sensors very often need a guaranteed power-up sequence"
> > > I don’t understand why this would be an issue. Even if we use devm_regulator_bulk_get_enable,
> > > the power-up sequence remains the same. So how is it not a good option in this case?
> > 
> > Because the bulk API enables all regulators in parallel, it doesn't
> > guarantee sequencing.
> 
> Except for a few drivers, almost all camera drivers use the bulk API, which suggests
> that a guaranteed power-up sequence may not be strictly required in most cases.
>  
> > Don't use devm_regulator_bulk_get_enable() in sensor drivers, implement
> > power enable/disable functions that do the right thing. That's the code
> > pattern I want to see.
> 
> Perhaps I wasnt clear in my explanation. If you look at the patch below, you'll 
> see that we are not changing any sequencing behavior.

You end up getting regulators every time power is enabled, and you don't
turn the supplies off at power off time. How is that even supposed to
work ? It completely breaks power management.

> I am not suggesting we use this API everywhere, only where it's appropriate and 
> doesn't compromise sequencing requirements. 
> 
> Best Regards,
> Tarang
> 
> ------
> 
> diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
> index da618c8cbadc..4dbf7215cef4 100644
> --- a/drivers/media/i2c/imx283.c
> +++ b/drivers/media/i2c/imx283.c
> @@ -1176,8 +1176,8 @@ static int imx283_power_on(struct device *dev)
>         struct imx283 *imx283 = to_imx283(sd);
>         int ret;
>  
> -       ret = regulator_bulk_enable(ARRAY_SIZE(imx283_supply_name),
> -                                   imx283->supplies);
> +       ret = devm_regulator_bulk_get_enable(dev, ARRAY_SIZE(imx283_supply_name),
> +                                   imx283_supply_name);
>         if (ret) {
>                 dev_err(imx283->dev, "failed to enable regulators\n");
>                 return ret;
> @@ -1186,7 +1186,7 @@ static int imx283_power_on(struct device *dev)
>         ret = clk_prepare_enable(imx283->xclk);
>         if (ret) {
>                 dev_err(imx283->dev, "failed to enable clock\n");
> -               goto reg_off;
> +               return ret;
>         }
>  
>         gpiod_set_value_cansleep(imx283->reset_gpio, 0);
> @@ -1195,10 +1195,6 @@ static int imx283_power_on(struct device *dev)
>                      IMX283_XCLR_MIN_DELAY_US + IMX283_XCLR_DELAY_RANGE_US);
>  
>         return 0;
> -
> -reg_off:
> -       regulator_bulk_disable(ARRAY_SIZE(imx283_supply_name), imx283->supplies);
> -       return ret;
>  }
>  
>  static int imx283_power_off(struct device *dev)
> @@ -1207,24 +1203,11 @@ static int imx283_power_off(struct device *dev)
>         struct imx283 *imx283 = to_imx283(sd);
>  
>         gpiod_set_value_cansleep(imx283->reset_gpio, 1);
> -       regulator_bulk_disable(ARRAY_SIZE(imx283_supply_name), imx283->supplies);
>         clk_disable_unprepare(imx283->xclk);
>  
>         return 0;
>  }
>  
> -static int imx283_get_regulators(struct imx283 *imx283)
> -{
> -       unsigned int i;
> -
> -       for (i = 0; i < ARRAY_SIZE(imx283_supply_name); i++)
> -               imx283->supplies[i].supply = imx283_supply_name[i];
> -
> -       return devm_regulator_bulk_get(imx283->dev,
> -                                      ARRAY_SIZE(imx283_supply_name),
> -                                      imx283->supplies);
> -}
> -
>  /* Verify chip ID */
>  static int imx283_identify_module(struct imx283 *imx283)
>  {
> @@ -1480,12 +1463,6 @@ static int imx283_probe(struct i2c_client *client)
>                 return -EINVAL;
>         }
>  
> -       ret = imx283_get_regulators(imx283);
> -       if (ret) {
> -               return dev_err_probe(imx283->dev, ret,
> -                               "failed to get regulators\n");
> -       }
> -
>         ret = imx283_parse_endpoint(imx283);
>         if (ret) {
>                 dev_err(imx283->dev, "failed to parse endpoint configuration\n");

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2025-07-25 11:00 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-10 17:46 [PATCH 00/72] media: i2c: Reduce cargo-cult Laurent Pinchart
2025-07-10 17:46 ` [PATCH 01/72] dt-bindings: media: Deprecate clock-frequency property for camera sensors Laurent Pinchart
2025-07-10 23:10   ` Rob Herring (Arm)
2025-07-10 17:46 ` [PATCH 02/72] dt-bindings: media: et8ek8: Deprecate clock-frequency property Laurent Pinchart
2025-07-10 23:11   ` Rob Herring (Arm)
2025-07-10 17:46 ` [PATCH 03/72] dt-bindings: media: imx258: Make clocks property required Laurent Pinchart
2025-07-10 23:11   ` Rob Herring (Arm)
2025-07-10 17:47 ` [PATCH 04/72] dt-bindings: media: imx274: " Laurent Pinchart
2025-07-10 19:37   ` Rob Herring (Arm)
2025-07-10 20:33     ` Laurent Pinchart
2025-07-10 17:47 ` [PATCH 05/72] ARM: dts: nxp: imx6qdl-pico: Replace clock-frequency in camera sensor node Laurent Pinchart
2025-07-10 20:19   ` Frank Li
2025-07-10 17:47 ` [PATCH 06/72] ARM: dts: nxp: imx6qdl-wandboard: " Laurent Pinchart
2025-07-10 20:18   ` Frank Li
2025-07-10 20:34     ` Laurent Pinchart
2025-07-11  5:17       ` Frank Li
2025-07-10 17:47 ` [PATCH 07/72] ARM: dts: samsung: exynos4210-i9100: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 08/72] ARM: dts: samsung: exynos4412-midas: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 09/72] ARM: dts: ti: omap3-n900: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 10/72] ARM: dts: ti: omap3-n950: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 11/72] ARM: dts: ti: omap3-n9: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 12/72] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: " Laurent Pinchart
2025-07-11 12:25   ` Konrad Dybcio
2025-07-11 12:45     ` Laurent Pinchart
2025-07-11 12:47       ` Konrad Dybcio
2025-07-10 17:47 ` [PATCH 13/72] arm64: dts: renesas: aistarvision-mipi-adapter-2.1: Drop clock-frequency from " Laurent Pinchart
2025-07-28 14:19   ` Geert Uytterhoeven
2025-07-28 15:08     ` Laurent Pinchart
2025-07-10 17:47 ` [PATCH 14/72] arm64: dts: renesas: rzg2l-smarc: " Laurent Pinchart
2025-07-28 14:20   ` Geert Uytterhoeven
2025-07-10 17:47 ` [PATCH 15/72] media: i2c: mt9v022: Drop unused mt9v022.h header Laurent Pinchart
2025-07-10 17:47 ` [PATCH 16/72] media: i2c: mt9v032: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 17/72] media: i2c: mt9v032: Drop support for platform data Laurent Pinchart
2025-07-10 17:47 ` [PATCH 18/72] media: i2c: mt9v111: Do not set clock rate manually Laurent Pinchart
2025-07-10 17:47 ` [PATCH 19/72] media: i2c: ov6650: Drop unused driver Laurent Pinchart
2025-07-10 17:47 ` [PATCH 20/72] media: i2c: hi556: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 21/72] media: i2c: hi556: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 22/72] media: i2c: hi847: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 23/72] media: i2c: hi847: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 24/72] media: i2c: imx208: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 25/72] media: i2c: imx208: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 26/72] media: i2c: imx319: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 27/72] media: i2c: imx319: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 28/72] media: i2c: imx355: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 29/72] media: i2c: imx335: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 30/72] media: i2c: og01a1b: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 31/72] media: i2c: og01a1b: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-15 11:44   ` Mehdi Djait
2025-07-15 18:41     ` Laurent Pinchart
2025-07-10 17:47 ` [PATCH 32/72] media: i2c: ov02c10: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 33/72] media: i2c: ov02c10: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 34/72] media: i2c: ov02e10: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 35/72] media: i2c: ov02e10: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 36/72] media: i2c: ov08d10: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 37/72] media: i2c: ov08d10: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 38/72] media: i2c: ov08x40: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 39/72] media: i2c: ov08x40: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 40/72] media: i2c: ov13858: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 41/72] media: i2c: ov13858: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 42/72] media: i2c: ov13b10: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 43/72] media: i2c: ov13b10: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 44/72] media: i2c: ov2740: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 45/72] media: i2c: ov2740: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 46/72] media: i2c: ov4689: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 47/72] media: i2c: ov5670: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 48/72] media: i2c: ov5670: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 49/72] media: i2c: ov5675: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 50/72] media: i2c: ov5675: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 51/72] media: i2c: ov5693: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 52/72] media: i2c: ov7251: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 53/72] media: i2c: ov9734: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 54/72] media: i2c: ov9734: Use V4L2 sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 55/72] media: v4l2-common: Add legacy camera " Laurent Pinchart
2025-07-14 12:54   ` Mehdi Djait
2025-07-14 13:12     ` Mehdi Djait
2025-07-14 14:09       ` Laurent Pinchart
2025-07-14 21:15         ` Mehdi Djait
2025-07-10 17:47 ` [PATCH 56/72] media: i2c: et8ek8: Drop support for per-mode external clock frequency Laurent Pinchart
2025-07-10 17:47 ` [PATCH 57/72] media: i2c: et8ek8: Use V4L2 legacy sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 58/72] media: i2c: gc05a2: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 59/72] media: i2c: gc08a3: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 60/72] media: i2c: imx258: Replace client->dev usage Laurent Pinchart
2025-07-10 17:47 ` [PATCH 61/72] media: i2c: imx258: Use V4L2 legacy sensor clock helper Laurent Pinchart
2025-07-10 17:47 ` [PATCH 62/72] media: i2c: imx290: " Laurent Pinchart
2025-07-10 17:47 ` [PATCH 63/72] media: i2c: ov02a10: Replace client->dev usage Laurent Pinchart
2025-07-10 17:48 ` [PATCH 64/72] media: i2c: ov02a10: Use V4L2 legacy sensor clock helper Laurent Pinchart
2025-07-10 17:48 ` [PATCH 65/72] media: i2c: ov2685: " Laurent Pinchart
2025-07-10 17:48 ` [PATCH 66/72] media: i2c: ov5645: " Laurent Pinchart
2025-07-10 17:48 ` [PATCH 67/72] media: i2c: ov5695: " Laurent Pinchart
2025-07-10 17:48 ` [PATCH 68/72] media: i2c: ov8856: Replace client->dev usage Laurent Pinchart
2025-07-10 17:48 ` [PATCH 69/72] media: i2c: ov8856: Use V4L2 legacy sensor clock helper Laurent Pinchart
2025-07-10 17:48 ` [PATCH 70/72] media: i2c: s5c73m3: " Laurent Pinchart
2025-07-10 17:48 ` [PATCH 71/72] media: i2c: s5k5baf: " Laurent Pinchart
2025-07-10 17:48 ` [PATCH 72/72] media: i2c: s5k6a3: " Laurent Pinchart
2025-07-24 11:42 ` [PATCH 00/72] media: i2c: Reduce cargo-cult Tarang Raval
2025-07-24 11:52   ` Laurent Pinchart
     [not found]     ` <PN3P287MB1829C9E8C78ADD70259A68F08B5EA@PN3P287MB1829.INDP287.PROD.OUTLOOK.COM>
2025-07-24 13:37       ` Mark Brown
2025-07-24 13:52       ` Laurent Pinchart
2025-07-24 14:20         ` Tarang Raval
2025-07-24 14:26           ` Mark Brown
2025-07-24 15:44           ` Laurent Pinchart
2025-07-25  7:00             ` Tarang Raval
2025-07-25  9:38               ` Laurent Pinchart
2025-07-25 10:35                 ` Tarang Raval
2025-07-25 11:00                   ` Laurent Pinchart [this message]
2025-07-25 11:31                     ` Tarang Raval
2025-07-25 12:35               ` Mark Brown
2025-07-26  6:17                 ` Tarang Raval
2025-08-11 23:27 ` (subset) " Bjorn Andersson
2025-08-12  8:51   ` Laurent Pinchart
2025-08-12  8:58     ` Krzysztof Kozlowski
2025-08-12  9:39       ` Laurent Pinchart
2025-08-12 10:28         ` Krzysztof Kozlowski
2025-08-12 10:34           ` Laurent Pinchart
2025-08-12 20:10           ` Laurent Pinchart

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=20250725110024.GA30386@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=alim.akhtar@samsung.com \
    --cc=andersson@kernel.org \
    --cc=andrzej.hajda@intel.com \
    --cc=arec.kao@intel.com \
    --cc=benjamin.mugnier@foss.st.com \
    --cc=bingbu.cao@intel.com \
    --cc=bod@kernel.org \
    --cc=broonie@kernel.org \
    --cc=bryan.odonoghue@linaro.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=djrscally@gmail.com \
    --cc=dongcheng.yan@intel.com \
    --cc=festevam@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=git@apitzsch.eu \
    --cc=hansg@kernel.org \
    --cc=hao.yao@intel.com \
    --cc=heimir.sverrisson@gmail.com \
    --cc=hverkuil@kernel.org \
    --cc=imx@lists.linux.dev \
    --cc=jacopo@jmondi.org \
    --cc=jimmy.su@intel.com \
    --cc=jingjing.xiong@intel.com \
    --cc=jonas@kwiboo.se \
    --cc=kernel@pengutronix.de \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=leonl@leopardimaging.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mani@kernel.org \
    --cc=matthias.fend@emfend.at \
    --cc=mattwmajewski@gmail.com \
    --cc=mehdi.djait@linux.intel.com \
    --cc=mike.rudenko@gmail.com \
    --cc=nicolas.dufresne@collabora.com \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    --cc=pavel@kernel.org \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=ribalda@chromium.org \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=s.nawrocki@samsung.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=shawnguo@kernel.org \
    --cc=sylvain.petinot@foss.st.com \
    --cc=tarang.raval@siliconsignals.io \
    --cc=tian.shu.qiu@intel.com \
    --cc=todor.too@gmail.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=tony@atomide.com \
    --cc=zhengsq@rock-chips.com \
    --cc=zhi.mao@mediatek.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.