mirror of
https://github.com/raspberrypi/userland.git
synced 2025-12-06 04:49:12 +00:00
dtoverlay: Fix whitespace problems
This commit is contained in:
@@ -51,7 +51,7 @@ typedef enum
|
|||||||
#define DTOVERRIDE_BYTE_STRING 6
|
#define DTOVERRIDE_BYTE_STRING 6
|
||||||
|
|
||||||
static int dtoverlay_extract_override(const char *override_name,
|
static int dtoverlay_extract_override(const char *override_name,
|
||||||
char *override_value, int value_size,
|
char *override_value, int value_size,
|
||||||
int *phandle_ptr,
|
int *phandle_ptr,
|
||||||
const char **datap, const char *dataendp,
|
const char **datap, const char *dataendp,
|
||||||
const char **namep, int *namelenp,
|
const char **namep, int *namelenp,
|
||||||
@@ -61,7 +61,7 @@ static const char *dtoverlay_lookup_key(const char *lookup_string, const char *d
|
|||||||
const char *key, char *buf, int buf_len);
|
const char *key, char *buf, int buf_len);
|
||||||
|
|
||||||
static int dtoverlay_set_node_name(DTBLOB_T *dtb, int node_off,
|
static int dtoverlay_set_node_name(DTBLOB_T *dtb, int node_off,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
|
||||||
static void dtoverlay_stdio_logging(dtoverlay_logging_type_t type,
|
static void dtoverlay_stdio_logging(dtoverlay_logging_type_t type,
|
||||||
const char *fmt, va_list args);
|
const char *fmt, va_list args);
|
||||||
@@ -336,7 +336,7 @@ static void dynstring_free(struct dynstring *ds)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int dtoverlay_set_node_name(DTBLOB_T *dtb, int node_off,
|
static int dtoverlay_set_node_name(DTBLOB_T *dtb, int node_off,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
struct dynstring path_buf;
|
struct dynstring path_buf;
|
||||||
struct dynstring prop_buf;
|
struct dynstring prop_buf;
|
||||||
@@ -515,20 +515,20 @@ int dtoverlay_create_prop_fragment(DTBLOB_T *dtb, int idx, int target_phandle,
|
|||||||
const char *prop_name, const void *prop_data,
|
const char *prop_name, const void *prop_data,
|
||||||
int prop_len)
|
int prop_len)
|
||||||
{
|
{
|
||||||
char fragment_name[20];
|
char fragment_name[20];
|
||||||
int frag_off, ovl_off;
|
int frag_off, ovl_off;
|
||||||
int ret;
|
int ret;
|
||||||
snprintf(fragment_name, sizeof(fragment_name), "fragment-%u", idx);
|
snprintf(fragment_name, sizeof(fragment_name), "fragment-%u", idx);
|
||||||
frag_off = fdt_add_subnode(dtb->fdt, 0, fragment_name);
|
frag_off = fdt_add_subnode(dtb->fdt, 0, fragment_name);
|
||||||
if (frag_off < 0)
|
if (frag_off < 0)
|
||||||
return frag_off;
|
return frag_off;
|
||||||
ret = fdt_setprop_u32(dtb->fdt, frag_off, "target", target_phandle);
|
ret = fdt_setprop_u32(dtb->fdt, frag_off, "target", target_phandle);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
ovl_off = fdt_add_subnode(dtb->fdt, frag_off, "__overlay__");
|
ovl_off = fdt_add_subnode(dtb->fdt, frag_off, "__overlay__");
|
||||||
if (ovl_off < 0)
|
if (ovl_off < 0)
|
||||||
return ovl_off;
|
return ovl_off;
|
||||||
return fdt_setprop(dtb->fdt, ovl_off, prop_name, prop_data, prop_len);
|
return fdt_setprop(dtb->fdt, ovl_off, prop_name, prop_data, prop_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns 0 on success, otherwise <0 error code
|
// Returns 0 on success, otherwise <0 error code
|
||||||
@@ -568,7 +568,7 @@ static int dtoverlay_merge_fragment(DTBLOB_T *base_dtb, int target_off,
|
|||||||
/* Skip these system properties (only phandles in the first level) */
|
/* Skip these system properties (only phandles in the first level) */
|
||||||
if ((strcmp(prop_name, "name") == 0) ||
|
if ((strcmp(prop_name, "name") == 0) ||
|
||||||
((depth == 0) && ((strcmp(prop_name, "phandle") == 0) ||
|
((depth == 0) && ((strcmp(prop_name, "phandle") == 0) ||
|
||||||
(strcmp(prop_name, "linux,phandle") == 0))))
|
(strcmp(prop_name, "linux,phandle") == 0))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
dtoverlay_debug(" +prop(%s)", prop_name);
|
dtoverlay_debug(" +prop(%s)", prop_name);
|
||||||
@@ -1439,11 +1439,11 @@ int hex_digit(char c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int dtoverlay_override_one_target(int override_type,
|
int dtoverlay_override_one_target(int override_type,
|
||||||
const char *override_value,
|
const char *override_value,
|
||||||
DTBLOB_T *dtb, int node_off,
|
DTBLOB_T *dtb, int node_off,
|
||||||
const char *prop_name, int target_phandle,
|
const char *prop_name, int target_phandle,
|
||||||
int target_off, int target_size,
|
int target_off, int target_size,
|
||||||
void *callback_state)
|
void *callback_state)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
@@ -1454,19 +1454,19 @@ int dtoverlay_override_one_target(int override_type,
|
|||||||
|
|
||||||
/* Replace the whole property with the string */
|
/* Replace the whole property with the string */
|
||||||
if ((strcmp(prop_name, "bootargs") == 0) &&
|
if ((strcmp(prop_name, "bootargs") == 0) &&
|
||||||
((prop_val = fdt_getprop_w(dtb->fdt, node_off, prop_name,
|
((prop_val = fdt_getprop_w(dtb->fdt, node_off, prop_name,
|
||||||
&prop_len)) != NULL) &&
|
&prop_len)) != NULL) &&
|
||||||
(prop_len > 0) && prop_val[0])
|
(prop_len > 0) && prop_val[0])
|
||||||
{
|
{
|
||||||
prop_val[prop_len - 1] = ' ';
|
prop_val[prop_len - 1] = ' ';
|
||||||
err = fdt_appendprop_string(dtb->fdt, node_off, prop_name, override_value);
|
err = fdt_appendprop_string(dtb->fdt, node_off, prop_name, override_value);
|
||||||
}
|
}
|
||||||
else if (strcmp(prop_name, "name") == 0) // "name" is a pseudo-property
|
else if (strcmp(prop_name, "name") == 0) // "name" is a pseudo-property
|
||||||
{
|
{
|
||||||
err = dtoverlay_set_node_name(dtb, node_off, override_value);
|
err = dtoverlay_set_node_name(dtb, node_off, override_value);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
err = fdt_setprop_string(dtb->fdt, node_off, prop_name, override_value);
|
err = fdt_setprop_string(dtb->fdt, node_off, prop_name, override_value);
|
||||||
}
|
}
|
||||||
else if (override_type == DTOVERRIDE_BYTE_STRING)
|
else if (override_type == DTOVERRIDE_BYTE_STRING)
|
||||||
{
|
{
|
||||||
@@ -1540,44 +1540,44 @@ int dtoverlay_override_one_target(int override_type,
|
|||||||
switch (override_type)
|
switch (override_type)
|
||||||
{
|
{
|
||||||
case DTOVERRIDE_INTEGER:
|
case DTOVERRIDE_INTEGER:
|
||||||
/* Patch a word within the property */
|
/* Patch a word within the property */
|
||||||
prop_val = (void *)fdt_getprop(dtb->fdt, node_off, prop_name,
|
prop_val = (void *)fdt_getprop(dtb->fdt, node_off, prop_name,
|
||||||
&prop_len);
|
&prop_len);
|
||||||
new_prop_len = target_off + target_size;
|
new_prop_len = target_off + target_size;
|
||||||
if (prop_len < new_prop_len)
|
if (prop_len < new_prop_len)
|
||||||
{
|
{
|
||||||
/* This property either doesn't exist or isn't long enough.
|
/* This property either doesn't exist or isn't long enough.
|
||||||
Create a buffer containing any existing property data
|
Create a buffer containing any existing property data
|
||||||
with zero padding, which will later be patched and written
|
with zero padding, which will later be patched and written
|
||||||
back. */
|
back. */
|
||||||
prop_buf = calloc(1, new_prop_len);
|
prop_buf = calloc(1, new_prop_len);
|
||||||
if (!prop_buf)
|
if (!prop_buf)
|
||||||
{
|
{
|
||||||
dtoverlay_error(" out of memory");
|
dtoverlay_error(" out of memory");
|
||||||
return NON_FATAL(FDT_ERR_NOSPACE);
|
return NON_FATAL(FDT_ERR_NOSPACE);
|
||||||
}
|
}
|
||||||
if (prop_len > 0)
|
if (prop_len > 0)
|
||||||
memcpy(prop_buf, prop_val, prop_len);
|
memcpy(prop_buf, prop_val, prop_len);
|
||||||
prop_val = prop_buf;
|
prop_val = prop_buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (target_size)
|
switch (target_size)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
dtoverlay_write_u8(prop_val, target_off, (uint32_t)override_int);
|
dtoverlay_write_u8(prop_val, target_off, (uint32_t)override_int);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
dtoverlay_write_u16(prop_val, target_off, (uint32_t)override_int);
|
dtoverlay_write_u16(prop_val, target_off, (uint32_t)override_int);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
dtoverlay_write_u32(prop_val, target_off, (uint32_t)override_int);
|
dtoverlay_write_u32(prop_val, target_off, (uint32_t)override_int);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
dtoverlay_write_u64(prop_val, target_off, override_int);
|
dtoverlay_write_u64(prop_val, target_off, override_int);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prop_buf)
|
if (prop_buf)
|
||||||
{
|
{
|
||||||
@@ -1602,76 +1602,76 @@ int dtoverlay_override_one_target(int override_type,
|
|||||||
free(new_name);
|
free(new_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTOVERRIDE_BOOLEAN:
|
case DTOVERRIDE_BOOLEAN:
|
||||||
case DTOVERRIDE_BOOLEAN_INV:
|
case DTOVERRIDE_BOOLEAN_INV:
|
||||||
/* This is a boolean property (present->true, absent->false) */
|
/* This is a boolean property (present->true, absent->false) */
|
||||||
if (override_int ^ (override_type == DTOVERRIDE_BOOLEAN_INV))
|
if (override_int ^ (override_type == DTOVERRIDE_BOOLEAN_INV))
|
||||||
err = fdt_setprop(dtb->fdt, node_off, prop_name, NULL, 0);
|
err = fdt_setprop(dtb->fdt, node_off, prop_name, NULL, 0);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
err = fdt_delprop(dtb->fdt, node_off, prop_name);
|
err = fdt_delprop(dtb->fdt, node_off, prop_name);
|
||||||
if (err == -FDT_ERR_NOTFOUND)
|
if (err == -FDT_ERR_NOTFOUND)
|
||||||
err = 0;
|
err = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTOVERRIDE_OVERLAY:
|
case DTOVERRIDE_OVERLAY:
|
||||||
/* Apply the overlay-wide override. The supported options are (<frag> is a fragment number):
|
/* Apply the overlay-wide override. The supported options are (<frag> is a fragment number):
|
||||||
+<frag> Enable a fragment
|
+<frag> Enable a fragment
|
||||||
-<frag> Disable a fragment
|
-<frag> Disable a fragment
|
||||||
=<frag> Enable/disable the fragment according to the override value
|
=<frag> Enable/disable the fragment according to the override value
|
||||||
!<frag> Disable/enable the fragment according to the inverse of the override value */
|
!<frag> Disable/enable the fragment according to the inverse of the override value */
|
||||||
p = prop_name;
|
p = prop_name;
|
||||||
while (*p && !err)
|
while (*p && !err)
|
||||||
{
|
{
|
||||||
char type = *p;
|
char type = *p;
|
||||||
int frag_off;
|
int frag_off;
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case '+':
|
case '+':
|
||||||
case '-':
|
case '-':
|
||||||
case '=':
|
case '=':
|
||||||
case '!':
|
case '!':
|
||||||
frag_num = strtoul(p + 1, &end, 0);
|
frag_num = strtoul(p + 1, &end, 0);
|
||||||
if (end != p)
|
if (end != p)
|
||||||
{
|
{
|
||||||
/* Change fragment@<frag_num>/__overlay__<->__dormant__ as necessary */
|
/* Change fragment@<frag_num>/__overlay__<->__dormant__ as necessary */
|
||||||
const char *states[2] = { "__dormant__", "__overlay__" };
|
const char *states[2] = { "__dormant__", "__overlay__" };
|
||||||
char node_name[24];
|
char node_name[24];
|
||||||
int active = (type == '+') ||
|
int active = (type == '+') ||
|
||||||
((type == '=') && (override_int != 0)) ||
|
((type == '=') && (override_int != 0)) ||
|
||||||
((type == '!') && (override_int == 0));
|
((type == '!') && (override_int == 0));
|
||||||
snprintf(node_name, sizeof(node_name), "/fragment@%u", frag_num);
|
snprintf(node_name, sizeof(node_name), "/fragment@%u", frag_num);
|
||||||
frag_off = fdt_path_offset(dtb->fdt, node_name);
|
frag_off = fdt_path_offset(dtb->fdt, node_name);
|
||||||
if (frag_off < 0)
|
if (frag_off < 0)
|
||||||
{
|
{
|
||||||
snprintf(node_name, sizeof(node_name), "/fragment-%u", frag_num);
|
snprintf(node_name, sizeof(node_name), "/fragment-%u", frag_num);
|
||||||
frag_off = fdt_path_offset(dtb->fdt, node_name);
|
frag_off = fdt_path_offset(dtb->fdt, node_name);
|
||||||
}
|
}
|
||||||
if (frag_off >= 0)
|
if (frag_off >= 0)
|
||||||
{
|
{
|
||||||
frag_off = fdt_subnode_offset(dtb->fdt, frag_off, states[!active]);
|
frag_off = fdt_subnode_offset(dtb->fdt, frag_off, states[!active]);
|
||||||
if (frag_off >= 0)
|
if (frag_off >= 0)
|
||||||
(void)dtoverlay_set_node_name(dtb, frag_off, states[active]);
|
(void)dtoverlay_set_node_name(dtb, frag_off, states[active]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dtoverlay_error(" fragment %u not found", frag_num);
|
dtoverlay_error(" fragment %u not found", frag_num);
|
||||||
err = NON_FATAL(frag_off);
|
err = NON_FATAL(frag_off);
|
||||||
}
|
}
|
||||||
p = end;
|
p = end;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dtoverlay_error(" invalid overlay override '%s'", prop_name);
|
dtoverlay_error(" invalid overlay override '%s'", prop_name);
|
||||||
err = NON_FATAL(FDT_ERR_BADVALUE);
|
err = NON_FATAL(FDT_ERR_BADVALUE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1704,10 +1704,10 @@ Translation:
|
|||||||
// Returns 0 on success, -ve for fatal errors and +ve for non-fatal errors
|
// Returns 0 on success, -ve for fatal errors and +ve for non-fatal errors
|
||||||
// After calling this, assume all node offsets are no longer valid
|
// After calling this, assume all node offsets are no longer valid
|
||||||
int dtoverlay_foreach_override_target(DTBLOB_T *dtb, const char *override_name,
|
int dtoverlay_foreach_override_target(DTBLOB_T *dtb, const char *override_name,
|
||||||
const char *override_data, int data_len,
|
const char *override_data, int data_len,
|
||||||
const char *override_value,
|
const char *override_value,
|
||||||
override_callback_t callback,
|
override_callback_t callback,
|
||||||
void *callback_state)
|
void *callback_state)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
int target_phandle = 0;
|
int target_phandle = 0;
|
||||||
@@ -1775,7 +1775,7 @@ int dtoverlay_foreach_override_target(DTBLOB_T *dtb, const char *override_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
err = callback(override_type, target_value, dtb, node_off, prop_name,
|
err = callback(override_type, target_value, dtb, node_off, prop_name,
|
||||||
target_phandle, target_off, target_size, callback_state);
|
target_phandle, target_off, target_size, callback_state);
|
||||||
|
|
||||||
if (override_type == DTOVERRIDE_END)
|
if (override_type == DTOVERRIDE_END)
|
||||||
break;
|
break;
|
||||||
@@ -1792,10 +1792,10 @@ int dtoverlay_apply_override(DTBLOB_T *dtb, const char *override_name,
|
|||||||
const char *override_value)
|
const char *override_value)
|
||||||
{
|
{
|
||||||
return dtoverlay_foreach_override_target(dtb, override_name,
|
return dtoverlay_foreach_override_target(dtb, override_name,
|
||||||
override_data, data_len,
|
override_data, data_len,
|
||||||
override_value,
|
override_value,
|
||||||
dtoverlay_override_one_target,
|
dtoverlay_override_one_target,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns an override type (DTOVERRIDE_INTEGER, DTOVERRIDE_BOOLEAN, DTOVERRIDE_STRING, DTOVERRIDE_OVERLAY),
|
/* Returns an override type (DTOVERRIDE_INTEGER, DTOVERRIDE_BOOLEAN, DTOVERRIDE_STRING, DTOVERRIDE_OVERLAY),
|
||||||
@@ -1805,7 +1805,7 @@ static int dtoverlay_extract_override(const char *override_name,
|
|||||||
int *phandle_ptr,
|
int *phandle_ptr,
|
||||||
const char **datap, const char *data_end,
|
const char **datap, const char *data_end,
|
||||||
const char **namep, int *namelenp,
|
const char **namep, int *namelenp,
|
||||||
int *offp, int *sizep)
|
int *offp, int *sizep)
|
||||||
{
|
{
|
||||||
const char *data;
|
const char *data;
|
||||||
const char *prop_name, *override_end;
|
const char *prop_name, *override_end;
|
||||||
@@ -1820,7 +1820,7 @@ static int dtoverlay_extract_override(const char *override_name,
|
|||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
{
|
{
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
return len;
|
return len;
|
||||||
*phandle_ptr = 0;
|
*phandle_ptr = 0;
|
||||||
*namep = NULL;
|
*namep = NULL;
|
||||||
return DTOVERRIDE_END;
|
return DTOVERRIDE_END;
|
||||||
@@ -1897,7 +1897,7 @@ static int dtoverlay_extract_override(const char *override_name,
|
|||||||
else if (sep == '!')
|
else if (sep == '!')
|
||||||
{
|
{
|
||||||
/* The target is a boolean parameter (present->true, absent->false),
|
/* The target is a boolean parameter (present->true, absent->false),
|
||||||
* but the sense of the value is inverted */
|
* but the sense of the value is inverted */
|
||||||
*offp = 0;
|
*offp = 0;
|
||||||
*sizep = 0;
|
*sizep = 0;
|
||||||
type = DTOVERRIDE_BOOLEAN_INV;
|
type = DTOVERRIDE_BOOLEAN_INV;
|
||||||
|
|||||||
@@ -90,11 +90,11 @@ typedef void DTOVERLAY_LOGGING_FUNC(dtoverlay_logging_type_t type,
|
|||||||
const char *fmt, va_list args);
|
const char *fmt, va_list args);
|
||||||
|
|
||||||
typedef int (*override_callback_t)(int override_type,
|
typedef int (*override_callback_t)(int override_type,
|
||||||
const char *override_value,
|
const char *override_value,
|
||||||
DTBLOB_T *dtb, int node_off,
|
DTBLOB_T *dtb, int node_off,
|
||||||
const char *prop_name, int target_phandle,
|
const char *prop_name, int target_phandle,
|
||||||
int target_off, int target_size,
|
int target_off, int target_size,
|
||||||
void *callback_state);
|
void *callback_state);
|
||||||
|
|
||||||
uint8_t dtoverlay_read_u8(const void *src, int off);
|
uint8_t dtoverlay_read_u8(const void *src, int off);
|
||||||
uint16_t dtoverlay_read_u16(const void *src, int off);
|
uint16_t dtoverlay_read_u16(const void *src, int off);
|
||||||
@@ -143,7 +143,7 @@ int dtoverlay_foreach_override_target(DTBLOB_T *dtb, const char *override_name,
|
|||||||
const char *override_data, int data_len,
|
const char *override_data, int data_len,
|
||||||
const char *override_value,
|
const char *override_value,
|
||||||
override_callback_t callback,
|
override_callback_t callback,
|
||||||
void *callback_value);
|
void *callback_value);
|
||||||
|
|
||||||
int dtoverlay_apply_override(DTBLOB_T *dtb, const char *override_name,
|
int dtoverlay_apply_override(DTBLOB_T *dtb, const char *override_name,
|
||||||
const char *override_data, int data_len,
|
const char *override_data, int data_len,
|
||||||
|
|||||||
@@ -102,9 +102,9 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
overlay_dtb = dtoverlay_load_dtb(overlay_file, max_dtb_size);
|
overlay_dtb = dtoverlay_load_dtb(overlay_file, max_dtb_size);
|
||||||
if (overlay_dtb)
|
if (overlay_dtb)
|
||||||
err = dtoverlay_fixup_overlay(base_dtb, overlay_dtb);
|
err = dtoverlay_fixup_overlay(base_dtb, overlay_dtb);
|
||||||
else
|
else
|
||||||
err = -1;
|
err = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (!err && (argn < argc))
|
while (!err && (argn < argc))
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user