* Rework patches for sunxi 5.15.4
* Rework patches sunxi for 5.15.5
* Kernel switch tag=v5.15.5 for sunxi EDGE
* Temporarily disabled, requires rework.
drivers/clk/sunxi-ng/sun8i-de33.c: In function ‘sunxi_de33_clk_probe’:
drivers/clk/sunxi-ng/sun8i-de33.c:155:8:
error: implicit declaration of function ‘sunxi_ccu_probe’;
did you mean ‘of_sunxi_ccu_probe’? [-Werror=implicit-function-declarati>
ret = sunxi_ccu_probe(pdev->dev.of_node, reg, ccu_desc);
^~~~~~~~~~~~~~~
of_sunxi_ccu_probe
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:277:
drivers/clk/sunxi-ng/sun8i-de33.o] Error 1
make[2]: *** [scripts/Makefile.build:540: drivers/clk/sunxi-ng] Error 2
* Correct the comment.
68 lines
2.1 KiB
Diff
68 lines
2.1 KiB
Diff
From 5dc1148fd8ed633fada7ea1783534c41724a3c09 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Sat, 2 Jan 2021 15:52:27 -0600
|
|
Subject: [PATCH 268/467] rtc: sun6i: Allow RTC wakeup after shutdown
|
|
|
|
Only IRQs that have enable_irq_wake() called on them can wake the system
|
|
from sleep or after it has been shut down. Currently, the RTC alarm can
|
|
only wake the system from sleep. Run the suspend callback to arm the IRQ
|
|
during the shutdown process, so the RTC alarm also works after shutdown.
|
|
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
---
|
|
drivers/rtc/rtc-sun6i.c | 10 +++++++---
|
|
1 file changed, 7 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/rtc/rtc-sun6i.c b/drivers/rtc/rtc-sun6i.c
|
|
index adec1b14a..e75020ab8 100644
|
|
--- a/drivers/rtc/rtc-sun6i.c
|
|
+++ b/drivers/rtc/rtc-sun6i.c
|
|
@@ -641,7 +641,6 @@ static const struct rtc_class_ops sun6i_rtc_ops = {
|
|
.alarm_irq_enable = sun6i_rtc_alarm_irq_enable
|
|
};
|
|
|
|
-#ifdef CONFIG_PM_SLEEP
|
|
/* Enable IRQ wake on suspend, to wake up from RTC. */
|
|
static int sun6i_rtc_suspend(struct device *dev)
|
|
{
|
|
@@ -654,7 +653,7 @@ static int sun6i_rtc_suspend(struct device *dev)
|
|
}
|
|
|
|
/* Disable IRQ wake on resume. */
|
|
-static int sun6i_rtc_resume(struct device *dev)
|
|
+static int __maybe_unused sun6i_rtc_resume(struct device *dev)
|
|
{
|
|
struct sun6i_rtc_dev *chip = dev_get_drvdata(dev);
|
|
|
|
@@ -663,7 +662,6 @@ static int sun6i_rtc_resume(struct device *dev)
|
|
|
|
return 0;
|
|
}
|
|
-#endif
|
|
|
|
static SIMPLE_DEV_PM_OPS(sun6i_rtc_pm_ops,
|
|
sun6i_rtc_suspend, sun6i_rtc_resume);
|
|
@@ -735,6 +733,11 @@ static int sun6i_rtc_probe(struct platform_device *pdev)
|
|
return 0;
|
|
}
|
|
|
|
+static void sun6i_rtc_shutdown(struct platform_device *pdev)
|
|
+{
|
|
+ sun6i_rtc_suspend(&pdev->dev);
|
|
+}
|
|
+
|
|
/*
|
|
* As far as RTC functionality goes, all models are the same. The
|
|
* datasheets claim that different models have different number of
|
|
@@ -755,6 +758,7 @@ MODULE_DEVICE_TABLE(of, sun6i_rtc_dt_ids);
|
|
|
|
static struct platform_driver sun6i_rtc_driver = {
|
|
.probe = sun6i_rtc_probe,
|
|
+ .shutdown = sun6i_rtc_shutdown,
|
|
.driver = {
|
|
.name = "sun6i-rtc",
|
|
.of_match_table = sun6i_rtc_dt_ids,
|
|
--
|
|
2.34.0
|
|
|