#include <linux/device.h>
#include <linux/gpio/driver.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/pinctrl/pinconf.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/seq_file.h>
#include "../core.h"
#include "../pinctrl-utils.h"
#include "pinctrl-meson.h"
static const unsigned int meson_bit_strides[] = …;
static int meson_get_bank(struct meson_pinctrl *pc, unsigned int pin,
const struct meson_bank **bank)
{ … }
static void meson_calc_reg_and_bit(const struct meson_bank *bank,
unsigned int pin,
enum meson_reg_type reg_type,
unsigned int *reg, unsigned int *bit)
{ … }
static int meson_get_groups_count(struct pinctrl_dev *pcdev)
{ … }
static const char *meson_get_group_name(struct pinctrl_dev *pcdev,
unsigned selector)
{ … }
static int meson_get_group_pins(struct pinctrl_dev *pcdev, unsigned selector,
const unsigned **pins, unsigned *num_pins)
{ … }
static void meson_pin_dbg_show(struct pinctrl_dev *pcdev, struct seq_file *s,
unsigned offset)
{ … }
static const struct pinctrl_ops meson_pctrl_ops = …;
int meson_pmx_get_funcs_count(struct pinctrl_dev *pcdev)
{ … }
EXPORT_SYMBOL_GPL(…);
const char *meson_pmx_get_func_name(struct pinctrl_dev *pcdev,
unsigned selector)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_pmx_get_groups(struct pinctrl_dev *pcdev, unsigned selector,
const char * const **groups,
unsigned * const num_groups)
{ … }
EXPORT_SYMBOL_GPL(…);
static int meson_pinconf_set_gpio_bit(struct meson_pinctrl *pc,
unsigned int pin,
unsigned int reg_type,
bool arg)
{ … }
static int meson_pinconf_get_gpio_bit(struct meson_pinctrl *pc,
unsigned int pin,
unsigned int reg_type)
{ … }
static int meson_pinconf_set_output(struct meson_pinctrl *pc,
unsigned int pin,
bool out)
{ … }
static int meson_pinconf_get_output(struct meson_pinctrl *pc,
unsigned int pin)
{ … }
static int meson_pinconf_set_drive(struct meson_pinctrl *pc,
unsigned int pin,
bool high)
{ … }
static int meson_pinconf_get_drive(struct meson_pinctrl *pc,
unsigned int pin)
{ … }
static int meson_pinconf_set_output_drive(struct meson_pinctrl *pc,
unsigned int pin,
bool high)
{ … }
static int meson_pinconf_disable_bias(struct meson_pinctrl *pc,
unsigned int pin)
{ … }
static int meson_pinconf_enable_bias(struct meson_pinctrl *pc, unsigned int pin,
bool pull_up)
{ … }
static int meson_pinconf_set_drive_strength(struct meson_pinctrl *pc,
unsigned int pin,
u16 drive_strength_ua)
{ … }
static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
unsigned long *configs, unsigned num_configs)
{ … }
static int meson_pinconf_get_pull(struct meson_pinctrl *pc, unsigned int pin)
{ … }
static int meson_pinconf_get_drive_strength(struct meson_pinctrl *pc,
unsigned int pin,
u16 *drive_strength_ua)
{ … }
static int meson_pinconf_get(struct pinctrl_dev *pcdev, unsigned int pin,
unsigned long *config)
{ … }
static int meson_pinconf_group_set(struct pinctrl_dev *pcdev,
unsigned int num_group,
unsigned long *configs, unsigned num_configs)
{ … }
static int meson_pinconf_group_get(struct pinctrl_dev *pcdev,
unsigned int group, unsigned long *config)
{ … }
static const struct pinconf_ops meson_pinconf_ops = …;
static int meson_gpio_get_direction(struct gpio_chip *chip, unsigned gpio)
{ … }
static int meson_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
{ … }
static int meson_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
int value)
{ … }
static void meson_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
{ … }
static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
{ … }
static int meson_gpiolib_register(struct meson_pinctrl *pc)
{ … }
static struct regmap_config meson_regmap_config = …;
static struct regmap *meson_map_resource(struct meson_pinctrl *pc,
struct device_node *node, char *name)
{ … }
static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc)
{ … }
int meson8_aobus_parse_dt_extra(struct meson_pinctrl *pc)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_a1_parse_dt_extra(struct meson_pinctrl *pc)
{ … }
EXPORT_SYMBOL_GPL(…);
int meson_pinctrl_probe(struct platform_device *pdev)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;