Files
opensbi/lib/utils/ipi/fdt_ipi_plicsw.c
Samuel Holland 5fa510c5f6 lib: utils/ipi: Use fdt_driver for initialization
The ipi driver subsystem does not need any extra data, so it can use
`struct fdt_driver` directly. The generic fdt_ipi_init() performs a
best-effort initialization of all matching DT nodes.

Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
2024-11-28 17:42:05 +05:30

46 lines
982 B
C

/*
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2022 Andes Technology Corporation
*
* Authors:
* Zong Li <zong@andestech.com>
* Nylon Chen <nylon7@andestech.com>
* Leo Yu-Chi Liang <ycliang@andestech.com>
* Yu Chien Peter Lin <peterlin@andestech.com>
*/
#include <sbi/riscv_io.h>
#include <sbi_utils/fdt/fdt_helper.h>
#include <sbi_utils/ipi/fdt_ipi.h>
#include <sbi_utils/ipi/andes_plicsw.h>
extern struct plicsw_data plicsw;
int fdt_plicsw_cold_ipi_init(const void *fdt, int nodeoff,
const struct fdt_match *match)
{
int rc;
rc = fdt_parse_plicsw_node(fdt, nodeoff, &plicsw.addr, &plicsw.size,
&plicsw.hart_count);
if (rc)
return rc;
rc = plicsw_cold_ipi_init(&plicsw);
if (rc)
return rc;
return 0;
}
static const struct fdt_match ipi_plicsw_match[] = {
{ .compatible = "andestech,plicsw" },
{},
};
const struct fdt_driver fdt_ipi_plicsw = {
.match_table = ipi_plicsw_match,
.init = fdt_plicsw_cold_ipi_init,
};