From: Hans de Goede <johannes.goede@oss.qualcomm.com>
To: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Hans de Goede <johannes.goede@oss.qualcomm.com>
Subject: [PATCH v5 12/14] media: mt9m114: Drop start-, stop-streaming sequence from initialize
Date: Tue, 30 Dec 2025 18:03:09 +0100 [thread overview]
Message-ID: <20251230-mt9m114-atomisp-v5-12-763539e76094@oss.qualcomm.com> (raw)
In-Reply-To: <20251230-mt9m114-atomisp-v5-0-763539e76094@oss.qualcomm.com>
Drop the start-, stop-streaming sequence from initialize.
When streaming is started with a runtime-suspended sensor,
mt9m114_start_streaming() will runtime-resume the sensor which calls
mt9m114_initialize() immediately followed by calling
mt9m114_set_state(ENTER_CONFIG_CHANGE).
This results in the following state changes in quick succession:
mt9m114_set_state(ENTER_CONFIG_CHANGE) -> transitions to STREAMING
mt9m114_set_state(ENTER_SUSPEND) -> transitions to SUSPENDED
mt9m114_set_state(ENTER_CONFIG_CHANGE) -> transitions to STREAMING
these quick state changes confuses the CSI receiver on atomisp devices
causing streaming to not work.
Drop the state changes from mt9m114_initialize() and move
the mt9m114_initialize() call to mt9m114_start_streaming()
so that only a single mt9m114_set_state(ENTER_CONFIG_CHANGE) call
is made when streaming is started with a runtime-suspend sensor.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com>
---
Changes in v5:
- Drop "and identify it " from comment in probe()
Changes in v4:
- Move the mt9m114_initialize() call to mt9m114_start_streaming()
and drop the config_change_pending flag
---
drivers/media/i2c/mt9m114.c | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)
diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c
index 5e0fbc34921023e1e7a69ec3d098f936eba93ebb..18fcf1a105a4268a501f517a155f12def0753929 100644
--- a/drivers/media/i2c/mt9m114.c
+++ b/drivers/media/i2c/mt9m114.c
@@ -789,14 +789,6 @@ static int mt9m114_initialize(struct mt9m114 *sensor)
if (ret < 0)
return ret;
- ret = mt9m114_set_state(sensor, MT9M114_SYS_STATE_ENTER_CONFIG_CHANGE);
- if (ret < 0)
- return ret;
-
- ret = mt9m114_set_state(sensor, MT9M114_SYS_STATE_ENTER_SUSPEND);
- if (ret < 0)
- return ret;
-
return 0;
}
@@ -967,6 +959,10 @@ static int mt9m114_start_streaming(struct mt9m114 *sensor,
if (ret)
return ret;
+ ret = mt9m114_initialize(sensor);
+ if (ret)
+ goto error;
+
ret = mt9m114_configure_ifp(sensor, ifp_state);
if (ret)
goto error;
@@ -2318,19 +2314,8 @@ static int __maybe_unused mt9m114_runtime_resume(struct device *dev)
{
struct v4l2_subdev *sd = dev_get_drvdata(dev);
struct mt9m114 *sensor = ifp_to_mt9m114(sd);
- int ret;
- ret = mt9m114_power_on(sensor);
- if (ret)
- return ret;
-
- ret = mt9m114_initialize(sensor);
- if (ret) {
- mt9m114_power_off(sensor);
- return ret;
- }
-
- return 0;
+ return mt9m114_power_on(sensor);
}
static int __maybe_unused mt9m114_runtime_suspend(struct device *dev)
@@ -2574,8 +2559,8 @@ static int mt9m114_probe(struct i2c_client *client)
/*
* Identify the sensor. The driver supports runtime PM, but needs to
* work when runtime PM is disabled in the kernel. To that end, power
- * the sensor on manually here, and initialize it after identification
- * to reach the same state as if resumed through runtime PM.
+ * the sensor on manually here to reach the same state as if resumed
+ * through runtime PM.
*/
ret = mt9m114_power_on(sensor);
if (ret < 0) {
@@ -2587,10 +2572,6 @@ static int mt9m114_probe(struct i2c_client *client)
if (ret < 0)
goto error_power_off;
- ret = mt9m114_initialize(sensor);
- if (ret < 0)
- goto error_power_off;
-
/*
* Enable runtime PM with autosuspend. As the device has been powered
* manually, mark it as active, and increase the usage count without
--
2.52.0
next prev parent reply other threads:[~2025-12-30 17:03 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-30 17:02 [PATCH v5 00/14] media: mt9m114: Changes to make it work with atomisp devices Hans de Goede
2025-12-30 17:02 ` [PATCH v5 01/14] media: aptina-pll: Debug log p1 min and max values Hans de Goede
2025-12-30 17:02 ` [PATCH v5 02/14] media: mt9m114: Use aptina-PLL helper to get PLL values Hans de Goede
2025-12-31 0:29 ` Laurent Pinchart
2025-12-30 17:03 ` [PATCH v5 03/14] media: mt9m114: Lower minimum vblank value Hans de Goede
2025-12-30 17:03 ` [PATCH v5 04/14] media: mt9m114: Fix default hblank and vblank values Hans de Goede
2025-12-30 17:03 ` [PATCH v5 05/14] media: mt9m114: Tweak default hblank and vblank for more accurate fps Hans de Goede
2025-12-30 17:03 ` [PATCH v5 06/14] media: mt9m114: Avoid a reset low spike during probe() Hans de Goede
2025-12-30 17:03 ` [PATCH v5 07/14] media: mt9m114: Put sensor in reset on power down Hans de Goede
2025-12-30 17:03 ` [PATCH v5 08/14] media: mt9m114: Add and use mt9m114_ifp_get_border() helper function Hans de Goede
2025-12-30 17:03 ` [PATCH v5 09/14] media: mt9m114: Adjust IFP selections and source format when source format changes to/from RAW10 Hans de Goede
2025-12-30 17:03 ` [PATCH v5 10/14] media: mt9m114: Update source pad selection and format when sink pad format changes Hans de Goede
2025-12-30 17:03 ` [PATCH v5 11/14] media: mt9m114: Don't allow changing the IFP crop/compose selections when bypassing the scaler Hans de Goede
2025-12-30 17:03 ` Hans de Goede [this message]
2025-12-30 17:03 ` [PATCH v5 13/14] media: mt9m114: Return -EPROBE_DEFER if no endpoint is found Hans de Goede
2025-12-30 17:03 ` [PATCH v5 14/14] media: mt9m114: Add ACPI enumeration support Hans de Goede
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=20251230-mt9m114-atomisp-v5-12-763539e76094@oss.qualcomm.com \
--to=johannes.goede@oss.qualcomm.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@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 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®