Skip to content

gpiolib: acpi: pin configuration fixes

Andy Shevchenko linux-gpio 7 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v7 Latest18 patches 11 repliesIn review
  2. v618 patches 3 repliesSuperseded
  3. v517 patches 26 repliesSuperseded
Earlier versions · 4
VersionPostedPatchesRepliesStatus
v49 patches7 repliesSuperseded
v34 patches3 repliesSuperseded
v23 patches8 repliesSuperseded
v13 patches6 repliesSuperseded

Changes in v7 from the cover letter

- sent correct set of patches

Patches in v7 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/18gpiolib: Replace unsigned by unsigned intdrivers/gpio/gpiolib.c include/linux/gpio/consumer.h+10 -100 replies
2/18gpiolib: add missed break statementdrivers/gpio/gpiolib.c+1 -00 replies
3/18gpiolib: use proper API to pack pin configuration parametersdrivers/gpio/gpiolib.c+1 -10 replies
4/18gpiolib: Extract gpio_set_config_with_argument() for future usedrivers/gpio/gpiolib.c+11 -30 replies
5/18gpiolib: move bias related code from gpio_set_config() to gpio_set_bias()drivers/gpio/gpiolib.c+14 -150 replies
6/18gpiolib: Extract gpio_set_config_with_argument_optional() helperdrivers/gpio/gpiolib.c+27 -260 replies
7/18gpiolib: Introduce gpio_set_debounce_timeout() for internal usedrivers/gpio/gpiolib.c drivers/gpio/gpiolib.h+8 -05 replies
8/18gpiolib: acpi: Respect bias settings for GpioInt() resourcedrivers/gpio/gpiolib-acpi.c+5 -10 replies
9/18gpiolib: acpi: Use named item for enum gpiod_flags variabledrivers/gpio/gpiolib-acpi.c+1 -10 replies
10/18gpiolib: acpi: Take into account debounce settingsdrivers/gpio/gpiolib-acpi.c drivers/gpio/gpiolib-acpi.h+20 -00 replies
11/18gpiolib: acpi: Move non-critical code outside of critical sectiondrivers/gpio/gpiolib-acpi.c+2 -21 reply
12/18gpiolib: acpi: Move acpi_gpio_to_gpiod_flags() upper in the codedrivers/gpio/gpiolib-acpi.c+33 -330 replies
13/18gpiolib: acpi: Set initial value for output pin based on bias and polaritydrivers/gpio/gpiolib-acpi.c+12 -91 reply
14/18gpiolib: acpi: Make acpi_gpio_to_gpiod_flags() usable for GpioInt()drivers/gpio/gpiolib-acpi.c+6 -20 replies
15/18gpiolib: acpi: Extract acpi_request_own_gpiod() helperdrivers/gpio/gpiolib-acpi.c+24 -220 replies
16/18gpiolib: acpi: Convert pin_index to be u16drivers/gpio/gpiolib-acpi.c+5 -50 replies
17/18gpiolib: acpi: Use BIT() macro to increase readabilitydrivers/gpio/gpiolib-acpi.c+1 -20 replies
18/18gpiolib: acpi: Make Intel GPIO tree official for GPIO ACPI workMAINTAINERS+1 -00 replies

Reviews trailers per patch

17 of 18 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchHans de GoedeMika WesterbergLinus Walleij
SeriesA-b
1/18R-b R-b
2/18R-b R-b
3/18R-b R-b
4/18R-b R-b
5/18R-b R-b
6/18R-b R-b
7/18R-b
8/18R-b R-b A-b
9/18R-b R-b A-b
10/18R-b R-b A-b
11/18R-b
12/18R-b R-b
13/18R-b
14/18R-b R-b
15/18R-b R-b
16/18R-b R-b A-b
17/18R-b R-b
18/18

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v7 thread

Cover letter [PATCH v7 00/18] gpiolib: acpi: pin configuration fixes

There are fixes (and plenty cleanups) that allow to take into consideration more parameters in ACPI, i.e. bias for GpioInt() and debounce timeout for Operation Regions, Events and GpioInt() resources.

During review Hans noted, that gpiod_set_debounce() returns -ENOTSUPP for the cases when feature is not supported either by driver or a controller.

