Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Isaac Scott <isaac.scott@ideasonboard.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	 Rui Miguel Silva <rmfrfs@gmail.com>,
	 Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	 Martin Kepplinger <martink@posteo.de>,
	Purism Kernel Team <kernel@puri.sm>,
	 Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	 Pengutronix Kernel Team <kernel@pengutronix.de>,
	 Fabio Estevam <festevam@gmail.com>,
	 Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	 imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	 Isaac Scott <isaac.scott@ideasonboard.com>,
	Frank Li <Frank.Li@nxp.com>
Subject: [PATCH v4 0/4] media: imx-mipi-csis: Get the number of active lanes from mbus_config
Date: Thu, 25 Sep 2025 16:54:25 +0100	[thread overview]
Message-ID: <20250925-active-data-lanes-v4-0-8b54e3d5af6c@ideasonboard.com> (raw)

It is possible that the number of desired active MIPI CSI2 data lanes
does not match the maximum listed in device tree. Add a helper function
to v4l2_common that calls the get_mbus_config op to get the number of
actively used data lanes in drivers that support it.

Compare it to the number of lanes configured in device tree, and if its
invalid, use the number present in device tree.

This series also uses the helper in imx-mipi-csis driver to set the
currently configured num_data_lanes, while keeping track of the number
of data lanes set in device tree to ensure we can still use all possible
lanes if we need to, and the upstream subdev driver requests them.

Tested on v6.15, compile tested on media/next.

---------

Changes v3 -> v4:

- Updated base tree to media/next
- Used local 'lanes' variable consistently in
  v4l2_get_active_data_lanes()
- Removed device tree references in documentation
- Made comment a single line
- Collected tag for patch 1/4
- Removed unnecessary num_data_lanes assignments in async_register in
  imx-mipi-csis
- Removed some debug print changes
- Checked return value of v4l2_get_active_data_lanes() before assignment
  to csis->num_data_lanes
- Added patch to move redundant debug print in mipi_csis_probe()

Changes v2 -> v3:

- Rename dt_lanes to max_data_lanes
- Remove check for < 0 on unsigned int max_data_lanes in
  v4l2_get_active_data_lanes()
- Added comment to explain that mbus_config is expected to be zeroed at
  init in drivers implementing get_mbus_config subdev pad op
- Wrapped signature in header file and source for
  v4l2_get_active_data_lanes()
- Added kernel-doc documentation for v4l2_get_active_data_lanes()
- Added debug message to indicate an invalid number of active lanes
- Changed csis->max_data_lanes to csis->num_data_lanes
- Changed uses of csis->bus.num_data_lanes to csis->num_data_lanes where
  appropriate to make csis->bus immutable after probe

Changes v1 -> v2:

- Added helper function to get active data lanes in v4l2-common
- Store the maximum data lanes possible, as configured in device tree
- Added media: prefix to commit titles

Signed-off-by: Isaac Scott <isaac.scott@ideasonboard.com>
---
Isaac Scott (4):
      media: v4l: Add helper to get number of active lanes via a pad
      media: imx-mipi-csis: Move redundant debug print in probe
      media: imx-mipi-csis: Store the number of data_lanes configured in dt
      media: imx-mipi-csis: Get number of active lanes via mbus_config

 drivers/media/platform/nxp/imx-mipi-csis.c | 19 ++++++++++++-------
 drivers/media/v4l2-core/v4l2-common.c      | 29 +++++++++++++++++++++++++++++
 include/media/v4l2-common.h                | 20 ++++++++++++++++++++
 3 files changed, 61 insertions(+), 7 deletions(-)
---
base-commit: 40b7a19f321e65789612ebaca966472055dab48c
change-id: 20250925-active-data-lanes-b5d994ff024a

Best regards,
-- 
Isaac Scott <isaac.scott@ideasonboard.com>



             reply	other threads:[~2025-09-25 15:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-25 15:54 Isaac Scott [this message]
2025-09-25 15:54 ` [PATCH v4 1/4] media: v4l: Add helper to get number of active lanes via a pad Isaac Scott
2025-09-25 15:54 ` [PATCH v4 2/4] media: imx-mipi-csis: Move redundant debug print in probe Isaac Scott
2025-09-25 21:37   ` Frank Li
2025-09-25 15:54 ` [PATCH v4 3/4] media: imx-mipi-csis: Store the number of data_lanes configured in dt Isaac Scott
2025-09-25 21:49   ` Frank Li
2025-09-26  8:46     ` Isaac Scott
2025-09-25 15:54 ` [PATCH v4 4/4] media: imx-mipi-csis: Get number of active lanes via mbus_config Isaac Scott
2025-09-25 21:55   ` Frank Li

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=20250925-active-data-lanes-v4-0-8b54e3d5af6c@ideasonboard.com \
    --to=isaac.scott@ideasonboard.com \
    --cc=Frank.Li@nxp.com \
    --cc=festevam@gmail.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=kernel@puri.sm \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=martink@posteo.de \
    --cc=mchehab@kernel.org \
    --cc=rmfrfs@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sakari.ailus@linux.intel.com \
    --cc=shawnguo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox