Blob Blame History Raw
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Wed, 8 Oct 2014 19:10:10 -0400
Subject: [PATCH] Revert "pinctrl: qcom: use restart_notifier mechanism for
 ps_hold"

This reverts commit cf1fc187628913070c3e418ce0e205732435aa2f.
---
 drivers/pinctrl/qcom/pinctrl-msm.c | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index e730935fa457..c57ca10bed20 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -27,7 +27,8 @@
 #include <linux/gpio.h>
 #include <linux/interrupt.h>
 #include <linux/spinlock.h>
-#include <linux/reboot.h>
+
+#include <asm/system_misc.h>
 
 #include "../core.h"
 #include "../pinconf.h"
@@ -42,7 +43,6 @@
  * @dev:            device handle.
  * @pctrl:          pinctrl handle.
  * @chip:           gpiochip handle.
- * @restart_nb:     restart notifier block.
  * @irq:            parent irq for the TLMM irq_chip.
  * @lock:           Spinlock to protect register resources as well
  *                  as msm_pinctrl data structures.
@@ -56,7 +56,6 @@ struct msm_pinctrl {
 	struct device *dev;
 	struct pinctrl_dev *pctrl;
 	struct gpio_chip chip;
-	struct notifier_block restart_nb;
 	int irq;
 
 	spinlock_t lock;
@@ -853,14 +852,13 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
 	return 0;
 }
 
-static int msm_ps_hold_restart(struct notifier_block *nb, unsigned long action,
-			       void *data)
-{
-	struct msm_pinctrl *pctrl = container_of(nb, struct msm_pinctrl, restart_nb);
+#ifdef CONFIG_ARM
+static void __iomem *msm_ps_hold;
 
-	writel(0, pctrl->regs + PS_HOLD_OFFSET);
-	mdelay(1000);
-	return NOTIFY_DONE;
+static void msm_reset(enum reboot_mode reboot_mode, const char *cmd)
+{
+	writel(0, msm_ps_hold);
+	mdelay(10000);
 }
 
 static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl)
@@ -870,14 +868,13 @@ static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl)
 
 	for (; i <= pctrl->soc->nfunctions; i++)
 		if (!strcmp(func[i].name, "ps_hold")) {
-			pctrl->restart_nb.notifier_call = msm_ps_hold_restart;
-			pctrl->restart_nb.priority = 128;
-			if (register_restart_handler(&pctrl->restart_nb))
-				dev_err(pctrl->dev,
-					"failed to setup restart handler.\n");
-			break;
+			msm_ps_hold = pctrl->regs + PS_HOLD_OFFSET;
+			arm_pm_restart = msm_reset;
 		}
 }
+#else
+static void msm_pinctrl_setup_pm_reset(const struct msm_pinctrl *pctrl) {}
+#endif
 
 int msm_pinctrl_probe(struct platform_device *pdev,
 		      const struct msm_pinctrl_soc_data *soc_data)
@@ -940,8 +937,6 @@ int msm_pinctrl_remove(struct platform_device *pdev)
 	gpiochip_remove(&pctrl->chip);
 	pinctrl_unregister(pctrl->pctrl);
 
-	unregister_restart_handler(&pctrl->restart_nb);
-
 	return 0;
 }
 EXPORT_SYMBOL(msm_pinctrl_remove);
-- 
1.9.3