LCOV - code coverage report
Current view: top level - drivers/tty/serial - serial_mctrl_gpio.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 8 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       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           0 : mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl)
     109             : {
     110           0 :         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           0 : struct mctrl_gpios *mctrl_gpio_init(struct uart_port *port, unsigned int idx)
     122             : {
     123           0 :         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           0 : static inline void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios)
     138             : {
     139           0 : }
     140             : 
     141           0 : static inline void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios)
     142             : {
     143           0 : }
     144             : 
     145             : #endif /* GPIOLIB */
     146             : 
     147             : #endif

Generated by: LCOV version 1.14