It appears that we have slightly messy API here:

FUNC Relation with ENOTSUPP

gpiod_set_config() returns if not supported
gpiod_set_debounce() as gpiod_set_config() above
gpio_set_debounce() legacy wrapper on top of gpiod_set_debounce()
gpiod_set_transitory() skips it (returns okay) with debug message
gpio_set_config() returns if not supported
gpio_set_bias() skips it (returns okay)

Last two functions are internal to GPIO library, while the rest is exported API. In order to be consistent with both naming schemas the series introduces gpio_set_debounce_timeout() that considers the feature optional. New API is only for internal use.

While at it, the few first patches clean up the current GPIO library code to unify it to some extend.

The above is followed by changes made in ACPI GPIO library part.

The bias patch highly depends on Intel pin control driver changes (they are material for v5.10 [1]), due to this and amount of the prerequisite changes this series is probably not supposed to be backported (at least right now).

The last patch adds Intel GPIO tree as official one for ACPI GPIO changes.

Assuming [1] makes v5.10 this series can be sent as PR to Linus for v5.11 cycle.

Note, some patches are also depend to the code from GPIO fixes / for-next repositories. Unfortunately there is no one repository which contains all up to date for-next changes against GPIO subsystem. That's why I have merged Linus' for-next followed by Bart's for-next branches as prerequisites to the series.

Cc Jamie McClymont <[email protected]>
Cc Coiby Xu <[email protected]>
Cc Vasile-Laurentiu Stanimir <[email protected]>

[1]: https://lore.kernel.org/linux-gpio/[email protected]/

Changelog v7:
- sent correct set of patches

Changelog v6:
- added tags (Hans, Mika, Linus)
- dropped temporary variables in couple of patches (Mika)
- dropped "Add temporary variable to gpiod_set_transitory()..." (Mika)
- added patch to move assignments outside a lock (Mika)
- added patch from Vasile
- due to above rebased accordingly the affected ones

Changelog v5:
- introduced gpio_set_debounce_timeout()
- made a prerequisite refactoring in GPIO library code
- updated the rest accordingly

Changelog v4:
- extended debounce setting to ACPI events and Operation Regions
- added Ack (Linus)
- added few more cleanup patches, including MAINTAINERS update

Changelog v3:
- dropped upstreamed OF patch
- added debounce fix

Andy Shevchenko (17):
gpiolib: Replace unsigned by unsigned int
gpiolib: add missed break statement
gpiolib: use proper API to pack pin configuration parameters
gpiolib: Extract gpio_set_config_with_argument() for future use
gpiolib: move bias related code from gpio_set_config() to

    gpio_set_bias()

gpiolib: Extract gpio_set_config_with_argument_optional() helper
gpiolib: Introduce gpio_set_debounce_timeout() for internal use
gpiolib: acpi: Respect bias settings for GpioInt() resource
gpiolib: acpi: Use named item for enum gpiod_flags variable
gpiolib: acpi: Take into account debounce settings
gpiolib: acpi: Move non-critical code outside of critical section
gpiolib: acpi: Move acpi_gpio_to_gpiod_flags() upper in the code
gpiolib: acpi: Make acpi_gpio_to_gpiod_flags() usable for GpioInt()
gpiolib: acpi: Extract acpi_request_own_gpiod() helper
gpiolib: acpi: Convert pin_index to be u16
gpiolib: acpi: Use BIT() macro to increase readability
gpiolib: acpi: Make Intel GPIO tree official for GPIO ACPI work

Vasile-Laurentiu Stanimir (1):
gpiolib: acpi: Set initial value for output pin based on bias and
polarity

 MAINTAINERS                   |   1 +
 drivers/gpio/gpiolib-acpi.c   | 138 +++++++++++++++++++++-------------
 drivers/gpio/gpiolib-acpi.h   |   2 +
 drivers/gpio/gpiolib.c        |  98 ++++++++++++++----------
 drivers/gpio/gpiolib.h        |   1 +
 include/linux/gpio/consumer.h |   4 +-
 6 files changed, 147 insertions(+), 97 deletions(-)
Signature · 1 line
2.28.0