x86: apl: fsp_bindings: Add support for u64 parameters
authorBernhard Messerklinger <bernhard.messerklinger@br-automation.com>
Wed, 22 Jul 2020 07:29:38 +0000 (09:29 +0200)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 3 Aug 2020 02:46:56 +0000 (10:46 +0800)
Add FSP_UINT64 read support as preparation for FSP-M and FSP-S parameter
update.

Signed-off-by: Bernhard Messerklinger <bernhard.messerklinger@br-automation.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/x86/cpu/apollolake/fsp_bindings.c
arch/x86/include/asm/arch-apollolake/fsp_bindings.h

index 9130af9..130366b 100644 (file)
@@ -90,6 +90,28 @@ static void read_u32_prop(ofnode node, char *name, size_t count, u32 *dst)
 }
 
 /**
+ * read_u64_prop() - Read an u64 property from devicetree (scalar or array)
+ * @node:  Valid node reference to read property from
+ * @name:  Name of the property to read from
+ * @count: If the property is expected to be an array, this is the
+ *         number of expected elements
+ *         set to 0 if the property is expected to be a scalar
+ * @dst:   Pointer to destination of where to save the value(s) read
+ *         from devicetree
+ */
+static int read_u64_prop(ofnode node, char *name, size_t count, u64 *dst)
+{
+       if (count == 0) {
+               ofnode_read_u64(node, name, dst);
+       } else {
+               debug("ERROR: %s u64 arrays not supported!\n", __func__);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+/**
  * read_string_prop() - Read a string property from devicetree
  * @node:  Valid node reference to read property from
  * @name:  Name of the property to read from
@@ -206,6 +228,12 @@ static int fsp_update_config_from_dtb(ofnode node, u8 *cfg,
                        read_u32_prop(node, fspb->propname, fspb->count,
                                      (u32 *)&cfg[fspb->offset]);
                break;
+               case FSP_UINT64:
+                       ret = read_u64_prop(node, fspb->propname, fspb->count,
+                                     (u64 *)&cfg[fspb->offset]);
+                       if (ret)
+                               return ret;
+               break;
                case FSP_STRING:
                        read_string_prop(node, fspb->propname, fspb->count,
                                         (char *)&cfg[fspb->offset]);
index b493951..a80e66b 100644 (file)
@@ -17,6 +17,7 @@ enum conf_type {
        FSP_UINT8,
        FSP_UINT16,
        FSP_UINT32,
+       FSP_UINT64,
        FSP_STRING,
        FSP_LPDDR4_SWIZZLE,
 };