mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
gpio: Add gpio-fsm driver
The gpio-fsm driver implements simple state machines that allow GPIOs to be controlled in response to inputs from other GPIOs - real and soft/virtual - and time delays. It can: + create dummy GPIOs for drivers that demand them, + drive multiple GPIOs from a single input, with optional delays, + add a debounce circuit to an input, + drive pattern sequences onto LEDs etc. Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Fix a build warning Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Rename 'num-soft-gpios' to avoid warning As of 5.10, the Device Tree parser warns about properties that look like references to "suppliers" of various services. "num-soft-gpios" resembles a declaration of a GPIO called "num-soft", causing the value to be interpreted as a phandle, the owner of which is checked for a "#gpio-cells" property. To avoid this warning, rename the gpio-fsm property to "num-swgpios". Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Show state info in /sys/class/gpio-fsm Add gpio-fsm sysfs entries under /sys/class/gpio-fsm. For each state machine show the current state, which state (if any) will be entered after a delay, and the current value of that delay. Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Fix shutdown timeout handling The driver is intended to jump directly to a shutdown state in the event of a timeout during shutdown, but the sense of the test was inverted. Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Clamp the delay time to zero The sysfs delay_ms value is calculated live, and it is possible for the time left to appear to be negative briefly if the timer handling hasn't completed. Ensure the displayed value never goes below zero, for the sake of appearances. Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio-fsm: Sort functions into a more logical order Move some functions into a more logical ordering. This change causes no functional change and is essentially cosmetic. Signed-off-by: Phil Elwell <phil@raspberrypi.com> gpio_fsm: Rework the atomic-vs-non-atomic split Partition the code to separate atomic and non-atomic methods so that none of them have to handle both cases. The result avoids using deferred work unless necessary, and should be easier to understand. Signed-off-by: Phil Elwell <phil@raspberrypi.com>
This commit is contained in:
@@ -1428,6 +1428,15 @@ config GPIO_ELKHARTLAKE
|
||||
To compile this driver as a module, choose M here: the module will
|
||||
be called gpio-elkhartlake.
|
||||
|
||||
config GPIO_FSM
|
||||
tristate "GPIO FSM support"
|
||||
help
|
||||
The GPIO FSM driver allows the creation of state machines for
|
||||
manipulating GPIOs (both real and virtual), with state transitions
|
||||
triggered by GPIO edges or delays.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config GPIO_JANZ_TTL
|
||||
tristate "Janz VMOD-TTL Digital IO Module"
|
||||
depends on MFD_JANZ_CMODIO
|
||||
|
||||
@@ -70,6 +70,7 @@ obj-$(CONFIG_GPIO_EN7523) += gpio-en7523.o
|
||||
obj-$(CONFIG_GPIO_EP93XX) += gpio-ep93xx.o
|
||||
obj-$(CONFIG_GPIO_EXAR) += gpio-exar.o
|
||||
obj-$(CONFIG_GPIO_F7188X) += gpio-f7188x.o
|
||||
obj-$(CONFIG_GPIO_FSM) += gpio-fsm.o
|
||||
obj-$(CONFIG_GPIO_FTGPIO010) += gpio-ftgpio010.o
|
||||
obj-$(CONFIG_GPIO_FXL6408) += gpio-fxl6408.o
|
||||
obj-$(CONFIG_GPIO_GE_FPGA) += gpio-ge.o
|
||||
|
||||
1212
drivers/gpio/gpio-fsm.c
Normal file
1212
drivers/gpio/gpio-fsm.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user