mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
fdt: Add new fdt_set_node_status & fdt_set_status_by_alias helpers
Add common function fdt_set_node_status() to assist in various locations that we set a nodes status. This function utilizes the status values that are part of the EPAPR spec (on power.org). fdt_set_status_by_alias() is based on fdt_set_node_status() but uses an alias string to identify the node to update. We also add some shortcut functions to help the common cases of setting "okay" and "disabled": fdt_status_okay() fdt_status_disabled() fdt_status_okay_by_alias() fdt_status_disabled_by_alias() Finally, we fixup the corenet_ds ethernet code which previously had a function by the same name that can be replaced with the new helpers. Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
This commit is contained in:
committed by
Kumar Gala
parent
4d28db8a1e
commit
2a523f5240
@@ -2,7 +2,7 @@
|
||||
* (C) Copyright 2007
|
||||
* Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com
|
||||
*
|
||||
* Copyright 2010 Freescale Semiconductor, Inc.
|
||||
* Copyright 2010-2011 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
@@ -1259,6 +1259,64 @@ unsigned int fdt_create_phandle(void *fdt, int nodeoffset)
|
||||
return phandle;
|
||||
}
|
||||
|
||||
/*
|
||||
* fdt_set_node_status: Set status for the given node
|
||||
*
|
||||
* @fdt: ptr to device tree
|
||||
* @nodeoffset: node to update
|
||||
* @status: FDT_STATUS_OKAY, FDT_STATUS_DISABLED,
|
||||
* FDT_STATUS_FAIL, FDT_STATUS_FAIL_ERROR_CODE
|
||||
* @error_code: optional, only used if status is FDT_STATUS_FAIL_ERROR_CODE
|
||||
*/
|
||||
int fdt_set_node_status(void *fdt, int nodeoffset,
|
||||
enum fdt_status status, unsigned int error_code)
|
||||
{
|
||||
char buf[16];
|
||||
int ret = 0;
|
||||
|
||||
if (nodeoffset < 0)
|
||||
return nodeoffset;
|
||||
|
||||
switch (status) {
|
||||
case FDT_STATUS_OKAY:
|
||||
ret = fdt_setprop_string(fdt, nodeoffset, "status", "okay");
|
||||
break;
|
||||
case FDT_STATUS_DISABLED:
|
||||
ret = fdt_setprop_string(fdt, nodeoffset, "status", "disabled");
|
||||
break;
|
||||
case FDT_STATUS_FAIL:
|
||||
ret = fdt_setprop_string(fdt, nodeoffset, "status", "fail");
|
||||
break;
|
||||
case FDT_STATUS_FAIL_ERROR_CODE:
|
||||
sprintf(buf, "fail-%d", error_code);
|
||||
ret = fdt_setprop_string(fdt, nodeoffset, "status", buf);
|
||||
break;
|
||||
default:
|
||||
printf("Invalid fdt status: %x\n", status);
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* fdt_set_status_by_alias: Set status for the given node given an alias
|
||||
*
|
||||
* @fdt: ptr to device tree
|
||||
* @alias: alias of node to update
|
||||
* @status: FDT_STATUS_OKAY, FDT_STATUS_DISABLED,
|
||||
* FDT_STATUS_FAIL, FDT_STATUS_FAIL_ERROR_CODE
|
||||
* @error_code: optional, only used if status is FDT_STATUS_FAIL_ERROR_CODE
|
||||
*/
|
||||
int fdt_set_status_by_alias(void *fdt, const char* alias,
|
||||
enum fdt_status status, unsigned int error_code)
|
||||
{
|
||||
int offset = fdt_path_offset(fdt, alias);
|
||||
|
||||
return fdt_set_node_status(fdt, offset, status, error_code);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_VIDEO)
|
||||
int fdt_add_edid(void *blob, const char *compat, unsigned char *edid_buf)
|
||||
{
|
||||
|
Reference in New Issue
Block a user