From: Mattijs Korpershoek <mkorpershoek@kernel.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Kieran Bingham <kieran.bingham@ideasonboard.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Michael Riesch <michael.riesch@collabora.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
Maxime Ripard <mripard@kernel.org>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
Mattijs Korpershoek <mkorpershoek@kernel.org>
Subject: [PATCH RFC 1/5] media: imx219: Move LP-11 state switch to power_on()
Date: Thu, 01 Oct 2026 14:55:19 +0200 [thread overview]
Message-ID: <20261001-v4l2-sensor-detect-v1-1-a45993be17b8@kernel.org> (raw)
In-Reply-To: <20261001-v4l2-sensor-detect-v1-0-a45993be17b8@kernel.org>
During probe(), we write the IMX219_MODE_STREAMING register to
transition from streaming -> standby to force LP-11 state.
This should be done at each power-up of the sensor, but is only
done *once* for the driver lifecycle (at probe).
Move the LP-11 sequence to power_on() to ensure that it's always put
into standby mode whenever the pm framework detects it's a power up.
Signed-off-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
---
drivers/media/i2c/imx219.c | 44 ++++++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 20 deletions(-)
diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
index 9571f3622d2d..7978fee5f4a2 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -1056,8 +1056,32 @@ static int imx219_power_on(struct device *dev)
usleep_range(IMX219_XCLR_MIN_DELAY_US,
IMX219_XCLR_MIN_DELAY_US + IMX219_XCLR_DELAY_RANGE_US);
+ /*
+ * Sensor doesn't enter LP-11 state upon power up until and unless
+ * streaming is started, so upon power up switch the modes to:
+ * streaming -> standby
+ */
+ ret = cci_write(imx219->regmap, IMX219_REG_MODE_SELECT,
+ IMX219_MODE_STREAMING, NULL);
+ if (ret < 0)
+ goto gpio_off;
+
+ usleep_range(100, 110);
+
+ /* put sensor back to standby mode */
+ ret = cci_write(imx219->regmap, IMX219_REG_MODE_SELECT,
+ IMX219_MODE_STANDBY, NULL);
+ if (ret < 0)
+ goto gpio_off;
+
+ usleep_range(100, 110);
+
return 0;
+gpio_off:
+ gpiod_set_value_cansleep(imx219->reset_gpio, 0);
+ clk_disable_unprepare(imx219->xclk);
+
reg_off:
regulator_bulk_disable(IMX219_NUM_SUPPLIES, imx219->supplies);
@@ -1240,26 +1264,6 @@ static int imx219_probe(struct i2c_client *client)
if (ret)
goto error_power_off;
- /*
- * Sensor doesn't enter LP-11 state upon power up until and unless
- * streaming is started, so upon power up switch the modes to:
- * streaming -> standby
- */
- ret = cci_write(imx219->regmap, IMX219_REG_MODE_SELECT,
- IMX219_MODE_STREAMING, NULL);
- if (ret < 0)
- goto error_power_off;
-
- usleep_range(100, 110);
-
- /* put sensor back to standby mode */
- ret = cci_write(imx219->regmap, IMX219_REG_MODE_SELECT,
- IMX219_MODE_STANDBY, NULL);
- if (ret < 0)
- goto error_power_off;
-
- usleep_range(100, 110);
-
ret = imx219_init_controls(imx219);
if (ret)
goto error_power_off;
--
2.55.0
next prev parent reply other threads:[~2026-10-01 12:55 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 12:55 [PATCH RFC 0/5] media: Fault-Tolerant V4L2 Mattijs Korpershoek
2026-10-01 12:55 ` Mattijs Korpershoek [this message]
2026-10-01 17:03 ` [PATCH RFC 1/5] media: imx219: Move LP-11 state switch to power_on() Dave Stevenson
2026-10-01 12:55 ` [PATCH RFC 2/5] media: v4l2-subdev: Add new ioctl for connection status Mattijs Korpershoek
2026-10-02 7:13 ` Sakari Ailus
2026-10-02 8:53 ` Mattijs Korpershoek
2026-10-01 12:55 ` [PATCH RFC 3/5] media: imx219: Allow driver probe with missing sensor Mattijs Korpershoek
2026-10-01 16:50 ` Dave Stevenson
2026-10-01 17:35 ` Dave Stevenson
2026-10-02 12:21 ` Mattijs Korpershoek
2026-10-01 12:55 ` [PATCH RFC 4/5] media: imx219: Implement .detect() sensor operation Mattijs Korpershoek
2026-10-01 12:55 ` [PATCH RFC 5/5] media: imx219: Add status polling using .detect() Mattijs Korpershoek
2026-10-01 15:58 ` Dave Stevenson
2026-10-01 17:26 ` Dave Stevenson
2026-10-02 8:39 ` Mattijs Korpershoek
2026-10-02 7:21 ` Sakari Ailus
2026-10-02 8:45 ` Mattijs Korpershoek
2026-10-02 8:32 ` Mattijs Korpershoek
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=20261001-v4l2-sensor-detect-v1-1-a45993be17b8@kernel.org \
--to=mkorpershoek@kernel.org \
--cc=dave.stevenson@raspberrypi.com \
--cc=kieran.bingham@ideasonboard.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=michael.riesch@collabora.com \
--cc=mripard@kernel.org \
--cc=sakari.ailus@linux.intel.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.