mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +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>
This commit is contained in:
@@ -1162,6 +1162,15 @@ config HTC_EGPIO
|
||||
several HTC phones. It provides basic support for input
|
||||
pins, output pins, and irqs.
|
||||
|
||||
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
|
||||
|
||||
@@ -60,6 +60,7 @@ obj-$(CONFIG_GPIO_EP93XX) += gpio-ep93xx.o
|
||||
obj-$(CONFIG_GPIO_EXAR) += gpio-exar.o
|
||||
obj-$(CONFIG_GPIO_F7188X) += gpio-f7188x.o
|
||||
obj-$(CONFIG_GPIO_FTGPIO010) += gpio-ftgpio010.o
|
||||
obj-$(CONFIG_GPIO_FSM) += gpio-fsm.o
|
||||
obj-$(CONFIG_GPIO_GE_FPGA) += gpio-ge.o
|
||||
obj-$(CONFIG_GPIO_GPIO_MM) += gpio-gpio-mm.o
|
||||
obj-$(CONFIG_GPIO_GRGPIO) += gpio-grgpio.o
|
||||
|
||||
1103
drivers/gpio/gpio-fsm.c
Normal file
1103
drivers/gpio/gpio-fsm.c
Normal file
File diff suppressed because it is too large
Load Diff
21
include/dt-bindings/gpio/gpio-fsm.h
Normal file
21
include/dt-bindings/gpio/gpio-fsm.h
Normal file
@@ -0,0 +1,21 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* This header provides constants for binding rpi,gpio-fsm.
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_GPIO_FSM_H
|
||||
#define _DT_BINDINGS_GPIO_FSM_H
|
||||
|
||||
#define GF_IN 0
|
||||
#define GF_OUT 1
|
||||
#define GF_SOFT 2
|
||||
#define GF_DELAY 3
|
||||
#define GF_SHUTDOWN 4
|
||||
|
||||
#define GF_IO(t, v) (((v) << 16) | ((t) & 0xffff))
|
||||
|
||||
#define GF_IP(x) GF_IO(GF_IN, (x))
|
||||
#define GF_OP(x) GF_IO(GF_OUT, (x))
|
||||
#define GF_SW(x) GF_IO(GF_SOFT, (x))
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user