Files
MilkV-Duo/opensbi/include/sbi_utils/fdt/fdt_domain.h
sam.xiang 93f81bd490 [opensbi] create opensbi from T-Head official:
repo: https://github.com/T-head-Semi/opensbi
	commit: 89182b257c8798e15e4c685c1af0c2862d528d2a

Change-Id: I7b39d66729e0108661a6f4c9e28acbdb303684ea
2023-03-10 20:30:16 +08:00

74 lines
1.9 KiB
C

// SPDX-License-Identifier: BSD-2-Clause
/*
* fdt_domain.c - Flat Device Tree Domain helper routines
*
* Copyright (c) 2020 Western Digital Corporation or its affiliates.
*
* Authors:
* Anup Patel <anup.patel@wdc.com>
*/
#ifndef __FDT_DOMAIN_H__
#define __FDT_DOMAIN_H__
#include <sbi/sbi_types.h>
struct sbi_domain;
/**
* Iterate over each domains in device tree
*
* @param fdt device tree blob
* @param opaque private pointer for each iteration
* @param fn callback function for each iteration
*
* @return 0 on success and negative error code on failure
*/
int fdt_iterate_each_domain(void *fdt, void *opaque,
int (*fn)(void *fdt, int domain_offset,
void *opaque));
/**
* Iterate over each memregion of a domain in device tree
*
* @param fdt device tree blob
* @param domain_offset domain DT node offset
* @param opaque private pointer for each iteration
* @param fn callback function for each iteration
*
* @return 0 on success and negative error code on failure
*/
int fdt_iterate_each_memregion(void *fdt, int domain_offset, void *opaque,
int (*fn)(void *fdt, int domain_offset,
int region_offset, u32 region_access,
void *opaque));
/**
* Fix up the domain configuration in the device tree
*
* This routine:
* 1. Disables MMIO devices not accessible to the coldboot HART domain
* 2. Removes "opensbi-domain" DT property from CPU DT nodes
* 3. Removes domain configuration DT node under /chosen DT node
*
* It is recommended that platform support call this function in
* their final_init() platform operation.
*
* @param fdt device tree blob
*/
void fdt_domain_fixup(void *fdt);
/**
* Populate domains from device tree
*
* It is recommended that platform support call this function in
* their domains_init() platform operation.
*
* @param fdt device tree blob
*
* @return 0 on success and negative error code on failure
*/
int fdt_domains_populate(void *fdt);
#endif /* __FDT_DOMAIN_H__ */