Signed-off-by: Denis Burkov <[email protected]>
---
board/sunxi/board.c | 4 ----
drivers/gpio/axp_gpio.c | 28 +++++++++++-----------------
2 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index 2929bc17f08..3c61bfb8822 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -226,10 +226,6 @@ int board_init(void)
}
#endif /* !CONFIG_ARM64 && !CONFIG_MACH_SUNIV */
- ret = axp_gpio_init();
- if (ret)
- return ret;
-
eth_init_board();
return 0;
diff --git a/drivers/gpio/axp_gpio.c b/drivers/gpio/axp_gpio.c
index 181c53bfe72..1c5882a25d4 100644
--- a/drivers/gpio/axp_gpio.c
+++ b/drivers/gpio/axp_gpio.c
@@ -98,35 +98,29 @@ static const struct dm_gpio_ops gpio_axp_ops = {
static int gpio_axp_probe(struct udevice *dev)
{
+ int ret;
struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
/* Tell the uclass how many GPIOs we have */
uc_priv->bank_name = AXP_GPIO_PREFIX;
uc_priv->gpio_count = AXP_GPIO_COUNT;
+ ret = pmic_bus_init();
+ if (ret)
+ return ret;
+
return 0;
}
+static const struct udevice_id gpio_axp_match[] = {
+ { .compatible = "x-powers,axp209-gpio" },
+ { }
+};
+
U_BOOT_DRIVER(gpio_axp) = {
.name = "gpio_axp",
.id = UCLASS_GPIO,
+ .of_match = gpio_axp_match,
.ops = &gpio_axp_ops,
.probe = gpio_axp_probe,
};
-
-int axp_gpio_init(void)
-{
- struct udevice *dev;
- int ret;
-
- ret = pmic_bus_init();
- if (ret)
- return ret;
-
- /* There is no devicetree support for the axp yet, so bind directly */
- ret = device_bind_driver(dm_root(), "gpio_axp", "AXP-gpio", &dev);
- if (ret)
- return ret;
-
- return 0;
-}
--
2.49.1