From: Josh Boyer 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 #include #include -#include + +#include #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