mirror of
https://github.com/armbian/build.git
synced 2025-09-08 23:31:29 +02:00
I have changed the way the patches are generated a bit. Instead of using orange-pi branch from megous tree for 6.6 kernel, I have used the following kernel branches a83t-suspend, af8133j, anx, audio, axp, cam, drm, err, fixes, mbus, modem, opi3, pb, pinetab, pp, ppkb, samuel, speed, tbs-a711, ths These branches were carefully chosen to include only allwinner related patches and remove importing of the rockchip related patches into the allwinner kernel. Following patches are modified to fix patch application failure - patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-reg_usb1_vbus-status-ok.patch - patches.armbian/arm64-dts-sun50i-h616-orangepi-zero2-Enable-GPU-mali.patch - patches.armbian/arm64-dts-allwinner-h616-Add-efuse_xlate-cpu-frequency-scaling-v1_6_2.patch - patches.armbian/arm64-dts-allwinner-h616-LED-green_power_on-red_status_heartbeat.patch - patches.armbian/arm64-dts-allwinner-overlay-Add-Overlays-for-sunxi64.patch - patches.armbian/arm64-dts-sun50i-h616-bigtreetech-cb1.patch Following patches are modified because of kernel api change to fix compilation failure - patches.armbian/drv-gpu-drm-sun4i-Add-HDMI-audio-sun4i-hdmi-encoder.patch - patches.armbian/drv-of-Device-Tree-Overlay-ConfigFS-interface.patch
73 lines
1.9 KiB
Diff
73 lines
1.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Andrey Skvortsov <andrej.skvortzov@gmail.com>
|
|
Date: Mon, 14 Aug 2023 13:27:08 +0300
|
|
Subject: media: gc2145: implement system suspend
|
|
|
|
If system was suspended while camera sensor was used, data and
|
|
interrupts were still coming from sensor and that caused unstable
|
|
system. Sometimes system hanged during a resume.
|
|
|
|
Signed-off-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
|
|
---
|
|
drivers/media/i2c/gc2145.c | 37 ++++++++++
|
|
1 file changed, 37 insertions(+)
|
|
|
|
diff --git a/drivers/media/i2c/gc2145.c b/drivers/media/i2c/gc2145.c
|
|
index 704bf8953bf8..d5d97e07c38e 100644
|
|
--- a/drivers/media/i2c/gc2145.c
|
|
+++ b/drivers/media/i2c/gc2145.c
|
|
@@ -2273,6 +2273,42 @@ static void gc2145_remove(struct i2c_client *client)
|
|
v4l2_ctrl_handler_free(&sensor->ctrls.handler);
|
|
}
|
|
|
|
+static int gc2145_sensor_suspend(struct device *dev)
|
|
+{
|
|
+ struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
|
+ struct gc2145_dev *sensor = to_gc2145_dev(sd);
|
|
+
|
|
+ mutex_lock(&sensor->lock);
|
|
+ if (sensor->streaming)
|
|
+ gc2145_set_stream(sensor, false);
|
|
+ mutex_unlock(&sensor->lock);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static int gc2145_sensor_resume(struct device *dev)
|
|
+{
|
|
+ struct v4l2_subdev *sd = dev_get_drvdata(dev);
|
|
+ struct gc2145_dev *sensor = to_gc2145_dev(sd);
|
|
+ int ret = 0;
|
|
+
|
|
+ mutex_lock(&sensor->lock);
|
|
+ if (sensor->streaming) {
|
|
+ ret = gc2145_set_stream(sensor, true);
|
|
+ if (ret) {
|
|
+ gc2145_set_stream(sensor, false);
|
|
+ sensor->streaming = false;
|
|
+ }
|
|
+ }
|
|
+ mutex_unlock(&sensor->lock);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+
|
|
+static const struct dev_pm_ops gc2145_pm_ops = {
|
|
+ SET_SYSTEM_SLEEP_PM_OPS(gc2145_sensor_suspend, gc2145_sensor_resume)
|
|
+};
|
|
+
|
|
static const struct i2c_device_id gc2145_id[] = {
|
|
{"gc2145", 0},
|
|
{},
|
|
@@ -2289,6 +2325,7 @@ static struct i2c_driver gc2145_i2c_driver = {
|
|
.driver = {
|
|
.name = "gc2145",
|
|
.of_match_table = gc2145_dt_ids,
|
|
+ .pm = &gc2145_pm_ops,
|
|
},
|
|
.id_table = gc2145_id,
|
|
.probe = gc2145_probe,
|
|
--
|
|
Armbian
|
|
|