pinctrl: uniphier: support per-pin input enable for new SoCs
Upcoming new pinctrl drivers for PH1-LD11 and PH-LD20 support input signal gating for each pin. (While, existing ones only support it per pin-group.) This commit prepares the core part for that. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
8cc92b996d
commit
3b05b5f0e4
@ -44,7 +44,23 @@ static const char *uniphier_pinmux_get_function_name(struct udevice *dev,
|
||||
return priv->socdata->functions[selector];
|
||||
}
|
||||
|
||||
static void uniphier_pinconf_input_enable(struct udevice *dev, unsigned pin)
|
||||
static void uniphier_pinconf_input_enable_perpin(struct udevice *dev,
|
||||
unsigned pin)
|
||||
{
|
||||
struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
unsigned reg;
|
||||
u32 mask, tmp;
|
||||
|
||||
reg = UNIPHIER_PINCTRL_IECTRL + pin / 32 * 4;
|
||||
mask = BIT(pin % 32);
|
||||
|
||||
tmp = readl(priv->base + reg);
|
||||
tmp |= mask;
|
||||
writel(tmp, priv->base + reg);
|
||||
}
|
||||
|
||||
static void uniphier_pinconf_input_enable_legacy(struct udevice *dev,
|
||||
unsigned pin)
|
||||
{
|
||||
struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
int pins_count = priv->socdata->pins_count;
|
||||
@ -64,6 +80,16 @@ static void uniphier_pinconf_input_enable(struct udevice *dev, unsigned pin)
|
||||
}
|
||||
}
|
||||
|
||||
static void uniphier_pinconf_input_enable(struct udevice *dev, unsigned pin)
|
||||
{
|
||||
struct uniphier_pinctrl_priv *priv = dev_get_priv(dev);
|
||||
|
||||
if (priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL)
|
||||
uniphier_pinconf_input_enable_perpin(dev, pin);
|
||||
else
|
||||
uniphier_pinconf_input_enable_legacy(dev, pin);
|
||||
}
|
||||
|
||||
static void uniphier_pinmux_set_one(struct udevice *dev, unsigned pin,
|
||||
unsigned muxval)
|
||||
{
|
||||
|
@ -70,6 +70,7 @@ struct uniphier_pinctrl_socdata {
|
||||
const char * const *functions;
|
||||
int functions_count;
|
||||
unsigned caps;
|
||||
#define UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL BIT(1)
|
||||
#define UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE BIT(0)
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user