summaryrefslogtreecommitdiffstats
path: root/Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch')
-rw-r--r--Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch b/Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch
new file mode 100644
index 000000000..8ac29de0e
--- /dev/null
+++ b/Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch
@@ -0,0 +1,93 @@
+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 d30dddd21323..d5ed1272b928 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)
+@@ -946,8 +943,6 @@ int msm_pinctrl_remove(struct platform_device *pdev)
+
+ pinctrl_unregister(pctrl->pctrl);
+
+- unregister_restart_handler(&pctrl->restart_nb);
+-
+ return 0;
+ }
+ EXPORT_SYMBOL(msm_pinctrl_remove);
+--
+1.9.3
+