root/drivers/tty/serial/serial_mctrl_gpio.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. mctrl_gpio_set
  2. mctrl_gpio_get
  3. mctrl_gpio_get_outputs
  4. mctrl_gpio_to_gpiod
  5. mctrl_gpio_init
  6. mctrl_gpio_init_noauto
  7. mctrl_gpio_free
  8. mctrl_gpio_enable_ms
  9. mctrl_gpio_disable_ms

   1 // SPDX-License-Identifier: GPL-2.0+
   2 /*
   3  * Helpers for controlling modem lines via GPIO
   4  *
   5  * Copyright (C) 2014 Paratronic S.A.
   6  */
   7 
   8 #ifndef __SERIAL_MCTRL_GPIO__
   9 #define __SERIAL_MCTRL_GPIO__
  10 
  11 #include <linux/err.h>
  12 #include <linux/device.h>
  13 #include <linux/gpio/consumer.h>
  14 
  15 struct uart_port;
  16 
  17 enum mctrl_gpio_idx {
  18         UART_GPIO_CTS,
  19         UART_GPIO_DSR,
  20         UART_GPIO_DCD,
  21         UART_GPIO_RNG,
  22         UART_GPIO_RI = UART_GPIO_RNG,
  23         UART_GPIO_RTS,
  24         UART_GPIO_DTR,
  25         UART_GPIO_MAX,
  26 };
  27 
  28 /*
  29  * Opaque descriptor for modem lines controlled by GPIOs
  30  */
  31 struct mctrl_gpios;
  32 
  33 #ifdef CONFIG_GPIOLIB
  34 
  35 /*
  36  * Set state of the modem control output lines via GPIOs.
  37  */
  38 void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl);
  39 
  40 /*
  41  * Get state of the modem control input lines from GPIOs.
  42  * The mctrl flags are updated and returned.
  43  */
  44 unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl);
  45 
  46 /*
  47  * Get state of the modem control output lines from GPIOs.
  48  * The mctrl flags are updated and returned.
  49  */
  50 unsigned int
  51 mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl);
  52 
  53 /*
  54  * Returns the associated struct gpio_desc to the modem line gidx
  55  */
  56 struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios,
  57                                       enum mctrl_gpio_idx gidx);
  58 
  59 /*
  60  * Request and set direction of modem control line GPIOs and set up irq
  61  * handling.
  62  * devm_* functions are used, so there's no need to call mctrl_gpio_free().
  63  * Returns a pointer to the allocated mctrl structure if ok, -ENOMEM on
  64  * allocation error.
  65  */
  66 struct mctrl_gpios *mctrl_gpio_init(struct uart_port *port, unsigned int idx);
  67 
  68 /*
  69  * Request and set direction of modem control line GPIOs.
  70  * devm_* functions are used, so there's no need to call mctrl_gpio_free().
  71  * Returns a pointer to the allocated mctrl structure if ok, -ENOMEM on
  72  * allocation error.
  73  */
  74 struct mctrl_gpios *mctrl_gpio_init_noauto(struct device *dev,
  75                                            unsigned int idx);
  76 
  77 /*
  78  * Free the mctrl_gpios structure.
  79  * Normally, this function will not be called, as the GPIOs will
  80  * be disposed of by the resource management code.
  81  */
  82 void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios);
  83 
  84 /*
  85  * Enable gpio interrupts to report status line changes.
  86  */
  87 void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios);
  88 
  89 /*
  90  * Disable gpio interrupts to report status line changes.
  91  */
  92 void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios);
  93 
  94 #else /* GPIOLIB */
  95 
  96 static inline
  97 void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl)
  98 {
  99 }
 100 
 101 static inline
 102 unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl)
 103 {
 104         return *mctrl;
 105 }
 106 
 107 static inline unsigned int
 108 mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl)
 109 {
 110         return *mctrl;
 111 }
 112 
 113 static inline
 114 struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios,
 115                                       enum mctrl_gpio_idx gidx)
 116 {
 117         return NULL;
 118 }
 119 
 120 static inline
 121 struct mctrl_gpios *mctrl_gpio_init(struct uart_port *port, unsigned int idx)
 122 {
 123         return NULL;
 124 }
 125 
 126 static inline
 127 struct mctrl_gpios *mctrl_gpio_init_noauto(struct device *dev, unsigned int idx)
 128 {
 129         return NULL;
 130 }
 131 
 132 static inline
 133 void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios)
 134 {
 135 }
 136 
 137 static inline void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios)
 138 {
 139 }
 140 
 141 static inline void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios)
 142 {
 143 }
 144 
 145 #endif /* GPIOLIB */
 146 
 147 #endif

/* [<][>][^][v][top][bottom][index][help] */