diff options
Diffstat (limited to 'drivers/pinctrl/starfive/pinctrl-jh7110-sys.c')
-rwxr-xr-x | drivers/pinctrl/starfive/pinctrl-jh7110-sys.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/pinctrl/starfive/pinctrl-jh7110-sys.c b/drivers/pinctrl/starfive/pinctrl-jh7110-sys.c index 4e761641eb..13c1a81e92 100755 --- a/drivers/pinctrl/starfive/pinctrl-jh7110-sys.c +++ b/drivers/pinctrl/starfive/pinctrl-jh7110-sys.c @@ -376,10 +376,23 @@ const struct starfive_pinctrl_soc_info jh7110_sys_pinctrl_info = { static int jh7110_sys_pinctrl_probe(struct udevice *dev) { + u32 value; + int ret; struct starfive_pinctrl_soc_info *info = (struct starfive_pinctrl_soc_info *)dev_get_driver_data(dev); + struct starfive_pinctrl_priv *priv = dev_get_priv(dev); + + ret = starfive_pinctrl_probe(dev, info); + + /* Set up the usb controller overcurrent signal. */ + if (!ret) { + value = readl(priv->base + JH7110_SYS_GPI); + value &= ~(0x7f << 16); + value |= BIT(16); + writel(value, priv->base + JH7110_SYS_GPI); + } - return starfive_pinctrl_probe(dev, info); + return ret; } static const struct udevice_id jh7110_sys_pinctrl_ids[] = { |