introduce and use sunxi_gpio_parse_pin_name()
This commit is contained in:
committed by
Icenowy Zheng
parent
ae851665c7
commit
320b9df023
@@ -242,4 +242,6 @@ int axp_gpio_init(void);
|
||||
static inline int axp_gpio_init(void) { return 0; }
|
||||
#endif
|
||||
|
||||
int sunxi_gpio_parse_pin_name(const char *pin_name);
|
||||
|
||||
#endif /* _SUNXI_GPIO_H */
|
||||
|
||||
@@ -69,3 +69,19 @@ int sunxi_gpio_set_pull(u32 pin, u32 val)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sunxi_gpio_parse_pin_name(const char *pin_name)
|
||||
{
|
||||
int pin;
|
||||
|
||||
if (pin_name[0] != 'P')
|
||||
return -1;
|
||||
|
||||
if (pin_name[1] < 'A' || pin_name[1] > 'Z')
|
||||
return -1;
|
||||
|
||||
pin = (pin_name[1] - 'A') << 5;
|
||||
pin += simple_strtol(&pin_name[2], NULL, 10);
|
||||
|
||||
return pin;
|
||||
}
|
||||
|
||||
@@ -460,12 +460,9 @@ static int parse_phy_pins(struct udevice *dev)
|
||||
"allwinner,pins", i, NULL);
|
||||
if (!pin_name)
|
||||
break;
|
||||
if (pin_name[0] != 'P')
|
||||
pin = sunxi_gpio_parse_pin_name(pin_name);
|
||||
if (pin < 0)
|
||||
continue;
|
||||
pin = (pin_name[1] - 'A') << 5;
|
||||
if (pin >= 26 << 5)
|
||||
continue;
|
||||
pin += simple_strtol(&pin_name[2], NULL, 10);
|
||||
|
||||
sunxi_gpio_set_cfgpin(pin, SUN8I_GPD8_GMAC);
|
||||
sunxi_gpio_set_drv(pin, drive);
|
||||
|
||||
Reference in New Issue
Block a user