|
|
|
@ -852,17 +852,17 @@ int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
const void *val, int len); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_inplace_cell - change the value of a single-cell property |
|
|
|
|
* fdt_setprop_inplace_u32 - change the value of a 32-bit integer property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: cell (32-bit integer) value to replace the property with |
|
|
|
|
* @val: 32-bit integer value to replace the property with |
|
|
|
|
* |
|
|
|
|
* fdt_setprop_inplace_cell() replaces the value of a given property |
|
|
|
|
* with the 32-bit integer cell value in val, converting val to |
|
|
|
|
* big-endian if necessary. This function cannot change the size of a |
|
|
|
|
* property, and so will only work if the property already exists and |
|
|
|
|
* has length 4. |
|
|
|
|
* fdt_setprop_inplace_u32() replaces the value of a given property |
|
|
|
|
* with the 32-bit integer value in val, converting val to big-endian |
|
|
|
|
* if necessary. This function cannot change the size of a property, |
|
|
|
|
* and so will only work if the property already exists and has length |
|
|
|
|
* 4. |
|
|
|
|
* |
|
|
|
|
* This function will alter only the bytes in the blob which contain |
|
|
|
|
* the given property value, and will not alter or move any other part |
|
|
|
@ -871,7 +871,7 @@ int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, if the property's length is not equal to 4 |
|
|
|
|
* -FDT_ERR_NOTFOUND, node does not have the named property |
|
|
|
|
* -FDT_ERR_NOTFOUND, node does not have the named property |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
@ -879,14 +879,60 @@ int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint32_t val) |
|
|
|
|
static inline int fdt_setprop_inplace_u32(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt32(val); |
|
|
|
|
return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_inplace_u64 - change the value of a 64-bit integer property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: 64-bit integer value to replace the property with |
|
|
|
|
* |
|
|
|
|
* fdt_setprop_inplace_u64() replaces the value of a given property |
|
|
|
|
* with the 64-bit integer value in val, converting val to big-endian |
|
|
|
|
* if necessary. This function cannot change the size of a property, |
|
|
|
|
* and so will only work if the property already exists and has length |
|
|
|
|
* 8. |
|
|
|
|
* |
|
|
|
|
* This function will alter only the bytes in the blob which contain |
|
|
|
|
* the given property value, and will not alter or move any other part |
|
|
|
|
* of the tree. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, if the property's length is not equal to 8 |
|
|
|
|
* -FDT_ERR_NOTFOUND, node does not have the named property |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_inplace_u64(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint64_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt64(val); |
|
|
|
|
return fdt_setprop_inplace(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_inplace_cell - change the value of a single-cell property |
|
|
|
|
* |
|
|
|
|
* This is an alternative name for fdt_setprop_inplace_u32() |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_inplace_cell(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
return fdt_setprop_inplace_u32(fdt, nodeoffset, name, val); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_nop_property - replace a property with nop tags |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to nop |
|
|
|
@ -945,11 +991,20 @@ int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size); |
|
|
|
|
int fdt_finish_reservemap(void *fdt); |
|
|
|
|
int fdt_begin_node(void *fdt, const char *name); |
|
|
|
|
int fdt_property(void *fdt, const char *name, const void *val, int len); |
|
|
|
|
static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) |
|
|
|
|
static inline int fdt_property_u32(void *fdt, const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt32(val); |
|
|
|
|
return fdt_property(fdt, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
static inline int fdt_property_u64(void *fdt, const char *name, uint64_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt64(val); |
|
|
|
|
return fdt_property(fdt, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
return fdt_property_u32(fdt, name, val); |
|
|
|
|
} |
|
|
|
|
#define fdt_property_string(fdt, name, str) \ |
|
|
|
|
fdt_property(fdt, name, str, strlen(str)+1) |
|
|
|
|
int fdt_end_node(void *fdt); |
|
|
|
@ -959,6 +1014,7 @@ int fdt_finish(void *fdt); |
|
|
|
|
/* Read-write functions */ |
|
|
|
|
/**********************************************************************/ |
|
|
|
|
|
|
|
|
|
int fdt_create_empty_tree(void *buf, int bufsize); |
|
|
|
|
int fdt_open_into(const void *fdt, void *buf, int bufsize); |
|
|
|
|
int fdt_pack(void *fdt); |
|
|
|
|
|
|
|
|
@ -1068,14 +1124,14 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
const void *val, int len); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_cell - set a property to a single cell value |
|
|
|
|
* fdt_setprop_u32 - set a property to a 32-bit integer |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: 32-bit integer value for the property (native endian) |
|
|
|
|
* |
|
|
|
|
* fdt_setprop_cell() sets the value of the named property in the |
|
|
|
|
* given node to the given cell value (converting to big-endian if |
|
|
|
|
* fdt_setprop_u32() sets the value of the named property in the given |
|
|
|
|
* node to the given 32-bit integer value (converting to big-endian if |
|
|
|
|
* necessary), or creates a new property with that value if it does |
|
|
|
|
* not already exist. |
|
|
|
|
* |
|
|
|
@ -1095,14 +1151,60 @@ int fdt_setprop(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
uint32_t val) |
|
|
|
|
static inline int fdt_setprop_u32(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
uint32_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt32(val); |
|
|
|
|
return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_u64 - set a property to a 64-bit integer |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: 64-bit integer value for the property (native endian) |
|
|
|
|
* |
|
|
|
|
* fdt_setprop_u64() sets the value of the named property in the given |
|
|
|
|
* node to the given 64-bit integer value (converting to big-endian if |
|
|
|
|
* necessary), or creates a new property with that value if it does |
|
|
|
|
* not already exist. |
|
|
|
|
* |
|
|
|
|
* This function may insert or delete data from the blob, and will |
|
|
|
|
* therefore change the offsets of some existing nodes. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, there is insufficient free space in the blob to |
|
|
|
|
* contain the new property value |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_u64(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
uint64_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt64(val); |
|
|
|
|
return fdt_setprop(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_cell - set a property to a single cell value |
|
|
|
|
* |
|
|
|
|
* This is an alternative name for fdt_setprop_u32() |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
uint32_t val) |
|
|
|
|
{ |
|
|
|
|
return fdt_setprop_u32(fdt, nodeoffset, name, val); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_setprop_string - set a property to a string value |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
@ -1134,6 +1236,147 @@ static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_appendprop - append to or create a property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to append to |
|
|
|
|
* @val: pointer to data to append to the property value |
|
|
|
|
* @len: length of the data to append to the property value |
|
|
|
|
* |
|
|
|
|
* fdt_appendprop() appends the value to the named property in the |
|
|
|
|
* given node, creating the property if it does not already exist. |
|
|
|
|
* |
|
|
|
|
* This function may insert data into the blob, and will therefore |
|
|
|
|
* change the offsets of some existing nodes. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, there is insufficient free space in the blob to |
|
|
|
|
* contain the new property value |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
int fdt_appendprop(void *fdt, int nodeoffset, const char *name, |
|
|
|
|
const void *val, int len); |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_appendprop_u32 - append a 32-bit integer value to a property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: 32-bit integer value to append to the property (native endian) |
|
|
|
|
* |
|
|
|
|
* fdt_appendprop_u32() appends the given 32-bit integer value |
|
|
|
|
* (converting to big-endian if necessary) to the value of the named |
|
|
|
|
* property in the given node, or creates a new property with that |
|
|
|
|
* value if it does not already exist. |
|
|
|
|
* |
|
|
|
|
* This function may insert data into the blob, and will therefore |
|
|
|
|
* change the offsets of some existing nodes. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, there is insufficient free space in the blob to |
|
|
|
|
* contain the new property value |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_appendprop_u32(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt32(val); |
|
|
|
|
return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_appendprop_u64 - append a 64-bit integer value to a property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @val: 64-bit integer value to append to the property (native endian) |
|
|
|
|
* |
|
|
|
|
* fdt_appendprop_u64() appends the given 64-bit integer value |
|
|
|
|
* (converting to big-endian if necessary) to the value of the named |
|
|
|
|
* property in the given node, or creates a new property with that |
|
|
|
|
* value if it does not already exist. |
|
|
|
|
* |
|
|
|
|
* This function may insert data into the blob, and will therefore |
|
|
|
|
* change the offsets of some existing nodes. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, there is insufficient free space in the blob to |
|
|
|
|
* contain the new property value |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_appendprop_u64(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint64_t val) |
|
|
|
|
{ |
|
|
|
|
val = cpu_to_fdt64(val); |
|
|
|
|
return fdt_appendprop(fdt, nodeoffset, name, &val, sizeof(val)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_appendprop_cell - append a single cell value to a property |
|
|
|
|
* |
|
|
|
|
* This is an alternative name for fdt_appendprop_u32() |
|
|
|
|
*/ |
|
|
|
|
static inline int fdt_appendprop_cell(void *fdt, int nodeoffset, |
|
|
|
|
const char *name, uint32_t val) |
|
|
|
|
{ |
|
|
|
|
return fdt_appendprop_u32(fdt, nodeoffset, name, val); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_appendprop_string - append a string to a property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to change |
|
|
|
|
* @name: name of the property to change |
|
|
|
|
* @str: string value to append to the property |
|
|
|
|
* |
|
|
|
|
* fdt_appendprop_string() appends the given string to the value of |
|
|
|
|
* the named property in the given node, or creates a new property |
|
|
|
|
* with that value if it does not already exist. |
|
|
|
|
* |
|
|
|
|
* This function may insert data into the blob, and will therefore |
|
|
|
|
* change the offsets of some existing nodes. |
|
|
|
|
* |
|
|
|
|
* returns: |
|
|
|
|
* 0, on success |
|
|
|
|
* -FDT_ERR_NOSPACE, there is insufficient free space in the blob to |
|
|
|
|
* contain the new property value |
|
|
|
|
* -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_BADMAGIC, |
|
|
|
|
* -FDT_ERR_BADVERSION, |
|
|
|
|
* -FDT_ERR_BADSTATE, |
|
|
|
|
* -FDT_ERR_BADSTRUCTURE, |
|
|
|
|
* -FDT_ERR_BADLAYOUT, |
|
|
|
|
* -FDT_ERR_TRUNCATED, standard meanings |
|
|
|
|
*/ |
|
|
|
|
#define fdt_appendprop_string(fdt, nodeoffset, name, str) \ |
|
|
|
|
fdt_appendprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* fdt_delprop - delete a property |
|
|
|
|
* @fdt: pointer to the device tree blob |
|
|
|
|
* @nodeoffset: offset of the node whose property to nop |
|
|
|
|