mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-06 13:14:27 +00:00
051de9b3eb
The Jaguar2 SOC family has 63 gpio pins therefore I extended mscc-common to support new numbe of pins and remove any platform dependency from mscc-common. Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
66 lines
1.4 KiB
C
66 lines
1.4 KiB
C
/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
|
|
/*
|
|
* Microsemi SoCs pinctrl driver
|
|
*
|
|
* Author: <alexandre.belloni@free-electrons.com>
|
|
* License: Dual MIT/GPL
|
|
* Copyright (c) 2017 Microsemi Corporation
|
|
*/
|
|
|
|
#define MSCC_FUNC_PER_PIN 4
|
|
|
|
enum mscc_regs_gpio {
|
|
MSCC_GPIO_OUT_SET,
|
|
MSCC_GPIO_OUT_CLR,
|
|
MSCC_GPIO_OUT,
|
|
MSCC_GPIO_IN,
|
|
MSCC_GPIO_OE,
|
|
MSCC_GPIO_INTR,
|
|
MSCC_GPIO_INTR_ENA,
|
|
MSCC_GPIO_INTR_IDENT,
|
|
MSCC_GPIO_ALT0,
|
|
MSCC_GPIO_ALT1,
|
|
};
|
|
|
|
struct mscc_pin_caps {
|
|
unsigned int pin;
|
|
unsigned char functions[MSCC_FUNC_PER_PIN];
|
|
};
|
|
|
|
struct mscc_pin_data {
|
|
const char *name;
|
|
struct mscc_pin_caps *drv_data;
|
|
};
|
|
|
|
#define MSCC_P(p, f0, f1, f2) \
|
|
static struct mscc_pin_caps mscc_pin_##p = { \
|
|
.pin = p, \
|
|
.functions = { \
|
|
FUNC_GPIO, FUNC_##f0, FUNC_##f1, FUNC_##f2, \
|
|
}, \
|
|
}
|
|
|
|
struct mscc_pmx_func {
|
|
const char **groups;
|
|
unsigned int ngroups;
|
|
};
|
|
|
|
struct mscc_pinctrl {
|
|
struct udevice *dev;
|
|
struct pinctrl_dev *pctl;
|
|
void __iomem *regs;
|
|
struct mscc_pmx_func *func;
|
|
int num_func;
|
|
const struct mscc_pin_data *mscc_pins;
|
|
int num_pins;
|
|
char * const *function_names;
|
|
const unsigned long *mscc_gpios;
|
|
};
|
|
|
|
int mscc_pinctrl_probe(struct udevice *dev, int num_func,
|
|
const struct mscc_pin_data *mscc_pins, int num_pins,
|
|
char * const *function_names,
|
|
const unsigned long *mscc_gpios);
|
|
const struct pinctrl_ops mscc_pinctrl_ops;
|
|
|
|
const struct dm_gpio_ops mscc_gpio_ops;
|