#include <linux/bitfield.h>
#include <linux/export.h>
#include <linux/io.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/bsearch.h>
#include <linux/seq_file.h>
#include <linux/spinlock.h>
#include <linux/pinctrl/consumer.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 <dt-bindings/pinctrl/pinctrl-cv18xx.h>
#include "../core.h"
#include "../pinctrl-utils.h"
#include "../pinconf.h"
#include "../pinmux.h"
#include "pinctrl-cv18xx.h"
struct cv1800_pinctrl { … };
struct cv1800_pin_mux_config { … };
static unsigned int cv1800_dt_get_pin(u32 value)
{ … }
static unsigned int cv1800_dt_get_pin_mux(u32 value)
{ … }
static unsigned int cv1800_dt_get_pin_mux2(u32 value)
{ … }
#define cv1800_pinctrl_get_component_addr(pctrl, _comp) …
static int cv1800_cmp_pin(const void *key, const void *pivot)
{ … }
static int cv1800_set_power_cfg(struct cv1800_pinctrl *pctrl,
u8 domain, u32 cfg)
{ … }
static int cv1800_get_power_cfg(struct cv1800_pinctrl *pctrl,
u8 domain)
{ … }
static struct cv1800_pin *cv1800_get_pin(struct cv1800_pinctrl *pctrl,
unsigned long pin)
{ … }
#define PIN_BGA_ID_OFFSET …
#define PIN_BGA_ID_MASK …
static const char *const io_type_desc[] = …;
static const char *cv1800_get_power_cfg_desc(struct cv1800_pinctrl *pctrl,
u8 domain)
{ … }
static void cv1800_pctrl_dbg_show(struct pinctrl_dev *pctldev,
struct seq_file *seq, unsigned int pin_id)
{ … }
static int cv1800_verify_pinmux_config(const struct cv1800_pin_mux_config *config)
{ … }
static int cv1800_verify_pin_group(const struct cv1800_pin_mux_config *mux,
unsigned long npins)
{ … }
static int cv1800_pctrl_dt_node_to_map(struct pinctrl_dev *pctldev,
struct device_node *np,
struct pinctrl_map **maps,
unsigned int *num_maps)
{ … }
static const struct pinctrl_ops cv1800_pctrl_ops = …;
static int cv1800_pmx_set_mux(struct pinctrl_dev *pctldev,
unsigned int fsel, unsigned int gsel)
{ … }
static const struct pinmux_ops cv1800_pmx_ops = …;
#define PIN_IO_PULLUP …
#define PIN_IO_PULLDOWN …
#define PIN_IO_DRIVE …
#define PIN_IO_SCHMITT …
#define PIN_IO_BUS_HOLD …
#define PIN_IO_OUT_FAST_SLEW …
static u32 cv1800_pull_down_typical_resistor(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin)
{ … }
static u32 cv1800_pull_up_typical_resistor(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin)
{ … }
static int cv1800_pinctrl_oc2reg(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin, u32 target)
{ … }
static int cv1800_pinctrl_reg2oc(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin, u32 reg)
{ … }
static int cv1800_pinctrl_schmitt2reg(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin, u32 target)
{ … }
static int cv1800_pinctrl_reg2schmitt(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin, u32 reg)
{ … }
static int cv1800_pconf_get(struct pinctrl_dev *pctldev,
unsigned int pin_id, unsigned long *config)
{ … }
static int cv1800_pinconf_compute_config(struct cv1800_pinctrl *pctrl,
struct cv1800_pin *pin,
unsigned long *configs,
unsigned int num_configs,
u32 *value)
{ … }
static int cv1800_pin_set_config(struct cv1800_pinctrl *pctrl,
unsigned int pin_id,
u32 value)
{ … }
static int cv1800_pconf_set(struct pinctrl_dev *pctldev,
unsigned int pin_id, unsigned long *configs,
unsigned int num_configs)
{ … }
static int cv1800_pconf_group_set(struct pinctrl_dev *pctldev,
unsigned int gsel,
unsigned long *configs,
unsigned int num_configs)
{ … }
static const struct pinconf_ops cv1800_pconf_ops = …;
int cv1800_pinctrl_probe(struct platform_device *pdev)
{ … }
EXPORT_SYMBOL_GPL(…);