armbian_build/patch/kernel/archive/sunxi-6.6/patches.megous/gnss-ubx-Send-soft-powerdown-message-on-suspend.patch
Gunjan Gupta d1186b8a0e kernel: sunxi: Add patches for 6.6 kernel
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
2023-10-30 22:58:11 +05:30

65 lines
1.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Wed, 23 Oct 2019 05:08:35 +0200
Subject: gnss: ubx: Send soft powerdown message on suspend
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/gnss/ubx.c | 35 ++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/gnss/ubx.c b/drivers/gnss/ubx.c
index c951be202ca2..6f09229da095 100644
--- a/drivers/gnss/ubx.c
+++ b/drivers/gnss/ubx.c
@@ -33,11 +33,46 @@ static int ubx_set_active(struct gnss_serial *gserial)
return 0;
}
+// RXM-PMREQ
+static const u8 ubx_suspend_packet[] = {
+ 0xb5, 0x62, // 'ub'
+ 0x02, 0x41, // message class and id
+ 0x08, 0x00, // message length
+ 0x00, 0x00, 0x00, 0x00, // duration (0 == infinite)
+ 0x02, 0x00, 0x00, 0x00, // flags (backup)
+ 0x4d, 0x3b, // checksum
+};
+
static int ubx_set_standby(struct gnss_serial *gserial)
{
struct ubx_data *data = gnss_serial_get_drvdata(gserial);
int ret;
+#if 0
+ struct serdev_device *serdev = gserial->serdev;
+
+ // we can't know what state the device is in, so first make sure
+ // it's woken up by writing a zero byte to it and then suspend it
+ // for sure
+
+ ret = serdev_device_write(serdev, "", 1, MAX_SCHEDULE_TIMEOUT);
+ if (ret < 0)
+ return ret;
+
+ serdev_device_wait_until_sent(serdev, 0);
+
+ // wait for wakeup
+ mdelay(100);
+
+ ret = serdev_device_write(serdev, ubx_suspend_packet,
+ sizeof(ubx_suspend_packet),
+ MAX_SCHEDULE_TIMEOUT);
+ if (ret < 0 || ret < sizeof(ubx_suspend_packet))
+ return ret;
+
+ serdev_device_wait_until_sent(serdev, 0);
+#endif
+
ret = regulator_disable(data->vcc);
if (ret)
return ret;
--
Armbian