All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
To: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Cc: tomm.merciai@gmail.com, linux-renesas-soc@vger.kernel.org,
	 biju.das.jz@bp.renesas.com,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	 Mauro Carvalho Chehab <mchehab@kernel.org>,
	Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	 Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	 linux-media@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/9] media: rzg2l-cru: csi2: Add device_link from CSI-2 to sensor
Date: Mon, 27 Jul 2026 11:48:59 +0200	[thread overview]
Message-ID: <amcpMBZTD20M9cMZ@zed> (raw)
In-Reply-To: <20260616170542.447804-3-tommaso.merciai.xr@bp.renesas.com>

Hi Tommaso

On Tue, Jun 16, 2026 at 07:05:32PM +0200, Tommaso Merciai wrote:
> The CSI-2 receiver depends on its remote sensor being powered and
> configured before it can receive data. Without an explicit device_link
> the PM core has no knowledge of this dependency and may suspend the
> sensor while CSI-2 is still active, or resume CSI-2 before the sensor
> is ready.
>
> Add a DL_FLAG_STATELESS device_link from the CSI-2 device to the sensor
> device when the sensor subdev binds. This instructs the PM core to
> suspend CSI-2 before the sensor and to resume the sensor before CSI-2.
> The link is deleted on unbind.
>
> Move csi2->remote_source assignment to the end of the function.
>
> Signed-off-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
> ---
>  .../platform/renesas/rzg2l-cru/rzg2l-csi2.c   | 24 +++++++++++++++----
>  1 file changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c
> index 6dc4b53607b4..3a4bc4ef72fc 100644
> --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c
> +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c
> @@ -773,15 +773,28 @@ static int rzg2l_csi2_notify_bound(struct v4l2_async_notifier *notifier,
>  				   struct v4l2_async_connection *asd)
>  {
>  	struct rzg2l_csi2 *csi2 = notifier_to_csi2(notifier);
> +	int ret;
>
> -	csi2->remote_source = subdev;
> +	if (!device_link_add(csi2->dev, subdev->dev, DL_FLAG_STATELESS)) {

As cru-csi2 supports runtime suspend/resume, should you also add
DL_FLAG_PM_RUNTIME ?

> +		dev_err(csi2->dev, "Failed to create device link to sensor %s\n",
> +			subdev->name);
> +		return -EINVAL;
> +	}
>
>  	dev_dbg(csi2->dev, "Bound subdev: %s pad\n", subdev->name);
>
> -	return media_create_pad_link(&subdev->entity, RZG2L_CSI2_SINK,
> -				     &csi2->subdev.entity, 0,
> -				     MEDIA_LNK_FL_ENABLED |
> -				     MEDIA_LNK_FL_IMMUTABLE);
> +	ret = media_create_pad_link(&subdev->entity, RZG2L_CSI2_SINK,
> +				    &csi2->subdev.entity, 0,
> +				    MEDIA_LNK_FL_ENABLED |
> +				    MEDIA_LNK_FL_IMMUTABLE);
> +	if (ret) {
> +		device_link_remove(csi2->dev, subdev->dev);
> +		return ret;
> +	}
> +
> +	csi2->remote_source = subdev;
> +
> +	return 0;
>  }
>
>  static void rzg2l_csi2_notify_unbind(struct v4l2_async_notifier *notifier,
> @@ -790,6 +803,7 @@ static void rzg2l_csi2_notify_unbind(struct v4l2_async_notifier *notifier,
>  {
>  	struct rzg2l_csi2 *csi2 = notifier_to_csi2(notifier);
>
> +	device_link_remove(csi2->dev, subdev->dev);
>  	csi2->remote_source = NULL;
>
>  	dev_dbg(csi2->dev, "Unbind subdev %s\n", subdev->name);
> --
> 2.54.0
>

  reply	other threads:[~2026-07-27  9:49 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-16 17:05 [PATCH 0/9] media: rzg2l-cru: Add suspend/resume support Tommaso Merciai
2026-06-16 17:05 ` [PATCH 1/9] media: rzg2l-cru: Add device_link from CRU to CSI-2 Tommaso Merciai
2026-07-27  9:45   ` Jacopo Mondi
2026-07-27 15:02     ` Tommaso Merciai
2026-07-27  9:50   ` Jacopo Mondi
2026-07-27 15:17     ` Tommaso Merciai
2026-06-16 17:05 ` [PATCH 2/9] media: rzg2l-cru: csi2: Add device_link from CSI-2 to sensor Tommaso Merciai
2026-07-27  9:48   ` Jacopo Mondi [this message]
2026-07-27 15:41     ` Tommaso Merciai
2026-06-16 17:05 ` [PATCH 3/9] media: rzg2l-cru: Use bulk reset API in rzg2l_cru_start_streaming_vq() Tommaso Merciai
2026-07-27  9:55   ` Jacopo Mondi
2026-06-16 17:05 ` [PATCH 4/9] media: rzg2l-cru: Drop stop streaming function Tommaso Merciai
2026-07-27  9:55   ` Jacopo Mondi
2026-06-16 17:05 ` [PATCH 5/9] media: rzg2l-cru: Move active_slot reset into rzg2l_cru_set_stream() Tommaso Merciai
2026-07-27 10:11   ` Jacopo Mondi
2026-06-16 17:05 ` [PATCH 6/9] media: rzg2l-cru: Add suspend/resume support Tommaso Merciai
2026-07-27 10:20   ` Jacopo Mondi
2026-06-16 17:05 ` [PATCH 7/9] media: rzg2l-cru: csi2: Add system sleep PM support Tommaso Merciai
2026-06-16 17:05 ` [PATCH 8/9] media: i2c: ov5645: Switch to RUNTIME_PM_OPS() and pm_ptr() Tommaso Merciai
2026-06-16 17:05 ` [PATCH 9/9] media: i2c: ov5645: Add suspend/resume support Tommaso Merciai
2026-07-15  8:47 ` [PATCH 0/9] media: rzg2l-cru: " Tommaso Merciai

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=amcpMBZTD20M9cMZ@zed \
    --to=jacopo.mondi@ideasonboard.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomm.merciai@gmail.com \
    --cc=tommaso.merciai.xr@bp.renesas.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.