gpio: Get rid of gpio_hog_probe_all()
The gpio_hog_probe_all() functionality can be perfectly well replaced by DM_FLAG_PROBE_AFTER_BIND DM flag, which would trigger .probe() callback of each GPIO hog driver instance after .bind() and thus configure the hogged GPIO accordingly. Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Samuel Holland <samuel@sholland.org>
This commit is contained in:
parent
942918f2ac
commit
48b3ecbedf
5 changed files with 10 additions and 41 deletions
|
@ -756,9 +756,6 @@ static init_fnc_t init_sequence_r[] = {
|
||||||
initr_status_led,
|
initr_status_led,
|
||||||
#endif
|
#endif
|
||||||
/* PPC has a udelay(20) here dating from 2002. Why? */
|
/* PPC has a udelay(20) here dating from 2002. Why? */
|
||||||
#if defined(CONFIG_GPIO_HOG)
|
|
||||||
gpio_hog_probe_all,
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BOARD_LATE_INIT
|
#ifdef CONFIG_BOARD_LATE_INIT
|
||||||
board_late_init,
|
board_late_init,
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -786,9 +786,6 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CONFIG_IS_ENABLED(GPIO_HOG))
|
|
||||||
gpio_hog_probe_all();
|
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(BOARD_INIT)
|
#if CONFIG_IS_ENABLED(BOARD_INIT)
|
||||||
spl_board_init();
|
spl_board_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,10 +2,8 @@
|
||||||
GPIO hog (CONFIG_GPIO_HOG)
|
GPIO hog (CONFIG_GPIO_HOG)
|
||||||
--------
|
--------
|
||||||
|
|
||||||
All the GPIO hog are initialized in gpio_hog_probe_all() function called in
|
All the GPIO hog are initialized using DM_FLAG_PROBE_AFTER_BIND DM flag
|
||||||
board_r.c just before board_late_init() but you can also acces directly to
|
after bind().
|
||||||
the gpio with gpio_hog_lookup_name().
|
|
||||||
|
|
||||||
|
|
||||||
Example, for the device tree:
|
Example, for the device tree:
|
||||||
|
|
||||||
|
|
|
@ -311,34 +311,11 @@ static int gpio_hog_probe(struct udevice *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gpio_hog_probe_all(void)
|
|
||||||
{
|
|
||||||
struct udevice *dev;
|
|
||||||
int ret;
|
|
||||||
int retval = 0;
|
|
||||||
|
|
||||||
for (uclass_first_device(UCLASS_NOP, &dev);
|
|
||||||
dev;
|
|
||||||
uclass_find_next_device(&dev)) {
|
|
||||||
if (dev->driver == DM_DRIVER_GET(gpio_hog)) {
|
|
||||||
ret = device_probe(dev);
|
|
||||||
if (ret) {
|
|
||||||
printf("Failed to probe device %s err: %d\n",
|
|
||||||
dev->name, ret);
|
|
||||||
retval = ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc)
|
int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc)
|
||||||
{
|
{
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
|
||||||
*desc = NULL;
|
*desc = NULL;
|
||||||
gpio_hog_probe_all();
|
|
||||||
if (!uclass_get_device_by_name(UCLASS_NOP, name, &dev)) {
|
if (!uclass_get_device_by_name(UCLASS_NOP, name, &dev)) {
|
||||||
struct gpio_hog_priv *priv = dev_get_priv(dev);
|
struct gpio_hog_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
@ -1505,9 +1482,17 @@ static int gpio_post_bind(struct udevice *dev)
|
||||||
&child);
|
&child);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure gpio-hogs are probed after bind
|
||||||
|
* since hogs can be essential to the hardware
|
||||||
|
* system.
|
||||||
|
*/
|
||||||
|
dev_or_flags(child, DM_FLAG_PROBE_AFTER_BIND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -461,14 +461,6 @@ int dm_gpio_lookup_name(const char *name, struct gpio_desc *desc);
|
||||||
*/
|
*/
|
||||||
int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc);
|
int gpio_hog_lookup_name(const char *name, struct gpio_desc **desc);
|
||||||
|
|
||||||
/**
|
|
||||||
* gpio_hog_probe_all() - probe all gpio devices with
|
|
||||||
* gpio-hog subnodes.
|
|
||||||
*
|
|
||||||
* @return: Returns return value from device_probe()
|
|
||||||
*/
|
|
||||||
int gpio_hog_probe_all(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gpio_lookup_name - Look up a GPIO name and return its details
|
* gpio_lookup_name - Look up a GPIO name and return its details
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue