mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
x86: apl: fsp_bindings: Add support for u64 parameters
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>
This commit is contained in:
committed by
Bin Meng
parent
491135805e
commit
858e5a1a8b
@@ -89,6 +89,28 @@ static void read_u32_prop(ofnode node, char *name, size_t count, u32 *dst)
|
|||||||
ofnode_read_u32_array(node, name, dst, count);
|
ofnode_read_u32_array(node, name, dst, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* read_string_prop() - Read a string property from devicetree
|
||||||
* @node: Valid node reference to read property from
|
* @node: Valid node reference to read property from
|
||||||
@@ -206,6 +228,12 @@ static int fsp_update_config_from_dtb(ofnode node, u8 *cfg,
|
|||||||
read_u32_prop(node, fspb->propname, fspb->count,
|
read_u32_prop(node, fspb->propname, fspb->count,
|
||||||
(u32 *)&cfg[fspb->offset]);
|
(u32 *)&cfg[fspb->offset]);
|
||||||
break;
|
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:
|
case FSP_STRING:
|
||||||
read_string_prop(node, fspb->propname, fspb->count,
|
read_string_prop(node, fspb->propname, fspb->count,
|
||||||
(char *)&cfg[fspb->offset]);
|
(char *)&cfg[fspb->offset]);
|
||||||
|
@@ -17,6 +17,7 @@ enum conf_type {
|
|||||||
FSP_UINT8,
|
FSP_UINT8,
|
||||||
FSP_UINT16,
|
FSP_UINT16,
|
||||||
FSP_UINT32,
|
FSP_UINT32,
|
||||||
|
FSP_UINT64,
|
||||||
FSP_STRING,
|
FSP_STRING,
|
||||||
FSP_LPDDR4_SWIZZLE,
|
FSP_LPDDR4_SWIZZLE,
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user