Message ID | 1409322659-17693-5-git-send-email-pramod.gurav@smartplayin.com (mailing list archive) |
---|---|
State | Accepted, archived |
Headers | show |
On Fri 29 Aug 07:30 PDT 2014, Pramod Gurav wrote: > This patch adds support for reset functions to reboot the boards > with soc apq8064. > > CC: Linus Walleij <linus.walleij@linaro.org> > CC: Bjorn Andersson <bjorn.andersson@sonymobile.com> > CC: "Ivan T. Ivanov" <iivanov@mm-sol.com> > CC: Stephen Boyd <sboyd@codeaurora.org> > CC: Andy Gross <agross@codeaurora.org> > Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com> Thanks for the rework, that was fast :) Acked-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Bjorn, Thanks for review. :) On 30-08-2014 12:12 AM, Bjorn Andersson wrote: > On Fri 29 Aug 07:30 PDT 2014, Pramod Gurav wrote: > >> This patch adds support for reset functions to reboot the boards >> with soc apq8064. >> >> CC: Linus Walleij <linus.walleij@linaro.org> >> CC: Bjorn Andersson <bjorn.andersson@sonymobile.com> >> CC: "Ivan T. Ivanov" <iivanov@mm-sol.com> >> CC: Stephen Boyd <sboyd@codeaurora.org> >> CC: Andy Gross <agross@codeaurora.org> >> Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com> > > Thanks for the rework, that was fast :) > > Acked-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> > -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Aug 29, 2014 at 4:30 PM, Pramod Gurav <pramod.gurav@smartplayin.com> wrote: > This patch adds support for reset functions to reboot the boards > with soc apq8064. > > CC: Linus Walleij <linus.walleij@linaro.org> > CC: Bjorn Andersson <bjorn.andersson@sonymobile.com> > CC: "Ivan T. Ivanov" <iivanov@mm-sol.com> > CC: Stephen Boyd <sboyd@codeaurora.org> > CC: Andy Gross <agross@codeaurora.org> > Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com> OK patch applied with Björn's ACK. A bit dirty to have this in this driver, but who cares. Does the APQ8064 accompanying PMIC also have the ability to completely shut the system down? Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue 02 Sep 05:36 PDT 2014, Linus Walleij wrote: > A bit dirty to have this in this driver, but who cares. > Indeed, but we figured the taint was small enough to justify not creating cross-references to a separate driver. > Does the APQ8064 accompanying PMIC also have the ability to > completely shut the system down? > Upon flipping pshold the PMIC will perform either a reset or a shutdown of the system. Per Stephen's suggestion we can hook the control of this up with a reboot_notifier in a pmic driver, hence saving ourselves of a reference to (or from) the PMIC here. Regards, Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Aug 29, 2014 at 9:30 AM, Pramod Gurav <pramod.gurav@smartplayin.com> wrote: > > +static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl) > +{ > + int i = 0; > + const struct msm_function *func = pctrl->soc->functions; > + > + for (; i <= pctrl->soc->nfunctions; i++) Shouldn't this be i < pctrl->soc->nfunctions As it stands, if nfunctions == 0, this function crashes.
On 01/14/2015 03:38 PM, Timur Tabi wrote: > On Fri, Aug 29, 2014 at 9:30 AM, Pramod Gurav > <pramod.gurav@smartplayin.com> wrote: >> +static void msm_pinctrl_setup_pm_reset(struct msm_pinctrl *pctrl) >> +{ >> + int i = 0; >> + const struct msm_function *func = pctrl->soc->functions; >> + >> + for (; i <= pctrl->soc->nfunctions; i++) > Shouldn't this be > > i < pctrl->soc->nfunctions > > As it stands, if nfunctions == 0, this function crashes. > I think so. Can you send a patch? Plus it would be nice to move i = 0 in the for loop at the same time.
On Wed, Jan 14, 2015 at 5:44 PM, Stephen Boyd <sboyd@codeaurora.org> wrote: > > I think so. Can you send a patch? Plus it would be nice to move i = 0 in > the for loop at the same time. Sadly, Qualcomm policy makes that very cumbersome for me. I won't be able to send a patch any time soon.
diff --git a/drivers/pinctrl/qcom/pinctrl-apq8064.c b/drivers/pinctrl/qcom/pinctrl-apq8064.c index feb6f15..ef1263c 100644 --- a/drivers/pinctrl/qcom/pinctrl-apq8064.c +++ b/drivers/pinctrl/qcom/pinctrl-apq8064.c @@ -324,6 +324,7 @@ enum apq8064_functions { APQ_MUX_tsif1, APQ_MUX_tsif2, APQ_MUX_usb2_hsic, + APQ_MUX_ps_hold, APQ_MUX_NA, }; @@ -351,6 +352,9 @@ static const char * const gpio_groups[] = { "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84", "gpio85", "gpio86", "gpio87", "gpio88", "gpio89" }; +static const char * const ps_hold_groups[] = { + "gpio78" +}; static const char * const gsbi1_groups[] = { "gpio18", "gpio19", "gpio20", "gpio21" }; @@ -477,6 +481,7 @@ static const struct msm_function apq8064_functions[] = { FUNCTION(tsif1), FUNCTION(tsif2), FUNCTION(usb2_hsic), + FUNCTION(ps_hold), }; static const struct msm_pingroup apq8064_groups[] = { @@ -558,7 +563,7 @@ static const struct msm_pingroup apq8064_groups[] = { PINGROUP(75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), PINGROUP(76, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), PINGROUP(77, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), - PINGROUP(78, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), + PINGROUP(78, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA), PINGROUP(79, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), PINGROUP(80, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), PINGROUP(81, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c index 9175bbc..80a64ca 100644 --- a/drivers/pinctrl/qcom/pinctrl-msm.c +++ b/drivers/pinctrl/qcom/pinctrl-msm.c @@ -12,6 +12,7 @@ * GNU General Public License for more details. */ +#include <linux/delay.h> #include <linux/err.h> #include <linux/io.h> #include <linux/module.h> @@ -27,12 +28,15 @@ #include <linux/interrupt.h> #include <linux/spinlock.h> +#include <asm/system_misc.h> + #include "../core.h" #include "../pinconf.h" #include "pinctrl-msm.h" #include "../pinctrl-utils.h" #define MAX_NR_GPIO 300 +#define PS_HOLD_OFFSET 0x820 /** * struct msm_pinctrl - state for a pinctrl-msm device @@ -850,6 +854,30 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl) return 0; } +#ifdef CONFIG_ARM +static void __iomem *msm_ps_hold; + +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) +{ + int i = 0; + const struct msm_function *func = pctrl->soc->functions; + + for (; i <= pctrl->soc->nfunctions; i++) + if (!strcmp(func[i].name, "ps_hold")) { + 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) { @@ -873,6 +901,8 @@ int msm_pinctrl_probe(struct platform_device *pdev, if (IS_ERR(pctrl->regs)) return PTR_ERR(pctrl->regs); + msm_pinctrl_setup_pm_reset(pctrl); + pctrl->irq = platform_get_irq(pdev, 0); if (pctrl->irq < 0) { dev_err(&pdev->dev, "No interrupt defined for msmgpio\n");
This patch adds support for reset functions to reboot the boards with soc apq8064. CC: Linus Walleij <linus.walleij@linaro.org> CC: Bjorn Andersson <bjorn.andersson@sonymobile.com> CC: "Ivan T. Ivanov" <iivanov@mm-sol.com> CC: Stephen Boyd <sboyd@codeaurora.org> CC: Andy Gross <agross@codeaurora.org> Signed-off-by: Pramod Gurav <pramod.gurav@smartplayin.com> --- drivers/pinctrl/qcom/pinctrl-apq8064.c | 7 ++++++- drivers/pinctrl/qcom/pinctrl-msm.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletions(-)