fdtdec: Implement fdtdec_set_phandle()
[platform/kernel/u-boot.git] / include / fdtdec.h
index be34dca..ba7f873 100644 (file)
  */
 typedef phys_addr_t fdt_addr_t;
 typedef phys_size_t fdt_size_t;
+
+static inline fdt32_t fdt_addr_unpack(fdt_addr_t addr, fdt32_t *upper)
+{
+       if (upper)
+#ifdef CONFIG_PHYS_64BIT
+               *upper = addr >> 32;
+#else
+               *upper = 0;
+#endif
+
+       return addr;
+}
+
+static inline fdt32_t fdt_size_unpack(fdt_size_t size, fdt32_t *upper)
+{
+       if (upper)
+#ifdef CONFIG_PHYS_64BIT
+               *upper = size >> 32;
+#else
+               *upper = 0;
+#endif
+
+       return size;
+}
+
 #ifdef CONFIG_PHYS_64BIT
 #define FDT_ADDR_T_NONE (-1U)
 #define fdt_addr_to_cpu(reg) be64_to_cpu(reg)
@@ -996,6 +1021,17 @@ int fdtdec_setup_memory_banksize_fdt(const void *blob);
 int fdtdec_setup_memory_banksize(void);
 
 /**
+ * fdtdec_set_phandle() - sets the phandle of a given node
+ *
+ * @param blob         FDT blob
+ * @param node         offset in the FDT blob of the node whose phandle is to
+ *                     be set
+ * @param phandle      phandle to set for the given node
+ * @return 0 on success or a negative error code on failure
+ */
+int fdtdec_set_phandle(void *blob, int node, uint32_t phandle);
+
+/**
  * Set up the device tree ready for use
  */
 int fdtdec_setup(void);