linux/drivers/pinctrl/cirrus/pinctrl-madera-core.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Pinctrl for Cirrus Logic Madera codecs
 *
 * Copyright (C) 2016-2018 Cirrus Logic
 */

#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"

/*
 * Use pin GPIO names for consistency
 * NOTE: IDs are zero-indexed for coding convenience
 */
static const struct pinctrl_pin_desc madera_pins[] =;

/*
 * All single-pin functions can be mapped to any GPIO, however pinmux applies
 * functions to pin groups and only those groups declared as supporting that
 * function. To make this work we must put each pin in its own dummy group so
 * that the functions can be described as applying to all pins.
 * Since these do not correspond to anything in the actual hardware - they are
 * merely an adaptation to pinctrl's view of the world - we use the same name
 * as the pin to avoid confusion when comparing with datasheet instructions
 */
static const char * const madera_pin_single_group_names[] =;

/* set of pin numbers for single-pin groups, zero-indexed */
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[] =;

/*
 * alt-functions always apply to a single pin group, other functions always
 * apply to all pins
 */
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();