ofw_internal.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-08-25 GuEe-GUI first version
  9. */
  10. #ifndef __OFW_INTERNAL_H__
  11. #define __OFW_INTERNAL_H__
  12. #include <rtthread.h>
  13. #include <drivers/ofw.h>
  14. #define OFW_PHANDLE_MIN 1
  15. #define OFW_PHANDLE_MAX FDT_MAX_PHANDLE
  16. #define OFW_NODE_MAX_DEPTH 64
  17. #define OFW_NODE_MIN_HASH 128
  18. #define OFW_ROOT_NODE_ADDR_CELLS_DEFAULT 1
  19. #define OFW_ROOT_NODE_SIZE_CELLS_DEFAULT 1
  20. struct fdt_info
  21. {
  22. /* Always "/", because we save "ofw" information in root node. */
  23. char name[sizeof("/")];
  24. /* Information start */
  25. void *fdt;
  26. /* Only root can use */
  27. struct fdt_reserve_entry *rsvmap;
  28. rt_size_t rsvmap_nr;
  29. };
  30. struct alias_info
  31. {
  32. rt_list_t list;
  33. int id;
  34. const char *tag;
  35. rt_size_t tag_len;
  36. struct rt_ofw_node *np;
  37. };
  38. struct bus_ranges
  39. {
  40. rt_size_t nr;
  41. rt_uint64_t *child_addr;
  42. rt_uint64_t *parent_addr;
  43. rt_uint64_t *child_size;
  44. };
  45. extern struct rt_ofw_node *ofw_node_root;
  46. extern struct rt_ofw_node *ofw_node_cpus;
  47. extern struct rt_ofw_node *ofw_node_chosen;
  48. extern struct rt_ofw_node *ofw_node_aliases;
  49. extern struct rt_ofw_node *ofw_node_reserved_memory;
  50. extern struct rt_fdt_earlycon fdt_earlycon;
  51. #define ofw_static_cast(to_type, value) \
  52. (to_type)(((value) >> ((sizeof(value) - sizeof(to_type)) * 8)))
  53. rt_err_t ofw_alias_scan(void);
  54. rt_err_t ofw_phandle_hash_reset(rt_phandle min, rt_phandle max);
  55. #endif /* __OFW_INTERNAL_H__ */