diff options
Diffstat (limited to 'Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch')
-rw-r--r-- | Revert-pinctrl-qcom-use-restart_notifier-mechanism-f.patch | 93 |
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 + |