Rev 1895 | Rev 1897 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1895 | Rev 1896 | ||
---|---|---|---|
Line 54... | Line 54... | ||
54 | char name[OFW_TREE_PROPERTY_MAX_NAMELEN]; |
54 | char name[OFW_TREE_PROPERTY_MAX_NAMELEN]; |
55 | size_t size; |
55 | size_t size; |
56 | void *value; |
56 | void *value; |
57 | }; |
57 | }; |
58 | 58 | ||
- | 59 | /* |
|
- | 60 | * Definition of 'reg' and 'ranges' properties for various buses. |
|
- | 61 | */ |
|
- | 62 | ||
- | 63 | struct ofw_fhc_reg { |
|
- | 64 | uint64_t addr; |
|
- | 65 | uint32_t size; |
|
- | 66 | } __attribute__ ((packed)); |
|
- | 67 | typedef struct ofw_fhc_reg ofw_fhc_reg_t; |
|
- | 68 | ||
- | 69 | struct ofw_fhc_range { |
|
- | 70 | uint64_t child_base; |
|
- | 71 | uint64_t parent_base; |
|
- | 72 | uint32_t size; |
|
- | 73 | } __attribute__ ((packed)); |
|
- | 74 | typedef struct ofw_fhc_range ofw_fhc_range_t; |
|
- | 75 | ||
- | 76 | struct ofw_central_reg { |
|
- | 77 | uint64_t addr; |
|
- | 78 | uint32_t size; |
|
- | 79 | } __attribute__ ((packed)); |
|
- | 80 | typedef struct ofw_central_reg ofw_central_reg_t; |
|
- | 81 | ||
- | 82 | struct ofw_central_range { |
|
- | 83 | uint64_t child_base; |
|
- | 84 | uint64_t parent_base; |
|
- | 85 | uint32_t size; |
|
- | 86 | } __attribute__ ((packed)); |
|
- | 87 | typedef struct ofw_central_range ofw_central_range_t; |
|
- | 88 | ||
- | 89 | struct ofw_ebus_reg { |
|
- | 90 | uint32_t space; |
|
- | 91 | uint32_t addr; |
|
- | 92 | uint32_t size; |
|
- | 93 | } __attribute__ ((packed)); |
|
- | 94 | typedef struct ofw_ebus_reg ofw_ebus_reg_t; |
|
- | 95 | ||
- | 96 | struct ofw_ebus_range { |
|
- | 97 | uint32_t child_space; |
|
- | 98 | uint32_t child_base; |
|
- | 99 | uint32_t parent_space; |
|
- | 100 | uint64_t parent_base; /* group phys.mid and phys.lo together */ |
|
- | 101 | uint32_t size; |
|
- | 102 | } __attribute__ ((packed)); |
|
- | 103 | typedef struct ofw_ebus_range ofw_ebus_range_t; |
|
- | 104 | ||
- | 105 | struct ofw_pci_reg { |
|
- | 106 | uint32_t space; /* needs to masked to obtain pure space id */ |
|
- | 107 | uint64_t addr; /* group phys.mid and phys.lo together */ |
|
- | 108 | uint64_t size; |
|
- | 109 | } __attribute__ ((packed)); |
|
- | 110 | typedef struct ofw_pci_reg ofw_pci_reg_t; |
|
- | 111 | ||
- | 112 | struct ofw_pci_range { |
|
- | 113 | uint32_t space; |
|
- | 114 | uint64_t child_base; /* group phys.mid and phys.lo together */ |
|
- | 115 | uint64_t parent_base; |
|
- | 116 | uint64_t size; |
|
- | 117 | } __attribute__ ((packed)); |
|
- | 118 | typedef struct ofw_pci_range ofw_pci_range_t; |
|
- | 119 | ||
- | 120 | struct ofw_ffb_reg { |
|
- | 121 | } __attribute__ ((packed)); |
|
- | 122 | typedef struct ofw_ffb_reg ofw_ffb_reg_t; |
|
- | 123 | ||
59 | extern void ofw_tree_init(ofw_tree_node_t *root); |
124 | extern void ofw_tree_init(ofw_tree_node_t *root); |
60 | extern void ofw_tree_print(void); |
125 | extern void ofw_tree_print(void); |
61 | extern const char *ofw_tree_node_name(const ofw_tree_node_t *node); |
126 | extern const char *ofw_tree_node_name(const ofw_tree_node_t *node); |
62 | extern ofw_tree_node_t *ofw_tree_lookup(const char *path); |
127 | extern ofw_tree_node_t *ofw_tree_lookup(const char *path); |
- | 128 | extern ofw_tree_property_t *ofw_tree_getprop(const ofw_tree_node_t *node, const char *name); |
|
- | 129 | ||
- | 130 | extern bool ofw_fhc_apply_ranges(ofw_tree_node_t *node, ofw_fhc_reg_t *reg, uintptr_t *pa); |
|
- | 131 | extern bool ofw_central_apply_ranges(ofw_tree_node_t *node, ofw_central_reg_t *reg, uintptr_t *pa); |
|
- | 132 | extern bool ofw_ebus_apply_ranges(ofw_tree_node_t *node, ofw_ebus_reg_t *reg, uintptr_t *pa); |
|
- | 133 | extern bool ofw_pci_apply_ranges(ofw_tree_node_t *node, ofw_pci_reg_t *reg, uintptr_t *pa); |
|
- | 134 | extern bool ofw_ffb_apply_ranges(ofw_tree_node_t *node, ofw_ffb_reg_t *reg, uintptr_t *pa); |
|
63 | 135 | ||
64 | #endif |
136 | #endif |