dtoverlay: Fix whitespace problems

This commit is contained in:
Phil Elwell
2020-04-02 10:14:54 +01:00
committed by popcornmix
parent 6fb59736b1
commit 279c93f8ec
4 changed files with 628 additions and 628 deletions

View File

@@ -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;

View File

@@ -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,

View File

@@ -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