u-boot/drivers/sysreset/sysreset_gpio.c
Samuel Holland 30ba45dbd6 sysreset: Mark driver probe functions as static
These driver probe functions are not (and should not be) called from
outside the respective driver source files. Therefore, the functions
should be marked static.

Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2021-11-04 08:57:19 +01:00

60 lines
1.4 KiB
C

// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2018 Xilinx, Inc. - Michal Simek
*/
#include <common.h>
#include <dm.h>
#include <errno.h>
#include <log.h>
#include <sysreset.h>
#include <asm/gpio.h>
struct gpio_reboot_priv {
struct gpio_desc gpio;
};
static int gpio_reboot_request(struct udevice *dev, enum sysreset_t type)
{
struct gpio_reboot_priv *priv = dev_get_priv(dev);
/*
* When debug log is enabled please make sure that chars won't end up
* in output fifo. Or you can append udelay(); to get enough time
* to HW to emit output fifo.
*/
debug("GPIO reset\n");
/* Writing 1 respects polarity (active high/low) based on gpio->flags */
return dm_gpio_set_value(&priv->gpio, 1);
}
static struct sysreset_ops gpio_reboot_ops = {
.request = gpio_reboot_request,
};
static int gpio_reboot_probe(struct udevice *dev)
{
struct gpio_reboot_priv *priv = dev_get_priv(dev);
/*
* Linux kernel DT binding contain others optional properties
* which are not supported now
*/
return gpio_request_by_name(dev, "gpios", 0, &priv->gpio, GPIOD_IS_OUT);
}
static const struct udevice_id led_gpio_ids[] = {
{ .compatible = "gpio-restart" },
{ }
};
U_BOOT_DRIVER(gpio_reboot) = {
.id = UCLASS_SYSRESET,
.name = "gpio_restart",
.of_match = led_gpio_ids,
.ops = &gpio_reboot_ops,
.priv_auto = sizeof(struct gpio_reboot_priv),
.probe = gpio_reboot_probe,
};