[PATCH RESEND 3/5] tty/serial: Add GPIOLIB helpers for controlling modem lines
From: gregkh@linuxfoundation.org (Greg Kroah-Hartman)
Date: 2014-05-28 19:45:50
Also in:
linux-serial
On Tue, May 13, 2014 at 08:20:43PM +0200, Richard Genoud wrote:
quoted hunk ↗ jump to hunk
This patch add some helpers to control modem lines (CTS/RTS/DSR...) via GPIO. This will be useful for many boards which have a serial controller that only handle CTS/RTS pins (or even just RX/TX). Signed-off-by: Richard Genoud <redacted> Tested-by: Yegor Yefremov <redacted> --- Documentation/serial/driver | 25 ++++++ drivers/tty/serial/Kconfig | 3 + drivers/tty/serial/Makefile | 3 + drivers/tty/serial/serial_mctrl_gpio.c | 143 ++++++++++++++++++++++++++++++++ drivers/tty/serial/serial_mctrl_gpio.h | 110 ++++++++++++++++++++++++ 5 files changed, 284 insertions(+) create mode 100644 drivers/tty/serial/serial_mctrl_gpio.c create mode 100644 drivers/tty/serial/serial_mctrl_gpio.hdiff --git a/Documentation/serial/driver b/Documentation/serial/driver index c3a7689..3bba1ae 100644 --- a/Documentation/serial/driver +++ b/Documentation/serial/driver@@ -429,3 +429,28 @@ thus: struct uart_port port; int my_stuff; }; + +Modem control lines via GPIO +---------------------------- + +Some helpers are provided in order to set/get modem control lines via GPIO. + +mctrl_gpio_init(dev, idx): + This will get the {cts,rts,...}-gpios from device tree if they are + present and request them, set direction etc, and return an + allocated structure. devm_* functions are used, so there's no need + to call mctrl_gpio_free(). + +mctrl_gpio_free(dev, gpios): + This will free the requested gpios in mctrl_gpio_init(). + As devm_* function are used, there's generally no need to call + this function. + +mctrl_gpio_to_gpiod(gpios, gidx) + This returns the gpio structure associated to the modem line index. + +mctrl_gpio_set(gpios, mctrl): + This will sets the gpios according to the mctrl state. + +mctrl_gpio_get(gpios, mctrl): + This will update mctrl with the gpios values.diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 5d9b01a..95afd31 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig@@ -1510,4 +1510,7 @@ config SERIAL_ST_ASC_CONSOLE endmenu +config SERIAL_MCTRL_GPIO + tristate
Why is this added here? Who is going to use it?
quoted hunk ↗ jump to hunk
+ endif # TTYdiff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile index 3680854..bcf31da 100644 --- a/drivers/tty/serial/Makefile +++ b/drivers/tty/serial/Makefile@@ -87,3 +87,6 @@ obj-$(CONFIG_SERIAL_EFM32_UART) += efm32-uart.o obj-$(CONFIG_SERIAL_ARC) += arc_uart.o obj-$(CONFIG_SERIAL_RP2) += rp2.o obj-$(CONFIG_SERIAL_FSL_LPUART) += fsl_lpuart.o + +# GPIOLIB helpers for modem control lines +obj-$(CONFIG_SERIAL_MCTRL_GPIO) += serial_mctrl_gpio.o
This chunk doesn't apply anymore :(