of_device_common.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _OF_DEVICE_COMMON_H
  3. #define _OF_DEVICE_COMMON_H
  4. static inline u64 of_read_addr(const u32 *cell, int size)
  5. {
  6. u64 r = 0;
  7. while (size--)
  8. r = (r << 32) | *(cell++);
  9. return r;
  10. }
  11. void of_bus_default_count_cells(struct device_node *dev, int *addrc,
  12. int *sizec);
  13. int of_out_of_range(const u32 *addr, const u32 *base,
  14. const u32 *size, int na, int ns);
  15. int of_bus_default_map(u32 *addr, const u32 *range, int na, int ns, int pna);
  16. unsigned long of_bus_default_get_flags(const u32 *addr, unsigned long flags);
  17. int of_bus_sbus_match(struct device_node *np);
  18. void of_bus_sbus_count_cells(struct device_node *child, int *addrc, int *sizec);
  19. /* Max address size we deal with */
  20. #define OF_MAX_ADDR_CELLS 4
  21. struct of_bus {
  22. const char *name;
  23. const char *addr_prop_name;
  24. int (*match)(struct device_node *parent);
  25. void (*count_cells)(struct device_node *child,
  26. int *addrc, int *sizec);
  27. int (*map)(u32 *addr, const u32 *range,
  28. int na, int ns, int pna);
  29. unsigned long (*get_flags)(const u32 *addr, unsigned long);
  30. };
  31. #endif /* _OF_DEVICE_COMMON_H */