#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/gpio/driver.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/seq_file.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/pinctrl/pinconf.h>
#include <linux/pinctrl/pinmux.h>
#include "../pinctrl-utils.h"
#include "pinctrl-lpass-lpi.h"
#define MAX_NR_GPIO …
#define GPIO_FUNC …
#define MAX_LPI_NUM_CLKS …
struct lpi_pinctrl { … };
static int lpi_gpio_read(struct lpi_pinctrl *state, unsigned int pin,
unsigned int addr)
{ … }
static int lpi_gpio_write(struct lpi_pinctrl *state, unsigned int pin,
unsigned int addr, unsigned int val)
{ … }
static const struct pinctrl_ops lpi_gpio_pinctrl_ops = …;
static int lpi_gpio_get_functions_count(struct pinctrl_dev *pctldev)
{ … }
static const char *lpi_gpio_get_function_name(struct pinctrl_dev *pctldev,
unsigned int function)
{ … }
static int lpi_gpio_get_function_groups(struct pinctrl_dev *pctldev,
unsigned int function,
const char *const **groups,
unsigned *const num_qgroups)
{ … }
static int lpi_gpio_set_mux(struct pinctrl_dev *pctldev, unsigned int function,
unsigned int group)
{ … }
static const struct pinmux_ops lpi_gpio_pinmux_ops = …;
static int lpi_config_get(struct pinctrl_dev *pctldev,
unsigned int pin, unsigned long *config)
{ … }
static int lpi_config_set_slew_rate(struct lpi_pinctrl *pctrl,
const struct lpi_pingroup *g,
unsigned int group, unsigned int slew)
{ … }
static int lpi_config_set(struct pinctrl_dev *pctldev, unsigned int group,
unsigned long *configs, unsigned int nconfs)
{ … }
static const struct pinconf_ops lpi_gpio_pinconf_ops = …;
static int lpi_gpio_direction_input(struct gpio_chip *chip, unsigned int pin)
{ … }
static int lpi_gpio_direction_output(struct gpio_chip *chip,
unsigned int pin, int val)
{ … }
static int lpi_gpio_get(struct gpio_chip *chip, unsigned int pin)
{ … }
static void lpi_gpio_set(struct gpio_chip *chip, unsigned int pin, int value)
{ … }
#ifdef CONFIG_DEBUG_FS
static unsigned int lpi_regval_to_drive(u32 val)
{ … }
static void lpi_gpio_dbg_show_one(struct seq_file *s,
struct pinctrl_dev *pctldev,
struct gpio_chip *chip,
unsigned int offset,
unsigned int gpio)
{ … }
static void lpi_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
{ … }
#else
#define lpi_gpio_dbg_show …
#endif
static const struct gpio_chip lpi_gpio_template = …;
static int lpi_build_pin_desc_groups(struct lpi_pinctrl *pctrl)
{ … }
int lpi_pinctrl_probe(struct platform_device *pdev)
{ … }
EXPORT_SYMBOL_GPL(…);
void lpi_pinctrl_remove(struct platform_device *pdev)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;