Sharing Reset GPIOs in the Linux Kernel
summary
Shared reset GPIOs cause drivers to accidentally toggle each other because GPIOs lack enable counting and probing is asynchronous. The kernel adds a concrete fix: since Linux 6.9 a reset controller can be instantiated for GPIO reset lines so drivers call Reset controller framework instead of raw gpiolib, and two drivers already use it; it handles shared asserts but not varied reset pulses. Other practical options shown are using the regulator path or a GPIO aggregator and adding enable counting for ownership.
AI-written summary · about
chapters (8)
- 0:00Shared reset GPIOs problem
- 1:03Sharing reset GPIOs issues
- 4:13Kernel limitations for shared GPIOs
- 6:39Non-exclusive GPIOs not a solution
- 8:06Reset controller for shared resets
- 10:12Reset pulses handling
- 11:39Alternative solutions like GPIO aggregator
- 13:47Unresolved problems and future work
related talks
19m"Exclusive" resources that are not exclusive - the case of shared GPIOs in...
19mPinctrl and GPIO - Interactions and Footguns
48mPin Control and GPIO Update
19mPinctrl and GPIO - Interactions and Footguns
51mGPIO for Engineers and Makers
37mIntroduction to Pin Muxing and GPIO Control Under Linux
23mGive Me Back My GPIO Persistence Intro to the libgpiod GPIOManager
53mImproving resource ownership and life-time in linux device drivers
