From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 03 Jan 2024 09:43:39 +0000
Subject: [PATCH] update kernel to 5.10.198

---
 kernel/drivers/media/i2c/maxim4c/maxim4c_v4l2.c |   34 +++++++++++++---------------------
 1 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/kernel/drivers/media/i2c/maxim4c/maxim4c_v4l2.c b/kernel/drivers/media/i2c/maxim4c/maxim4c_v4l2.c
index 37df9a6..908045e 100644
--- a/kernel/drivers/media/i2c/maxim4c/maxim4c_v4l2.c
+++ b/kernel/drivers/media/i2c/maxim4c/maxim4c_v4l2.c
@@ -532,6 +532,11 @@
 	if (maxim4c->hot_plug_irq > 0)
 		enable_irq(maxim4c->hot_plug_irq);
 
+	if (maxim4c->link_lock_state != maxim4c->gmsl_link.link_enable_mask) {
+		dev_info(dev, "partial links are locked, start hot plug detect work.\n");
+		maxim4c_hot_plug_detect_work_start(maxim4c);
+	}
+
 	return 0;
 }
 
@@ -589,21 +594,20 @@
 		goto unlock_and_return;
 
 	if (on) {
-		ret = pm_runtime_get_sync(&client->dev);
-		if (ret < 0) {
-			pm_runtime_put_noidle(&client->dev);
+		ret = pm_runtime_resume_and_get(&client->dev);
+		if (ret < 0)
 			goto unlock_and_return;
-		}
 
 		ret = __maxim4c_start_stream(maxim4c);
 		if (ret) {
 			v4l2_err(sd, "start stream failed while write regs\n");
-			pm_runtime_put(&client->dev);
+			pm_runtime_put_sync(&client->dev);
 			goto unlock_and_return;
 		}
 	} else {
 		__maxim4c_stop_stream(maxim4c);
-		pm_runtime_put(&client->dev);
+		pm_runtime_mark_last_busy(&client->dev);
+		pm_runtime_put_autosuspend(&client->dev);
 	}
 
 	maxim4c->streaming = on;
@@ -787,21 +791,9 @@
 
 	val |= V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
 	val |= (1 << (data_lanes - 1));
-	switch (data_lanes) {
-	case 4:
-		val |= V4L2_MBUS_CSI2_CHANNEL_3;
-		fallthrough;
-	case 3:
-		val |= V4L2_MBUS_CSI2_CHANNEL_2;
-		fallthrough;
-	case 2:
-		val |= V4L2_MBUS_CSI2_CHANNEL_1;
-		fallthrough;
-	case 1:
-	default:
-		val |= V4L2_MBUS_CSI2_CHANNEL_0;
-		break;
-	}
+
+	val |= V4L2_MBUS_CSI2_CHANNEL_3 | V4L2_MBUS_CSI2_CHANNEL_2 |
+	       V4L2_MBUS_CSI2_CHANNEL_1 | V4L2_MBUS_CSI2_CHANNEL_0;
 
 	config->type = V4L2_MBUS_CSI2_DPHY;
 	config->flags = val;

--
Gitblit v1.6.2