summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>2017-05-21 23:54:46 +0900
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2017-05-25 13:47:07 +0000
commit5b5a54b60f45e67d647cf6cc0fe2b879b2bb8229 (patch)
tree8659c462147b5ebe016155e071469a10bcff02a5
parent65abb1fc7a003814d5d32f1bb7d7e0d55c8de1df (diff)
Add s3ctl Hibernation code for porter board.
This patch set is a support to Hibernation for a porter board. I've commit with Hibernation Off patch, because it depends strongly on user land. If you can use Hibernation, Please add local.conf agl-porter-hibernate. OVERRIDES .= ":agl-porter-hibernate" DISTRO_FEATURES_append = " agl-porter-hibernate" Change-Id: I06dfe57abf8ff8c79151e4f15432b5445a7811e2 Signed-off-by: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com> Reviewed-on: https://gerrit.automotivelinux.org/gerrit/9447 Tested-by: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-build: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> ci-image-boot-test: Jenkins Job builder account <agl-jobbuilder@automotivelinux.org> Reviewed-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
-rw-r--r--meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/files/0001-Add-s3ctl-hibernation-code.patch101
-rw-r--r--meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/s3ctl-kernel-module.bbappend4
2 files changed, 105 insertions, 0 deletions
diff --git a/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/files/0001-Add-s3ctl-hibernation-code.patch b/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/files/0001-Add-s3ctl-hibernation-code.patch
new file mode 100644
index 000000000..b5d9050b2
--- /dev/null
+++ b/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/files/0001-Add-s3ctl-hibernation-code.patch
@@ -0,0 +1,101 @@
+From 03253eae0da9a84e343a8f21c65ac07196369420 Mon Sep 17 00:00:00 2001
+From: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
+Date: Sun, 21 May 2017 23:08:52 +0900
+Subject: [PATCH] Add s3ctl hibernation code
+
+Signed-off-by: Yuichi Kusakabe <yuichi.kusakabe@jp.fujitsu.com>
+---
+ drv/s3ctl_drv.c | 50 ++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 38 insertions(+), 12 deletions(-)
+
+diff --git a/drv/s3ctl_drv.c b/drv/s3ctl_drv.c
+index a7b4bee..6640a49 100755
+--- a/drv/s3ctl_drv.c
++++ b/drv/s3ctl_drv.c
+@@ -66,6 +66,7 @@
+ #include <linux/ioctl.h>
+ #include <linux/slab.h>
+ #include <linux/dma-mapping.h>
++#include <linux/suspend.h>
+
+ #include "s3ctl_private.h"
+
+@@ -332,19 +333,10 @@ static struct miscdevice misc = {
+ .fops = &fops,
+ };
+
+-
+-static int s3ctrl_init(void)
++static int s3ctl_initialize(void)
+ {
+- int ret;
+- unsigned int product;
+- unsigned int es;
+-
+- ret = map_register();
+- if (ret != 0) {
+- printk(KERN_ERR "S3D map_register() NG\n");
+- return -1;
+- }
+-
++ int product;
++ int es;
+ product = S3_PRR_PRODUCTMASK & ioread32((void *)top_prr);
+ es = S3_PRR_ESMASK & ioread32((void *)top_prr);
+ if (product == S3_PRR_H2) {
+@@ -366,11 +358,44 @@ static int s3ctrl_init(void)
+ set_xymodeconf(S3_XYMODE_VAL_NEW);
+ } else
+ set_xymodeconf(S3_XYMODE_VAL_NEW);
++ return 0;
++}
++
++static int s3ctl_cpu_pm_notify(struct notifier_block *self,
++ unsigned long action, void *hcpu)
++{
++ if (action == PM_HIBERNATION_PREPARE)
++ ;
++ else if (action == PM_POST_HIBERNATION) {
++ pr_info("%s: hibernation finished: %ld\n", __func__, action);
++ s3ctl_initialize();
++ }
++ return NOTIFY_DONE;
++}
++
++static struct notifier_block s3ctl_pm_notifier_block = {
++ .notifier_call = s3ctl_cpu_pm_notify,
++};
++
++static int s3ctrl_init(void)
++{
++ int ret;
++ unsigned int product;
++ unsigned int es;
++
++ ret = map_register();
++ if (ret != 0) {
++ printk(KERN_ERR "S3D map_register() NG\n");
++ return -1;
++ }
++ s3ctl_initialize();
+
+ misc_register(&misc);
+
+ spin_lock_init(&lock);
+
++ register_pm_notifier(&s3ctl_pm_notifier_block);
++
+ return 0;
+ }
+
+@@ -379,6 +404,7 @@ static void s3ctrl_exit(void)
+ misc_deregister(&misc);
+
+ unmap_register();
++ unregister_pm_notifier(&s3ctl_pm_notifier_block);
+ }
+
+ module_init(s3ctrl_init);
+--
+1.8.3.1
+
diff --git a/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/s3ctl-kernel-module.bbappend b/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/s3ctl-kernel-module.bbappend
new file mode 100644
index 000000000..172418402
--- /dev/null
+++ b/meta-agl-bsp/meta-renesas/recipes-kernel/s3ctl-module/s3ctl-kernel-module.bbappend
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := '${THISDIR}/files:'
+SRC_URI_append_agl-porter-hibernate = " file://0001-Add-s3ctl-hibernation-code.patch \
+ "
+