hc
2024-03-22 619f0f87159c5dbd2755b1b0a0eb35784be84e7a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// SPDX-License-Identifier: BSD-2-Clause
/*
 * fdt_helper.h - Flat Device Tree parsing helper routines
 * Implement helper routines to parse FDT nodes on top of
 * libfdt for OpenSBI usage
 *
 * Copyright (C) 2020 Bin Meng <bmeng.cn@gmail.com>
 */
 
#ifndef __FDT_HELPER_H__
#define __FDT_HELPER_H__
 
#include <sbi/sbi_types.h>
 
struct fdt_match {
   const char *compatible;
   void *data;
};
 
struct platform_uart_data {
   unsigned long addr;
   unsigned long freq;
   unsigned long baud;
   unsigned long reg_shift;
   unsigned long reg_io_width;
};
 
const struct fdt_match *fdt_match_node(void *fdt, int nodeoff,
                      const struct fdt_match *match_table);
 
int fdt_find_match(void *fdt, int startoff,
          const struct fdt_match *match_table,
          const struct fdt_match **out_match);
 
int fdt_get_node_addr_size(void *fdt, int node, unsigned long *addr,
              unsigned long *size);
 
int fdt_parse_hart_id(void *fdt, int cpu_offset, u32 *hartid);
 
int fdt_parse_max_hart_id(void *fdt, u32 *max_hartid);
 
int fdt_parse_shakti_uart_node(void *fdt, int nodeoffset,
                  struct platform_uart_data *uart);
 
int fdt_parse_sifive_uart_node(void *fdt, int nodeoffset,
                  struct platform_uart_data *uart);
 
int fdt_parse_uart8250_node(void *fdt, int nodeoffset,
               struct platform_uart_data *uart);
 
int fdt_parse_uart8250(void *fdt, struct platform_uart_data *uart,
              const char *compatible);
 
struct plic_data;
 
int fdt_parse_plic_node(void *fdt, int nodeoffset, struct plic_data *plic);
 
int fdt_parse_plic(void *fdt, struct plic_data *plic, const char *compat);
 
struct clint_data;
 
int fdt_parse_clint_node(void *fdt, int nodeoffset, bool for_timer,
            struct clint_data *clint);
 
int fdt_parse_compat_addr(void *fdt, unsigned long *addr,
             const char *compatible);
 
#endif /* __FDT_HELPER_H__ */