// SPDX-License-Identifier: GPL-2.0
/*
 * Raspberry Pi 4 firmware reset driver
 *
 * Copyright (C) 2020 Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
 */
#include <common.h>
#include <dm.h>
#include <reset-uclass.h>
#include <asm/arch/msg.h>
#include <dt-bindings/reset/raspberrypi,firmware-reset.h>

static int raspberrypi_reset_request(struct reset_ctl *reset_ctl)
{
	if (reset_ctl->id >= RASPBERRYPI_FIRMWARE_RESET_NUM_IDS)
		return -EINVAL;

	return 0;
}

static int raspberrypi_reset_free(struct reset_ctl *reset_ctl)
{
	return 0;
}

static int raspberrypi_reset_assert(struct reset_ctl *reset_ctl)
{
	switch (reset_ctl->id) {
	case RASPBERRYPI_FIRMWARE_RESET_ID_USB:
		bcm2711_notify_vl805_reset();
		return 0;
	default:
		return -EINVAL;
	}
}

static int raspberrypi_reset_deassert(struct reset_ctl *reset_ctl)
{
	return 0;
}

struct reset_ops raspberrypi_reset_ops = {
	.request = raspberrypi_reset_request,
	.rfree = raspberrypi_reset_free,
	.rst_assert = raspberrypi_reset_assert,
	.rst_deassert = raspberrypi_reset_deassert,
};

static const struct udevice_id raspberrypi_reset_ids[] = {
	{ .compatible = "raspberrypi,firmware-reset" },
	{ }
};

U_BOOT_DRIVER(raspberrypi_reset) = {
	.name = "raspberrypi-reset",
	.id = UCLASS_RESET,
	.of_match = raspberrypi_reset_ids,
	.ops = &raspberrypi_reset_ops,
};

