From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.89 #1 (Red Hat Linux)) id 1ebixK-0008D0-2S for barebox@lists.infradead.org; Wed, 17 Jan 2018 08:20:24 +0000 Date: Wed, 17 Jan 2018 09:20:09 +0100 From: Sascha Hauer Message-ID: <20180117082009.d5yebfrzensbcjl4@pengutronix.de> References: <20171130105620.10126-1-o.rempel@pengutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20171130105620.10126-1-o.rempel@pengutronix.de> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: Re: [PATCH] of: base: use root_node compatible as suggestion for a hostname To: Oleksij Rempel Cc: barebox@lists.infradead.org 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 > --- 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 > 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@lists.infradead.org > 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@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox