Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
// SPDX-License-Identifier: GPL-2.0-only
/*
* ZTE zx296702 SoC reset code
*
* Copyright (c) 2015 Linaro Ltd.
*
* Author: Jun Nie <jun.nie@linaro.org>
*/
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
#include <linux/reboot.h>
static void __iomem *base;
static void __iomem *pcu_base;
static int zx_restart_handler(struct notifier_block *this,
<------><------><------> unsigned long mode, void *cmd)
{
<------>writel_relaxed(1, base + 0xb0);
<------>writel_relaxed(1, pcu_base + 0x34);
<------>mdelay(50);
<------>pr_emerg("Unable to restart system\n");
<------>return NOTIFY_DONE;
}
static struct notifier_block zx_restart_nb = {
<------>.notifier_call = zx_restart_handler,
<------>.priority = 128,
};
static int zx_reboot_probe(struct platform_device *pdev)
{
<------>struct device_node *np = pdev->dev.of_node;
<------>int err;
<------>base = of_iomap(np, 0);
<------>if (!base) {
<------><------>WARN(1, "failed to map base address");
<------><------>return -ENODEV;
<------>}
<------>np = of_find_compatible_node(NULL, NULL, "zte,zx296702-pcu");
<------>pcu_base = of_iomap(np, 0);
<------>of_node_put(np);
<------>if (!pcu_base) {
<------><------>iounmap(base);
<------><------>WARN(1, "failed to map pcu_base address");
<------><------>return -ENODEV;
<------>}
<------>err = register_restart_handler(&zx_restart_nb);
<------>if (err) {
<------><------>iounmap(base);
<------><------>iounmap(pcu_base);
<------><------>dev_err(&pdev->dev, "Register restart handler failed(err=%d)\n",
<------><------><------>err);
<------>}
<------>return err;
}
static const struct of_device_id zx_reboot_of_match[] = {
<------>{ .compatible = "zte,sysctrl" },
<------>{}
};
MODULE_DEVICE_TABLE(of, zx_reboot_of_match);
static struct platform_driver zx_reboot_driver = {
<------>.probe = zx_reboot_probe,
<------>.driver = {
<------><------>.name = "zx-reboot",
<------><------>.of_match_table = zx_reboot_of_match,
<------>},
};
module_platform_driver(zx_reboot_driver);
MODULE_DESCRIPTION("ZTE SoCs reset driver");
MODULE_AUTHOR("Jun Nie <jun.nie@linaro.org>");
MODULE_LICENSE("GPL v2");