pinctrl: qcom: sc7180: Make gpio28 non wakeup capable
Subsystems (5)
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
@@ -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
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