Skip to contentSkip to conversation

pinctrl: qcom: sc7180: Make gpio28 non wakeup capable

PATCH Superseded Rajendra Nayak 2 participants 2 messages Jun 15, 2020 – Jun 20, 2020

Subsystems (5)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pinctrl: qcom: sc7180: Make gpio28 non wakeup capable

The PDC irqchip driver currently does not handle dual-edge interrupts, and we have atleast one board with sc7180 designed to configure gpio28 as a dual-edge interrupt. This interrupt is however not expected to be wakeup capable, so an easy way to fix this, seems to be to make this gpio non wakeup capable and let TLMM handle it.

It would have been nice to be able to do this only for the particular board with this design, however this change of removing gpio28 from the pinctrl SoC file means we end up with one less wakeup capable gpio for the entire SoC.

---
 drivers/pinctrl/qcom/pinctrl-sc7180.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/pinctrl/qcom/pinctrl-sc7180.c +1 -1
index 1b6465a..3afcc01 100644
@@ -1122,7 +1122,7 @@ static const struct msm_pingroup sc7180_groups[] = {
 static const struct msm_gpio_wakeirq_map sc7180_pdc_map[] = {
 	{0, 40}, {3, 50}, {4, 42}, {5, 70}, {6, 41}, {9, 35},
 	{10, 80}, {11, 51}, {16, 20}, {21, 55}, {22, 90}, {23, 21},
-	{24, 61}, {26, 52}, {28, 36}, {30, 100}, {31, 33}, {32, 81},
+	{24, 61}, {26, 52}, {30, 100}, {31, 33}, {32, 81},
 	{33, 62}, {34, 43}, {36, 91}, {37, 53}, {38, 63}, {39, 72},
 	{41, 101}, {42, 7}, {43, 34}, {45, 73}, {47, 82}, {49, 17},
 	{52, 109}, {53, 102}, {55, 92}, {56, 56}, {57, 57}, {58, 83},
Signature · 2 lines
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
#1 lore raw
Quoted 4 lines · Rajendra Nayak

It would have been nice to be able to do this only for the particular board with this design, however this change of removing gpio28 from the pinctrl SoC file means we end up with one less wakeup capable gpio for the entire SoC.

Yeah but what about only removing it for this board in the driver then?

drivers/pinctrl/qcom/pinctrl-sc7180.c static const struct msm_pingroup sc7180_groups[] = { · line 1128

Quoted 9 lines
drivers/pinctrl/qcom/pinctrl-sc7180.c +1 -1
@@ -1122,7 +1122,7 @@ static const struct msm_pingroup sc7180_groups[] = {
 static const struct msm_gpio_wakeirq_map sc7180_pdc_map[] = {
        {0, 40}, {3, 50}, {4, 42}, {5, 70}, {6, 41}, {9, 35},
        {10, 80}, {11, 51}, {16, 20}, {21, 55}, {22, 90}, {23, 21},
-       {24, 61}, {26, 52}, {28, 36}, {30, 100}, {31, 33}, {32, 81},
+       {24, 61}, {26, 52}, {30, 100}, {31, 33}, {32, 81},
        {33, 62}, {34, 43}, {36, 91}, {37, 53}, {38, 63}, {39, 72},
        {41, 101}, {42, 7}, {43, 34}, {45, 73}, {47, 82}, {49, 17},
        {52, 109}, {53, 102}, {55, 92}, {56, 56}, {57, 57}, {58, 83},

Make a copy of this tuple-array and in sc7180_pinctrl_probe() set sc7180_pinctrl.wakeirq_map and .nwakeirq_map to something board specific like that:

if (of_machine_is_compatible("my,board")) {
    sc7180_pinctrl..wakeirq_map = ... ;
}

Yours,
Linus Walleij