On Fri, Oct 25, 2024 at 03:45:35PM -0400, Nícolas F. R. A. Prado wrote: > This series was motivated by the regression fixed by 166bf8af9122 > ("pinctrl: mediatek: common-v2: Fix broken bias-disable for > PULL_PU_PD_RSEL_TYPE"). A bug was introduced in the pinctrl_paris driver > which prevented certain pins from having their bias configured. > > Running this test on the mt8195-tomato platform with the test plan > included below[1] shows the test passing with the fix applied, but failing > without the fix: > > With fix: > $ ./gpio-setget-config.py > TAP version 13 > # Using test plan file: ./google,tomato.yaml > 1..3 > ok 1 pinctrl_paris.34.pull-up > ok 2 pinctrl_paris.34.pull-down > ok 3 pinctrl_paris.34.disabled > # Totals: pass:3 fail:0 xfail:0 xpass:0 skip:0 error:0 > > Without fix: > $ ./gpio-setget-config.py > TAP version 13 > # Using test plan file: ./google,tomato.yaml > 1..3 > # Bias doesn't match: Expected pull-up, read pull-down. > not ok 1 pinctrl_paris.34.pull-up > ok 2 pinctrl_paris.34.pull-down > # Bias doesn't match: Expected disabled, read pull-down. > not ok 3 pinctrl_paris.34.disabled > # Totals: pass:1 fail:2 xfail:0 xpass:0 skip:0 error:0 > > In order to achieve this, the first three patches expose bias > configuration through the GPIO API in the MediaTek pinctrl drivers, > notably, pinctrl_paris, patch 4 extends the gpio-mockup-cdev utility for > use by patch 5, and patch 5 introduces a new GPIO kselftest that takes a > test plan in YAML, which can be tailored per-platform to specify the > configurations to test, and sets and gets back each pin configuration to > verify that they match and thus that the driver is behaving as expected. > > Since the GPIO uAPI only allows setting the pin configuration, getting > it back is done through pinconf-pins in the pinctrl debugfs folder. > > The test currently only verifies bias but it would be easy to extend to > verify other pin configurations. > > The test plan YAML file can be customized for each use-case and is > platform-dependant. For that reason, only an example is included in > patch 3 and the user is supposed to provide their test plan. That said, > the aim is to collect test plans for ease of use at [2]. > > [1] This is the test plan used for mt8195-tomato: > > - label: "pinctrl_paris" > tests: > # Pin 34 has type MTK_PULL_PU_PD_RSEL_TYPE and is unused. > # Setting bias to MTK_PULL_PU_PD_RSEL_TYPE pins was fixed by > # 166bf8af9122 ("pinctrl: mediatek: common-v2: Fix broken bias-disable for PULL_PU_PD_RSEL_TYPE") > - pin: 34 > bias: "pull-up" > - pin: 34 > bias: "pull-down" > - pin: 34 > bias: "disabled" > > [2] https://github.com/kernelci/platform-test-parameters > > Signed-off-by: Nícolas F. R. A. Prado <nfraprado@xxxxxxxxxxxxx> > --- > Changes in v2: > - Added patches 2 and 3 enabling the extra GPIO pin configurations on > the other mediatek drivers: pinctrl-moore and pinctrl-mtk-common > - Tweaked function name in patch 1: > mtk_pinconf_set -> mtk_paris_pin_config_set, > to make it clear it is not a pinconf_ops > - Adjusted commit message to make it clear the current support is > limited to pins supported by the EINT controller > - Link to v1: https://lore.kernel.org/r/20240909-kselftest-gpio-set-get-config-v1-0-16a065afc3c1@xxxxxxxxxxxxx > > --- > Nícolas F. R. A. Prado (5): > pinctrl: mediatek: paris: Expose more configurations to GPIO set_config > pinctrl: mediatek: moore: Expose more configurations to GPIO set_config > pinctrl: mediatek: common: Expose more configurations to GPIO set_config I forgot to mention that I don't have hardware that uses the moore or the common drivers, so I'm not able to runtime test patches 2 and 3. So help with that is appreciated. Thanks, Nícolas > selftest: gpio: Add wait flag to gpio-mockup-cdev > selftest: gpio: Add a new set-get config test > > drivers/pinctrl/mediatek/pinctrl-moore.c | 283 +++++++++++---------- > drivers/pinctrl/mediatek/pinctrl-mtk-common.c | 48 ++-- > drivers/pinctrl/mediatek/pinctrl-paris.c | 26 +- > tools/testing/selftests/gpio/Makefile | 2 +- > tools/testing/selftests/gpio/gpio-mockup-cdev.c | 14 +- > .../gpio-set-get-config-example-test-plan.yaml | 15 ++ > .../testing/selftests/gpio/gpio-set-get-config.py | 183 +++++++++++++ > 7 files changed, 395 insertions(+), 176 deletions(-) > --- > base-commit: a39230ecf6b3057f5897bc4744a790070cfbe7a8 > change-id: 20240906-kselftest-gpio-set-get-config-6e5bb670c1a5 > > Best regards, > -- > Nícolas F. R. A. Prado <nfraprado@xxxxxxxxxxxxx> >