This adds support for wake sources in pinctrl-mtk-common-v2, and
pinctrl-mt8183. Without this patch, all interrupts that are left
enabled on suspend act as wake sources (and wake sources without
interrupt enabled do not).
Changes since v1:
- Move changes from mtk-common-v2 to mtk-pinctrl-paris, as
recommended by Sean, to keep better separation between eint
and pinctrl-common features.
Nicolas Boichat (2):
pinctrl: mediatek: Add pm_ops to pinctrl-paris
pinctrl: mediatek: mt8183: Add mtk_pinctrl_paris_pm_ops
drivers/pinctrl/mediatek/pinctrl-mt8183.c | 1 +
drivers/pinctrl/mediatek/pinctrl-paris.c | 19 +++++++++++++++++++
drivers/pinctrl/mediatek/pinctrl-paris.h | 2 ++
3 files changed, 22 insertions(+)
--
2.21.0.1020.gf2820cf01a-goog
Setting this up will configure wake from suspend properly,
and wake only for the interrupts that are setup in wake_mask,
not all interrupts.
Signed-off-by: Nicolas Boichat <[email protected]>
---
drivers/pinctrl/mediatek/pinctrl-mt8183.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pinctrl/mediatek/pinctrl-mt8183.c b/drivers/pinctrl/mediatek/pinctrl-mt8183.c
index 2c7409ed16fae9c..9a74d5025be648d 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mt8183.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mt8183.c
@@ -583,6 +583,7 @@ static struct platform_driver mt8183_pinctrl_driver = {
.driver = {
.name = "mt8183-pinctrl",
.of_match_table = mt8183_pinctrl_of_match,
+ .pm = &mtk_paris_pinctrl_pm_ops,
},
.probe = mt8183_pinctrl_probe,
};
--
2.21.0.1020.gf2820cf01a-goog
pinctrl variants that include pinctrl-paris.h (and not
pinctrl-mtk-common.h) also need to use pm_ops to setup
wake mask properly, so copy over the pm_ops from common
to paris variant.
It is not easy to merge the 2 copies (or move
mtk_eint_suspend/resume to mtk-eint.c), as we need to
dereference pctrl->eint, and struct mtk_pinctrl *pctl has a
different structure definition for v1 and v2 (which is
what paris variant uses).
Signed-off-by: Nicolas Boichat <[email protected]>
---
drivers/pinctrl/mediatek/pinctrl-paris.c | 19 +++++++++++++++++++
drivers/pinctrl/mediatek/pinctrl-paris.h | 2 ++
2 files changed, 21 insertions(+)
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.c b/drivers/pinctrl/mediatek/pinctrl-paris.c
index d3b34e9a7507ec6..923264d0e9ef2c5 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
@@ -926,3 +926,22 @@ int mtk_paris_pinctrl_probe(struct platform_device *pdev,
return 0;
}
+
+static int mtk_paris_pinctrl_suspend(struct device *device)
+{
+ struct mtk_pinctrl *pctl = dev_get_drvdata(device);
+
+ return mtk_eint_do_suspend(pctl->eint);
+}
+
+static int mtk_paris_pinctrl_resume(struct device *device)
+{
+ struct mtk_pinctrl *pctl = dev_get_drvdata(device);
+
+ return mtk_eint_do_resume(pctl->eint);
+}
+
+const struct dev_pm_ops mtk_paris_pinctrl_pm_ops = {
+ .suspend_noirq = mtk_paris_pinctrl_suspend,
+ .resume_noirq = mtk_paris_pinctrl_resume,
+};
diff --git a/drivers/pinctrl/mediatek/pinctrl-paris.h b/drivers/pinctrl/mediatek/pinctrl-paris.h
index 37146caa667d8c8..3d43771074e6de0 100644
--- a/drivers/pinctrl/mediatek/pinctrl-paris.h
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.h
@@ -60,4 +60,6 @@
int mtk_paris_pinctrl_probe(struct platform_device *pdev,
const struct mtk_pin_soc *soc);
+extern const struct dev_pm_ops mtk_paris_pinctrl_pm_ops;
+
#endif /* __PINCTRL_PARIS_H */
--
2.21.0.1020.gf2820cf01a-goog
On Wed, May 8, 2019 at 9:33 AM Nicolas Boichat <[email protected]> wrote:
> This adds support for wake sources in pinctrl-mtk-common-v2, and
> pinctrl-mt8183. Without this patch, all interrupts that are left
> enabled on suspend act as wake sources (and wake sources without
> interrupt enabled do not).
>
> Changes since v1:
> - Move changes from mtk-common-v2 to mtk-pinctrl-paris, as
> recommended by Sean, to keep better separation between eint
> and pinctrl-common features.
>
> Nicolas Boichat (2):
> pinctrl: mediatek: Add pm_ops to pinctrl-paris
> pinctrl: mediatek: mt8183: Add mtk_pinctrl_paris_pm_ops
All seems to look fair to me, but I need some official ACK from
Sean on these.
I see there is some discussion on a related patch set which
also has two patches so I am a but confused how mature the
two patch sets are? Are they at all related?
Yours,
Linus Walleij
On Thu, May 16, 2019 at 7:55 PM Linus Walleij <[email protected]> wrote:
>
> On Wed, May 8, 2019 at 9:33 AM Nicolas Boichat <[email protected]> wrote:
>
> > This adds support for wake sources in pinctrl-mtk-common-v2, and
> > pinctrl-mt8183. Without this patch, all interrupts that are left
> > enabled on suspend act as wake sources (and wake sources without
> > interrupt enabled do not).
> >
> > Changes since v1:
> > - Move changes from mtk-common-v2 to mtk-pinctrl-paris, as
> > recommended by Sean, to keep better separation between eint
> > and pinctrl-common features.
> >
> > Nicolas Boichat (2):
> > pinctrl: mediatek: Add pm_ops to pinctrl-paris
> > pinctrl: mediatek: mt8183: Add mtk_pinctrl_paris_pm_ops
>
> All seems to look fair to me, but I need some official ACK from
> Sean on these.
>
> I see there is some discussion on a related patch set which
> also has two patches so I am a but confused how mature the
> two patch sets are? Are they at all related?
They are somewhat related, but I don't think this depends on the other series.
This series adds support for wake on mt8183, and makes it similar to,
say, mt8173.
The other patch series fixes issues that affect all mtk pinctrl
variants (i.e. I think mt8173 pinctrl on current mainline has similar
issues). It's not impossible that the answer to the other series is
that we need to refactor code, but in that case, if we merge this
first, we'd just have to clean up one more pinctrl variant.
Thanks,
> Yours,
> Linus Walleij
On Thu, May 16, 2019 at 4:56 AM Linus Walleij <[email protected]> wrote:
>
> On Wed, May 8, 2019 at 9:33 AM Nicolas Boichat <[email protected]> wrote:
>
> > This adds support for wake sources in pinctrl-mtk-common-v2, and
> > pinctrl-mt8183. Without this patch, all interrupts that are left
> > enabled on suspend act as wake sources (and wake sources without
> > interrupt enabled do not).
> >
> > Changes since v1:
> > - Move changes from mtk-common-v2 to mtk-pinctrl-paris, as
> > recommended by Sean, to keep better separation between eint
> > and pinctrl-common features.
> >
> > Nicolas Boichat (2):
> > pinctrl: mediatek: Add pm_ops to pinctrl-paris
> > pinctrl: mediatek: mt8183: Add mtk_pinctrl_paris_pm_ops
>
> All seems to look fair to me, but I need some official ACK from
> Sean on these.
>
sure, it looks good to me and thanks for Nicolas' help
Acked-by: Sean Wang <[email protected]>
> I see there is some discussion on a related patch set which
> also has two patches so I am a but confused how mature the
> two patch sets are? Are they at all related?
>
> Yours,
> Linus Walleij
On Wed, May 8, 2019 at 9:33 AM Nicolas Boichat <[email protected]> wrote:
> This adds support for wake sources in pinctrl-mtk-common-v2, and
> pinctrl-mt8183. Without this patch, all interrupts that are left
> enabled on suspend act as wake sources (and wake sources without
> interrupt enabled do not).
>
> Changes since v1:
> - Move changes from mtk-common-v2 to mtk-pinctrl-paris, as
> recommended by Sean, to keep better separation between eint
> and pinctrl-common features.
Both patches applied with Sean's ACK!
Yours,
Linus Walleij