mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-17 11:51:31 +00:00
pfc: rmobile: Add hook to configure pin as GPIO
Add hook into the PFC driver to allow the GPIO driver to toggle GPSR registers into GPIO mode when GPIO is requested. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
This commit is contained in:
parent
2489bb54a5
commit
f6e545a73f
2 changed files with 30 additions and 0 deletions
|
@ -448,6 +448,35 @@ static const char *sh_pfc_pinctrl_get_function_name(struct udevice *dev,
|
||||||
return priv->pfc.info->functions[selector].name;
|
return priv->pfc.info->functions[selector].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sh_pfc_config_mux_for_gpio(struct udevice *dev, unsigned pin_selector)
|
||||||
|
{
|
||||||
|
struct sh_pfc_pinctrl_priv *priv = dev_get_priv(dev);
|
||||||
|
struct sh_pfc_pinctrl *pmx = &priv->pmx;
|
||||||
|
struct sh_pfc *pfc = &priv->pfc;
|
||||||
|
struct sh_pfc_pin_config *cfg;
|
||||||
|
const struct sh_pfc_pin *pin = NULL;
|
||||||
|
int i, idx;
|
||||||
|
|
||||||
|
for (i = 1; i < pfc->info->nr_pins; i++) {
|
||||||
|
if (priv->pfc.info->pins[i].pin != pin_selector)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pin = &priv->pfc.info->pins[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pin)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
idx = sh_pfc_get_pin_index(pfc, pin->pin);
|
||||||
|
cfg = &pmx->configs[idx];
|
||||||
|
|
||||||
|
if (cfg->type != PINMUX_TYPE_NONE)
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
|
return sh_pfc_config_mux(pfc, pin->enum_id, PINMUX_TYPE_GPIO);
|
||||||
|
}
|
||||||
|
|
||||||
static int sh_pfc_pinctrl_pin_set(struct udevice *dev, unsigned pin_selector,
|
static int sh_pfc_pinctrl_pin_set(struct udevice *dev, unsigned pin_selector,
|
||||||
unsigned func_selector)
|
unsigned func_selector)
|
||||||
{
|
{
|
||||||
|
|
|
@ -243,6 +243,7 @@ void sh_pfc_write_reg(struct sh_pfc *pfc, u32 reg, unsigned int width, u32 data)
|
||||||
const struct sh_pfc_bias_info *
|
const struct sh_pfc_bias_info *
|
||||||
sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info,
|
sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info,
|
||||||
unsigned int num, unsigned int pin);
|
unsigned int num, unsigned int pin);
|
||||||
|
int sh_pfc_config_mux_for_gpio(struct udevice *dev, unsigned pin_selector);
|
||||||
|
|
||||||
extern const struct sh_pfc_soc_info r8a7795_pinmux_info;
|
extern const struct sh_pfc_soc_info r8a7795_pinmux_info;
|
||||||
extern const struct sh_pfc_soc_info r8a7796_pinmux_info;
|
extern const struct sh_pfc_soc_info r8a7796_pinmux_info;
|
||||||
|
|
Loading…
Add table
Reference in a new issue