66 lines
1.9 KiB
Diff
66 lines
1.9 KiB
Diff
From d0520a166cdeccf2821a45483602fc24a1772569 Mon Sep 17 00:00:00 2001
|
|
From: Alex Gonzalez <alex.gonzalez@digi.com>
|
|
Date: Fri, 20 Apr 2018 20:20:30 +0200
|
|
Subject: [PATCH] mach-imx: pm-imx6: Add hooks for board specific
|
|
implementation
|
|
|
|
This commit implements two new pm hooks in pm_imx6.c (begin & end) that,
|
|
optionally, can be implemented by the platform code.
|
|
This is needed on platforms like the CC6UL where the i.MX6UL has to
|
|
notify the MCA when suspending the system or resuming from suspend.
|
|
|
|
Signed-off-by: Alex Gonzalez <alex.gonzalez@digi.com>
|
|
Signed-off-by: Pedro Perez de Heredia <pedro.perez@digi.com>
|
|
---
|
|
arch/arm/mach-imx/pm-imx6.c | 24 ++++++++++++++++++++++++
|
|
1 file changed, 24 insertions(+)
|
|
|
|
diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c
|
|
index 87f45b926c78..1a4d1ea92687 100644
|
|
--- a/arch/arm/mach-imx/pm-imx6.c
|
|
+++ b/arch/arm/mach-imx/pm-imx6.c
|
|
@@ -69,6 +69,14 @@ static void __iomem *suspend_ocram_base;
|
|
static void (*imx6_suspend_in_ocram_fn)(void __iomem *ocram_vbase);
|
|
|
|
/*
|
|
+ * Function pointers to optional board pm functions
|
|
+ */
|
|
+int (*imx6_board_pm_begin)(suspend_state_t);
|
|
+void (*imx6_board_pm_end)(void);
|
|
+EXPORT_SYMBOL(imx6_board_pm_begin);
|
|
+EXPORT_SYMBOL(imx6_board_pm_end);
|
|
+
|
|
+/*
|
|
* suspend ocram space layout:
|
|
* ======================== high address ======================
|
|
* .
|
|
@@ -427,12 +435,28 @@ static int imx6q_pm_enter(suspend_state_t state)
|
|
return 0;
|
|
}
|
|
|
|
+static int imx6q_pm_begin(suspend_state_t state)
|
|
+{
|
|
+ if (imx6_board_pm_begin)
|
|
+ return imx6_board_pm_begin(state);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+static void imx6q_pm_end(void)
|
|
+{
|
|
+ if (imx6_board_pm_end)
|
|
+ imx6_board_pm_end();
|
|
+}
|
|
+
|
|
static int imx6q_pm_valid(suspend_state_t state)
|
|
{
|
|
return (state == PM_SUSPEND_STANDBY || state == PM_SUSPEND_MEM);
|
|
}
|
|
|
|
static const struct platform_suspend_ops imx6q_pm_ops = {
|
|
+ .begin = imx6q_pm_begin,
|
|
+ .end = imx6q_pm_end,
|
|
.enter = imx6q_pm_enter,
|
|
.valid = imx6q_pm_valid,
|
|
};
|