From patchwork Sat Mar 28 17:34:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Kocialkowski X-Patchwork-Id: 455720 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id EA9521400B6 for ; Sun, 29 Mar 2015 16:22:00 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4F4CFA74C6; Sun, 29 Mar 2015 07:21:52 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DRZdJOKQ2Zr4; Sun, 29 Mar 2015 07:21:52 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9FB9FA74F7; Sun, 29 Mar 2015 07:21:41 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7FEF0A7491 for ; Sun, 29 Mar 2015 07:21:28 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 00xCVbeVWqZp for ; Sun, 29 Mar 2015 07:21:28 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from gagarine.paulk.fr (gagarine.paulk.fr [109.190.93.129]) by theia.denx.de (Postfix) with ESMTPS id 28242A7481 for ; Sun, 29 Mar 2015 07:21:24 +0200 (CEST) Received: by gagarine.paulk.fr (Postfix, from userid 65534) id E7F44206D6; Sat, 28 Mar 2015 18:34:53 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on gagarine.paulk.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from localhost.localdomain (collins [192.168.1.129]) by gagarine.paulk.fr (Postfix) with ESMTP id 071B1206BB; Sat, 28 Mar 2015 18:34:51 +0100 (CET) From: Paul Kocialkowski To: u-boot@lists.denx.de Date: Sat, 28 Mar 2015 18:34:43 +0100 Message-Id: <1427564083-25805-1-git-send-email-contact@paulk.fr> X-Mailer: git-send-email 1.9.1 Cc: Tom Rini Subject: [U-Boot] [PATCH] fdt: Pass the board serial number through devicetree X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Paul Kocialkowski --- common/fdt_support.c | 25 +++++++++++++++++++++++++ common/image-fdt.c | 4 ++++ include/fdt_support.h | 1 + 3 files changed, 30 insertions(+) diff --git a/common/fdt_support.c b/common/fdt_support.c index 8266bca..a97b4f0 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -194,6 +194,31 @@ static inline int fdt_setprop_uxx(void *fdt, int nodeoffset, const char *name, return fdt_setprop_u32(fdt, nodeoffset, name, (uint32_t)val); } +int fdt_root(void *fdt) +{ + char *serial; + int err; + + err = fdt_check_header(fdt); + if (err < 0) { + printf("fdt_root: %s\n", fdt_strerror(err)); + return err; + } + + serial = getenv("serial#"); + if (serial) { + err = fdt_setprop(fdt, 0, "serial-number", serial, + strlen(serial) + 1); + + if (err < 0) { + printf("WARNING: could not set serial-number %s.\n", + fdt_strerror(err)); + return err; + } + } + + return 0; +} int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end) { diff --git a/common/image-fdt.c b/common/image-fdt.c index d9e4728..1600561 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -470,6 +470,10 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob, int ret = -EPERM; int fdt_ret; + if (fdt_root(blob) < 0) { + printf("ERROR: root node setup failed\n"); + goto err; + } if (fdt_chosen(blob) < 0) { printf("ERROR: /chosen node create failed\n"); goto err; diff --git a/include/fdt_support.h b/include/fdt_support.h index ae5e8a3..8eb5968 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -16,6 +16,7 @@ u32 fdt_getprop_u32_default_node(const void *fdt, int off, int cell, const char *prop, const u32 dflt); u32 fdt_getprop_u32_default(const void *fdt, const char *path, const char *prop, const u32 dflt); +int fdt_root(void *fdt); int fdt_chosen(void *fdt); int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end); void do_fixup_by_path(void *fdt, const char *path, const char *prop,