#include <linux/err.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/pinctrl/machine.h>
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/pinctrl/pinconf.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/pinctrl/pinmux.h>
#include <linux/mfd/madera/core.h>
#include <linux/mfd/madera/registers.h>
#include "../pinctrl-utils.h"
#include "pinctrl-madera.h"
static const struct pinctrl_pin_desc madera_pins[] = …;
static const char * const madera_pin_single_group_names[] = …;
static const unsigned int madera_pin_single_group_pins[] = …;
static const char * const madera_aif1_group_names[] = …;
static const char * const madera_aif2_group_names[] = …;
static const char * const madera_aif3_group_names[] = …;
static const char * const madera_aif4_group_names[] = …;
static const char * const madera_mif1_group_names[] = …;
static const char * const madera_mif2_group_names[] = …;
static const char * const madera_mif3_group_names[] = …;
static const char * const madera_dmic3_group_names[] = …;
static const char * const madera_dmic4_group_names[] = …;
static const char * const madera_dmic5_group_names[] = …;
static const char * const madera_dmic6_group_names[] = …;
static const char * const madera_spk1_group_names[] = …;
static const char * const madera_spk2_group_names[] = …;
static const struct { … } madera_mux_funcs[] = …;
static u16 madera_pin_make_drv_str(struct madera_pin_private *priv,
unsigned int milliamps)
{ … }
static unsigned int madera_pin_unmake_drv_str(struct madera_pin_private *priv,
u16 regval)
{ … }
static int madera_get_groups_count(struct pinctrl_dev *pctldev)
{ … }
static const char *madera_get_group_name(struct pinctrl_dev *pctldev,
unsigned int selector)
{ … }
static int madera_get_group_pins(struct pinctrl_dev *pctldev,
unsigned int selector,
const unsigned int **pins,
unsigned int *num_pins)
{ … }
static void madera_pin_dbg_show_fn(struct madera_pin_private *priv,
struct seq_file *s,
unsigned int pin, unsigned int fn)
{ … }
static void __maybe_unused madera_pin_dbg_show(struct pinctrl_dev *pctldev,
struct seq_file *s,
unsigned int pin)
{ … }
static const struct pinctrl_ops madera_pin_group_ops = …;
static int madera_mux_get_funcs_count(struct pinctrl_dev *pctldev)
{ … }
static const char *madera_mux_get_func_name(struct pinctrl_dev *pctldev,
unsigned int selector)
{ … }
static int madera_mux_get_groups(struct pinctrl_dev *pctldev,
unsigned int selector,
const char * const **groups,
unsigned int * const num_groups)
{ … }
static int madera_mux_set_mux(struct pinctrl_dev *pctldev,
unsigned int selector,
unsigned int group)
{ … }
static int madera_gpio_set_direction(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range,
unsigned int offset,
bool input)
{ … }
static int madera_gpio_request_enable(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range,
unsigned int offset)
{ … }
static void madera_gpio_disable_free(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range,
unsigned int offset)
{ … }
static const struct pinmux_ops madera_pin_mux_ops = …;
static int madera_pin_conf_get(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *config)
{ … }
static int madera_pin_conf_set(struct pinctrl_dev *pctldev, unsigned int pin,
unsigned long *configs, unsigned int num_configs)
{ … }
static int madera_pin_conf_group_set(struct pinctrl_dev *pctldev,
unsigned int selector,
unsigned long *configs,
unsigned int num_configs)
{ … }
static const struct pinconf_ops madera_pin_conf_ops = …;
static struct pinctrl_desc madera_pin_desc = …;
static int madera_pin_probe(struct platform_device *pdev)
{ … }
static void madera_pin_remove(struct platform_device *pdev)
{ … }
static struct platform_driver madera_pin_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;