arm64: a37xx: Enable Marvell ETH PHY support
[platform/kernel/u-boot.git] / include / fdtdec.h
index 151c590..d074478 100644 (file)
@@ -148,13 +148,13 @@ enum fdt_compat_id {
        COMPAT_INTEL_MICROCODE,         /* Intel microcode update */
        COMPAT_AMS_AS3722,              /* AMS AS3722 PMIC */
        COMPAT_INTEL_QRK_MRC,           /* Intel Quark MRC */
-       COMPAT_SOCIONEXT_XHCI,          /* Socionext UniPhier xHCI */
        COMPAT_ALTERA_SOCFPGA_DWMAC,    /* SoCFPGA Ethernet controller */
        COMPAT_ALTERA_SOCFPGA_DWMMC,    /* SoCFPGA DWMMC controller */
        COMPAT_ALTERA_SOCFPGA_DWC2USB,  /* SoCFPGA DWC2 USB controller */
        COMPAT_INTEL_BAYTRAIL_FSP,      /* Intel Bay Trail FSP */
        COMPAT_INTEL_BAYTRAIL_FSP_MDP,  /* Intel FSP memory-down params */
        COMPAT_INTEL_IVYBRIDGE_FSP,     /* Intel Ivy Bridge FSP */
+       COMPAT_SUNXI_NAND,              /* SUNXI NAND controller */
 
        COMPAT_COUNT,
 };
@@ -296,11 +296,13 @@ int fdtdec_next_compatible_subnode(const void *blob, int node,
  * @param na   the number of cells used to represent an address
  * @param ns   the number of cells used to represent a size
  * @param sizep        a pointer to store the size into. Use NULL if not required
+ * @param translate    Indicates whether to translate the returned value
+ *                     using the parent node's ranges property.
  * @return address, if found, or FDT_ADDR_T_NONE if not
  */
 fdt_addr_t fdtdec_get_addr_size_fixed(const void *blob, int node,
                const char *prop_name, int index, int na, int ns,
-               fdt_size_t *sizep);
+               fdt_size_t *sizep, bool translate);
 
 /*
  * Look up an address property in a node and return the parsed address, and
@@ -316,10 +318,13 @@ fdt_addr_t fdtdec_get_addr_size_fixed(const void *blob, int node,
  * @param prop_name    name of property to find
  * @param index        which address to retrieve from a list of addresses. Often 0.
  * @param sizep        a pointer to store the size into. Use NULL if not required
+ * @param translate    Indicates whether to translate the returned value
+ *                     using the parent node's ranges property.
  * @return address, if found, or FDT_ADDR_T_NONE if not
  */
 fdt_addr_t fdtdec_get_addr_size_auto_parent(const void *blob, int parent,
-               int node, const char *prop_name, int index, fdt_size_t *sizep);
+               int node, const char *prop_name, int index, fdt_size_t *sizep,
+               bool translate);
 
 /*
  * Look up an address property in a node and return the parsed address, and
@@ -339,10 +344,13 @@ fdt_addr_t fdtdec_get_addr_size_auto_parent(const void *blob, int parent,
  * @param prop_name    name of property to find
  * @param index        which address to retrieve from a list of addresses. Often 0.
  * @param sizep        a pointer to store the size into. Use NULL if not required
+ * @param translate    Indicates whether to translate the returned value
+ *                     using the parent node's ranges property.
  * @return address, if found, or FDT_ADDR_T_NONE if not
  */
 fdt_addr_t fdtdec_get_addr_size_auto_noparent(const void *blob, int node,
-               const char *prop_name, int index, fdt_size_t *sizep);
+               const char *prop_name, int index, fdt_size_t *sizep,
+               bool translate);
 
 /*
  * Look up an address property in a node and return the parsed address.
@@ -968,6 +976,40 @@ struct display_timing {
  */
 int fdtdec_decode_display_timing(const void *blob, int node, int index,
                                 struct display_timing *config);
+
+/**
+ * fdtdec_setup_memory_size() - decode and setup gd->ram_size
+ *
+ * Decode the /memory 'reg' property to determine the size of the first memory
+ * bank, populate the global data with the size of the first bank of memory.
+ *
+ * This function should be called from a boards dram_init(). This helper
+ * function allows for boards to query the device tree for DRAM size instead of
+ * hard coding the value in the case where the memory size cannot be detected
+ * automatically.
+ *
+ * @return 0 if OK, -EINVAL if the /memory node or reg property is missing or
+ * invalid
+ */
+int fdtdec_setup_memory_size(void);
+
+/**
+ * fdtdec_setup_memory_banksize() - decode and populate gd->bd->bi_dram
+ *
+ * Decode the /memory 'reg' property to determine the address and size of the
+ * memory banks. Use this data to populate the global data board info with the
+ * phys address and size of memory banks.
+ *
+ * This function should be called from a boards dram_init_banksize(). This
+ * helper function allows for boards to query the device tree for memory bank
+ * information instead of hard coding the information in cases where it cannot
+ * be detected automatically.
+ *
+ * @return 0 if OK, -EINVAL if the /memory node or reg property is missing or
+ * invalid
+ */
+int fdtdec_setup_memory_banksize(void);
+
 /**
  * Set up the device tree ready for use
  */