nmhw21: support for user module device tree node
- fill out /user_module node with: - status: okay/disabled - model: UM type - hw version/revision - network configuration - show product variant in boot log - set product variant in device tree /model
This commit is contained in:
parent
3e938e9ab8
commit
29d7a20fdb
|
|
@ -142,6 +142,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
static int hw_ver = -1;
|
||||
static int hw_rev = -1;
|
||||
static int hw_patch = -1;
|
||||
static char hw_variant_name[64];
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_SPL_BUILD)
|
||||
|
|
@ -789,6 +790,13 @@ void set_console(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void get_variant_name(void)
|
||||
{
|
||||
bd_get_variantname(hw_variant_name, sizeof(hw_variant_name));
|
||||
|
||||
printf("SYS: %s\n", hw_variant_name);
|
||||
}
|
||||
|
||||
static void get_hw_version(void)
|
||||
{
|
||||
bd_get_hw_version(&hw_ver, &hw_rev);
|
||||
|
|
@ -954,6 +962,7 @@ int board_late_init(void)
|
|||
puts("Could not get board ID.\n");
|
||||
}
|
||||
|
||||
get_variant_name();
|
||||
get_hw_version();
|
||||
get_pmic_version();
|
||||
|
||||
|
|
@ -1191,7 +1200,7 @@ int board_fit_config_name_match(const char *name)
|
|||
|
||||
#if defined(CONFIG_OF_BOARD_SETUP) && !defined(CONFIG_SPL_BUILD)
|
||||
|
||||
static void ft_hw_version(void *blob)
|
||||
static void ft_hw_info(void *blob)
|
||||
{
|
||||
int node_offset;
|
||||
char hw_version[16];
|
||||
|
|
@ -1200,10 +1209,43 @@ static void ft_hw_version(void *blob)
|
|||
|
||||
node_offset = fdt_path_offset(blob, "/");
|
||||
if (node_offset != -1) {
|
||||
fdt_setprop_string(blob, node_offset, "model", hw_variant_name);
|
||||
fdt_setprop_string(blob, node_offset, "nm,carrierboard,version", hw_version);
|
||||
}
|
||||
}
|
||||
|
||||
static void ft_user_module(void *blob)
|
||||
{
|
||||
if (um_present()) {
|
||||
int node_offset;
|
||||
|
||||
node_offset = fdt_path_offset(blob, "/user_module/");
|
||||
if (node_offset != -1) {
|
||||
const char* model = um_type_as_str();
|
||||
struct in_addr ip;
|
||||
struct in_addr mask;
|
||||
uint8_t ver = 0;
|
||||
uint8_t rev = 0;
|
||||
char hw_version[16];
|
||||
char tmp[22];
|
||||
|
||||
um_version(&ver, &rev);
|
||||
um_network_address(&ip, &mask);
|
||||
|
||||
fdt_setprop_string(blob, node_offset, "status", "okay");
|
||||
fdt_setprop_string(blob, node_offset, "model", model);
|
||||
|
||||
snprintf(hw_version, sizeof(hw_version), "%d.%d", hw_ver, hw_rev);
|
||||
fdt_setprop_string(blob, node_offset, "nm,carrierboard,version", hw_version);
|
||||
|
||||
ip_to_string(ip, tmp);
|
||||
fdt_setprop_string(blob, node_offset, "ipv4-addr", tmp);
|
||||
ip_to_string(mask, tmp);
|
||||
fdt_setprop_string(blob, node_offset, "ipv4-mask", tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ft_user_interface(void *blob)
|
||||
{
|
||||
int ui_hw_version = ui_version();
|
||||
|
|
@ -1293,8 +1335,9 @@ static void ft_eth(void *blob)
|
|||
|
||||
int ft_board_setup(void *blob, bd_t *bd)
|
||||
{
|
||||
ft_hw_version(blob);
|
||||
ft_hw_info(blob);
|
||||
ft_user_interface(blob);
|
||||
ft_user_module(blob);
|
||||
ft_eth(blob);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue