On Thu, Nov 30, 2017 at 11:56:20AM +0100, Oleksij Rempel wrote: > on some SoCs we can use generic PLL and RAM initialization. In this > cases we create board file only to provide a host name. > With this patch host name will be created from device tree compatible. > For example: > compatible = "board_vendor,board", "chip_vendor,soc" > the host name will be: > "board" > > This function will not overwrite a host name which is already set by > board or machine code. > > Signed-off-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> > --- Applied, thanks Sascha > common/misc.c | 7 +++++++ > drivers/of/base.c | 32 ++++++++++++++++++++++++++++++++ > include/common.h | 1 + > include/of.h | 1 + > 4 files changed, 41 insertions(+) > > diff --git a/common/misc.c b/common/misc.c > index c5d3704c82..0888f1f4f6 100644 > --- a/common/misc.c > +++ b/common/misc.c > @@ -187,6 +187,13 @@ const char *barebox_get_hostname(void) > } > EXPORT_SYMBOL(barebox_get_hostname); > > +void barebox_set_hostname_no_overwrite(const char *__hostname) > +{ > + if (!barebox_get_hostname()) > + barebox_set_hostname(__hostname); > +} > +EXPORT_SYMBOL(barebox_set_hostname_no_overwrite); > + > BAREBOX_MAGICVAR_NAMED(global_hostname, global.hostname, > "shortname of the board. Also used as hostname for DHCP requests"); > > diff --git a/drivers/of/base.c b/drivers/of/base.c > index eabbf3d957..6a582177bf 100644 > --- a/drivers/of/base.c > +++ b/drivers/of/base.c > @@ -2360,3 +2360,35 @@ int of_graph_port_is_available(struct device_node *node) > return available; > } > EXPORT_SYMBOL(of_graph_port_is_available); > + > +/** > + * of_get_machine_compatible - get first compatible string from the root node. > + * > + * Returns the string or NULL. > + */ > +const char *of_get_machine_compatible(void) > +{ > + struct property *prop; > + const char *name, *p; > + > + if (!root_node) > + return NULL; > + > + prop = of_find_property(root_node, "compatible", NULL); > + name = of_prop_next_string(prop, NULL); > + > + p = strchr(name, ','); > + return p ? p + 1 : name; > +} > +EXPORT_SYMBOL(of_get_machine_compatible); > + > +static int of_init_hostname(void) > +{ > + const char *name; > + > + name = of_get_machine_compatible(); > + barebox_set_hostname_no_overwrite(name ?: "barebox"); > + > + return 0; > +} > +late_initcall(of_init_hostname); > diff --git a/include/common.h b/include/common.h > index dd7445e9b6..a9b8610af8 100644 > --- a/include/common.h > +++ b/include/common.h > @@ -139,6 +139,7 @@ const char *barebox_get_model(void); > void barebox_set_model(const char *); > const char *barebox_get_hostname(void); > void barebox_set_hostname(const char *); > +void barebox_set_hostname_no_overwrite(const char *); > > #if defined(CONFIG_MIPS) > #include <asm/addrspace.h> > diff --git a/include/of.h b/include/of.h > index 18a423241b..edcc854f7b 100644 > --- a/include/of.h > +++ b/include/of.h > @@ -148,6 +148,7 @@ extern struct device_node *of_copy_node(struct device_node *parent, > const struct device_node *other); > extern void of_delete_node(struct device_node *node); > > +extern const char *of_get_machine_compatible(void); > extern int of_machine_is_compatible(const char *compat); > extern int of_device_is_compatible(const struct device_node *device, > const char *compat); > -- > 2.11.0 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox