linux/drivers/tty/serial/serial_mctrl_gpio.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * Helpers for controlling modem lines via GPIO
 *
 * Copyright (C) 2014 Paratronic S.A.
 */

#include <linux/err.h>
#include <linux/device.h>
#include <linux/irq.h>
#include <linux/gpio/consumer.h>
#include <linux/termios.h>
#include <linux/serial_core.h>
#include <linux/module.h>
#include <linux/property.h>

#include "serial_mctrl_gpio.h"

struct mctrl_gpios {};

static const struct {} mctrl_gpios_desc[UART_GPIO_MAX] =;

static bool mctrl_gpio_flags_is_dir_out(unsigned int idx)
{}

/**
 * mctrl_gpio_set - set gpios according to mctrl state
 * @gpios: gpios to set
 * @mctrl: state to set
 *
 * Set the gpios according to the mctrl state.
 */
void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl)
{}
EXPORT_SYMBOL_GPL();

/**
 * mctrl_gpio_to_gpiod - obtain gpio_desc of modem line index
 * @gpios: gpios to look into
 * @gidx: index of the modem line
 * Returns: the gpio_desc structure associated to the modem line index
 */
struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios,
				      enum mctrl_gpio_idx gidx)
{}
EXPORT_SYMBOL_GPL();

/**
 * mctrl_gpio_get - update mctrl with the gpios values.
 * @gpios: gpios to get the info from
 * @mctrl: mctrl to set
 * Returns: modified mctrl (the same value as in @mctrl)
 *
 * Update mctrl with the gpios values.
 */
unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl)
{}
EXPORT_SYMBOL_GPL();

unsigned int
mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl)
{}
EXPORT_SYMBOL_GPL();

struct mctrl_gpios *mctrl_gpio_init_noauto(struct device *dev, unsigned int idx)
{}
EXPORT_SYMBOL_GPL();

#define MCTRL_ANY_DELTA
static irqreturn_t mctrl_gpio_irq_handle(int irq, void *context)
{}

/**
 * mctrl_gpio_init - initialize uart gpios
 * @port: port to initialize gpios for
 * @idx: index of the gpio in the @port's device
 *
 * 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().
 * As this sets up the irq handling, make sure to not handle changes to the
 * gpio input lines in your driver, too.
 */
struct mctrl_gpios *mctrl_gpio_init(struct uart_port *port, unsigned int idx)
{}
EXPORT_SYMBOL_GPL();

/**
 * mctrl_gpio_free - explicitly free uart gpios
 * @dev: uart port's device
 * @gpios: gpios structure to be freed
 *
 * This will free the requested gpios in mctrl_gpio_init(). As `devm_*`
 * functions are used, there's generally no need to call this function.
 */
void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios)
{}
EXPORT_SYMBOL_GPL();

/**
 * mctrl_gpio_enable_ms - enable irqs and handling of changes to the ms lines
 * @gpios: gpios to enable
 */
void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios)
{}
EXPORT_SYMBOL_GPL();

/**
 * mctrl_gpio_disable_ms - disable irqs and handling of changes to the ms lines
 * @gpios: gpios to disable
 */
void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios)
{}
EXPORT_SYMBOL_GPL();

void mctrl_gpio_enable_irq_wake(struct mctrl_gpios *gpios)
{}
EXPORT_SYMBOL_GPL();

void mctrl_gpio_disable_irq_wake(struct mctrl_gpios *gpios)
{}
EXPORT_SYMBOL_GPL();

MODULE_DESCRIPTION();
MODULE_LICENSE();