Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pinctrl: qcom: sdm670: add pdc wakeirq map

The PDC was hooked up as a wakeup parent in the DTS in
commit 71f080633d1e ("arm64: dts: qcom: sdm670: Hook up PDC as
wakeup-parent of TLMM"), but the wakeirq mapping was not defined so it
had no effect. Add the mapping for wakeup interrupts on the PDC to their
corresponding pins.

Configuring a pin IRQ as dual-edge would break it unless the
wakeirq_dual_edge_errata flag is set.

Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Link: https://lore.kernel.org/r/20240523230619.256882-2-mailingradian@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Richard Acayan and committed by
Linus Walleij
d85e2ccd 7f53a8ee

+19
+19
drivers/pinctrl/qcom/pinctrl-sdm670.c
··· 1290 1290 58, 59, 60, 61, 62, 63, 64, 69, 70, 71, 72, 73, 74, 104, -1 1291 1291 }; 1292 1292 1293 + static const struct msm_gpio_wakeirq_map sdm670_pdc_map[] = { 1294 + { 1, 30 }, { 3, 31 }, { 5, 32 }, { 10, 33 }, { 11, 34 }, 1295 + { 20, 35 }, { 22, 36 }, { 24, 37 }, { 26, 38 }, { 30, 39 }, 1296 + { 31, 117 }, { 32, 41 }, { 34, 42 }, { 36, 43 }, { 37, 44 }, 1297 + { 38, 45 }, { 39, 46 }, { 40, 47 }, { 41, 115 }, { 43, 49 }, 1298 + { 44, 50 }, { 46, 51 }, { 48, 52 }, { 49, 118 }, { 52, 54 }, 1299 + { 53, 55 }, { 54, 56 }, { 56, 57 }, { 57, 58 }, { 66, 66 }, 1300 + { 68, 67 }, { 77, 70 }, { 78, 71 }, { 79, 72 }, { 80, 73 }, 1301 + { 84, 74 }, { 85, 75 }, { 86, 76 }, { 88, 77 }, { 89, 116 }, 1302 + { 91, 79 }, { 92, 80 }, { 95, 81 }, { 96, 82 }, { 97, 83 }, 1303 + { 101, 84 }, { 103, 85 }, { 115, 90 }, { 116, 91 }, { 117, 92 }, 1304 + { 118, 93 }, { 119, 94 }, { 120, 95 }, { 121, 96 }, { 122, 97 }, 1305 + { 123, 98 }, { 124, 99 }, { 125, 100 }, { 127, 102 }, { 128, 103 }, 1306 + { 129, 104 }, { 130, 105 }, { 132, 106 }, { 133, 107 }, { 145, 108 }, 1307 + }; 1308 + 1293 1309 static const struct msm_pinctrl_soc_data sdm670_pinctrl = { 1294 1310 .pins = sdm670_pins, 1295 1311 .npins = ARRAY_SIZE(sdm670_pins), ··· 1315 1299 .ngroups = ARRAY_SIZE(sdm670_groups), 1316 1300 .ngpios = 151, 1317 1301 .reserved_gpios = sdm670_reserved_gpios, 1302 + .wakeirq_map = sdm670_pdc_map, 1303 + .nwakeirq_map = ARRAY_SIZE(sdm670_pdc_map), 1304 + .wakeirq_dual_edge_errata = true, 1318 1305 }; 1319 1306 1320 1307 static int sdm670_pinctrl_probe(struct platform_device *pdev)