From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Mehdi Djait <mehdi.djait@linux.intel.com>
Cc: sakari.ailus@linux.intel.com, akinobu.mita@gmail.com,
stanislaw.gruszka@linux.intel.com, hdegoede@redhat.com,
arnd@arndb.de, alain.volmat@foss.st.com, andrzej.hajda@intel.com,
benjamin.mugnier@foss.st.com, dave.stevenson@raspberrypi.com,
hansg@kernel.org, hverkuil@xs4all.nl,
jacopo.mondi@ideasonboard.com, jonas@kwiboo.se,
kieran.bingham@ideasonboard.com, khalasa@piap.pl,
prabhakar.csengg@gmail.com, mani@kernel.org,
m.felsch@pengutronix.de, martink@posteo.de,
mattwmajewski@gmail.com, matthias.fend@emfend.at,
mchehab@kernel.org, michael.riesch@collabora.com,
naush@raspberrypi.com, nicholas@rothemail.net,
nicolas.dufresne@collabora.com, paul.elder@ideasonboard.com,
dan.scally@ideasonboard.com, pavel@kernel.org,
petrcvekcz@gmail.com, rashanmu@gmail.com, ribalda@chromium.org,
rmfrfs@gmail.com, zhengsq@rock-chips.com, slongerbeam@gmail.com,
sylvain.petinot@foss.st.com, s.nawrocki@samsung.com,
tomi.valkeinen@ideasonboard.com, umang.jain@ideasonboard.com,
zhi.mao@mediatek.com, linux-kernel@vger.kernel.org,
linux-media@vger.kernel.org
Subject: Re: [PATCH v1 02/55] Documentation: media: camera-sensor: Mention v4l2_devm_sensor_clk_get() for obtaining the clock
Date: Fri, 20 Jun 2025 00:47:05 +0300 [thread overview]
Message-ID: <20250619214705.GR22102@pendragon.ideasonboard.com> (raw)
In-Reply-To: <1261f41358da597fb9900b7880618ebcc392160d.1750352394.git.mehdi.djait@linux.intel.com>
Hi Mehdi,
Thank you for the patch.
On Thu, Jun 19, 2025 at 07:58:55PM +0200, Mehdi Djait wrote:
> Add the new v4l2 helper devm_v4l2_sensor_clk_get() to Documentation. the
> helper works on both DT- and ACPI-based platforms to retrieve a
> reference to the clock producer from firmware.
>
> Signed-off-by: Mehdi Djait <mehdi.djait@linux.intel.com>
>
> diff --git a/Documentation/driver-api/media/camera-sensor.rst b/Documentation/driver-api/media/camera-sensor.rst
> index c290833165e6..c82c018a5f40 100644
> --- a/Documentation/driver-api/media/camera-sensor.rst
> +++ b/Documentation/driver-api/media/camera-sensor.rst
> @@ -32,7 +32,8 @@ user.
> ACPI
> ~~~~
>
> -Read the ``clock-frequency`` _DSD property to denote the frequency. The driver
> +Use ``devm_v4l2_sensor_clk_get()`` to get the clock. The function will read the
> +``clock-frequency`` _DSD property to denote the frequency. The driver
> can rely on this frequency being used.
This isn't specific to ACPI anymore. I think the documentation should be
refactored further. Here's a proposal.
Handling clocks
---------------
Camera sensors have an internal clock tree including a PLL and a number of
divisors. The clock tree is generally configured by the driver based on a few
input parameters that are specific to the hardware: the external clock frequency
and the link frequency. The two parameters generally are specified by system
firmware. **No other frequencies should be used in any circumstances.**
The reason why the clock frequencies are so important is that the system is
usually designed to use specific external clock and link frequencies to ensure
electro-magnetic compatibility. Using other frequencies may cause harmful
effects elsewhere. Therefore only the pre-determined frequencies are
configurable by the user.
The external clock frequency shall be retrieved by obtaining the external clock
using the ``devm_v4l2_sensor_clk_get()`` helper function, and then getting its
frequency with ``clk_get_rate()``. Usage of the helper function guarantees
correct behaviour regardless of whether the sensor is integrated in a DT-based
or ACPI-based system.
ACPI
~~~~
ACPI-based systems typically don't register the sensor external clock with the
kernel, but specify the external clock frequency in the ``clock-frequency``
_DSD property. The ``devm_v4l2_sensor_clk_get()`` helper creates and returns a
fixed clock set at that rate.
Devicetree
~~~~~~~~~~
Devicetree-based systems declare the sensor external clock in the device tree
and reference it from the sensor node. The preferred way to select the external
clock frequency is to use the ``assigned-clocks``, ``assigned-clock-parents``
and ``assigned-clock-rates`` properties in the sensor node to set the clock
rate. See the `clock device tree bindings
<https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/clock/clock.yaml>`_
for more information. The ``devm_v4l2_sensor_clk_get()`` helper retrieves and
returns that clock.
This approach has the drawback that there's no guarantee that the frequency
hasn't been modified directly or indirectly by another driver, or supported by
the board's clock tree to begin with. Changes to the Common Clock Framework API
are required to ensure reliability.
>
> Devicetree
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2025-06-19 21:47 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-19 17:58 [PATCH v1 00/55] media: Add a helper for obtaining the clock producer Mehdi Djait
2025-06-19 17:58 ` [PATCH v1 01/55] media: v4l2-common: " Mehdi Djait
2025-06-19 22:07 ` Laurent Pinchart
2025-06-19 17:58 ` [PATCH v1 02/55] Documentation: media: camera-sensor: Mention v4l2_devm_sensor_clk_get() for obtaining the clock Mehdi Djait
2025-06-19 21:47 ` Laurent Pinchart [this message]
2025-06-23 10:49 ` Sakari Ailus
2025-06-19 17:58 ` [PATCH v1 03/55] media: i2c: ar0521: Use the v4l2 helper " Mehdi Djait
2025-06-21 10:21 ` Krzysztof Hałasa | Łukasiewicz – PIAP
2025-06-19 17:58 ` [PATCH v1 04/55] media: i2c: ds90ub913: " Mehdi Djait
2025-06-19 17:58 ` [PATCH v1 05/55] media: i2c: ds90ub960: " Mehdi Djait
2025-06-19 17:58 ` [PATCH v1 06/55] media: i2c: et8ek8: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 07/55] media: i2c: gc05a2: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 08/55] media: i2c: gc08a3: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 09/55] media: i2c: gc2145: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 10/55] media: i2c: hi846: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 11/55] media: i2c: imx214: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 12/55] media: i2c: imx219: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 13/55] media: i2c: imx283: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 14/55] media: i2c: imx290: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 15/55] media: i2c: imx296: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 16/55] media: i2c: imx334: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 17/55] media: i2c: imx335: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 18/55] media: i2c: imx412: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 19/55] media: i2c: imx415: " Mehdi Djait
2025-06-21 14:23 ` Michael Riesch
2025-06-19 17:59 ` [PATCH v1 20/55] media: i2c: max2175: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 21/55] media: i2c: mt9m001: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 22/55] media: i2c: mt9m111: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 23/55] media: i2c: mt9m114: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 24/55] media: i2c: mt9p031: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 25/55] media: i2c: mt9t112: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 26/55] media: i2c: mt9v032: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 27/55] media: i2c: mt9v111: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 28/55] media: i2c: ov02a10: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 29/55] media: i2c: ov2659: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 30/55] media: i2c: ov2685: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 31/55] media: i2c: ov5640: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 32/55] media: i2c: ov5645: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 33/55] media: i2c: ov5647: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 34/55] media: i2c: ov5648: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 35/55] media: i2c: ov5695: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 36/55] media: i2c: ov64a40: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 37/55] media: i2c: ov6650: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 38/55] media: i2c: ov7740: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 39/55] media: i2c: ov8856: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 40/55] media: i2c: ov8858: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 41/55] media: i2c: ov8865: " Mehdi Djait
2025-06-19 21:57 ` Laurent Pinchart
2025-06-19 21:59 ` Laurent Pinchart
2025-06-21 7:58 ` Sakari Ailus
2025-06-21 8:27 ` Hans de Goede
2025-06-19 17:59 ` [PATCH v1 42/55] media: i2c: ov9282: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 43/55] media: i2c: ov9640: " Mehdi Djait
2025-06-19 17:59 ` [PATCH v1 44/55] media: i2c: ov9650: " Mehdi Djait
2025-06-19 18:09 ` [PATCH v1 45/55] media: i2c: s5c73m3: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 46/55] media: i2c: s5k5baf: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 47/55] media: i2c: s5k6a3: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 48/55] media: i2c: st-mipid02: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 50/55] media: i2c: tc358746: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 51/55] media: i2c: thp7312: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 52/55] media: i2c: vd55g1: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 53/55] media: i2c: vd56g3: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 54/55] media: i2c: vgxy61: " Mehdi Djait
2025-06-19 18:11 ` [PATCH v1 55/55] media: i2c: ov2680: " Mehdi Djait
2025-06-19 22:00 ` Laurent Pinchart
2025-06-19 18:15 ` [PATCH v1 49/55] media: i2c: tc358743: " Mehdi Djait
2025-06-19 21:26 ` [PATCH v1 00/55] media: Add a helper for obtaining the clock producer Laurent Pinchart
2025-06-21 14:28 ` Michael Riesch
2025-06-22 11:45 ` Hans de Goede
2025-06-24 20:34 ` Lad, Prabhakar
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=20250619214705.GR22102@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=akinobu.mita@gmail.com \
--cc=alain.volmat@foss.st.com \
--cc=andrzej.hajda@intel.com \
--cc=arnd@arndb.de \
--cc=benjamin.mugnier@foss.st.com \
--cc=dan.scally@ideasonboard.com \
--cc=dave.stevenson@raspberrypi.com \
--cc=hansg@kernel.org \
--cc=hdegoede@redhat.com \
--cc=hverkuil@xs4all.nl \
--cc=jacopo.mondi@ideasonboard.com \
--cc=jonas@kwiboo.se \
--cc=khalasa@piap.pl \
--cc=kieran.bingham@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=m.felsch@pengutronix.de \
--cc=mani@kernel.org \
--cc=martink@posteo.de \
--cc=matthias.fend@emfend.at \
--cc=mattwmajewski@gmail.com \
--cc=mchehab@kernel.org \
--cc=mehdi.djait@linux.intel.com \
--cc=michael.riesch@collabora.com \
--cc=naush@raspberrypi.com \
--cc=nicholas@rothemail.net \
--cc=nicolas.dufresne@collabora.com \
--cc=paul.elder@ideasonboard.com \
--cc=pavel@kernel.org \
--cc=petrcvekcz@gmail.com \
--cc=prabhakar.csengg@gmail.com \
--cc=rashanmu@gmail.com \
--cc=ribalda@chromium.org \
--cc=rmfrfs@gmail.com \
--cc=s.nawrocki@samsung.com \
--cc=sakari.ailus@linux.intel.com \
--cc=slongerbeam@gmail.com \
--cc=stanislaw.gruszka@linux.intel.com \
--cc=sylvain.petinot@foss.st.com \
--cc=tomi.valkeinen@ideasonboard.com \
--cc=umang.jain@ideasonboard.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®