From patchwork Wed Sep 5 08:55:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chander Kashyap X-Patchwork-Id: 181777 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 79CA02C008A for ; Wed, 5 Sep 2012 18:56:16 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7642B28181; Wed, 5 Sep 2012 10:56:13 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 OnlcqMqPX6FX; Wed, 5 Sep 2012 10:56:13 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D707D28170; Wed, 5 Sep 2012 10:56:11 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B2D1828170 for ; Wed, 5 Sep 2012 10:56:09 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 XOyfNx+HqhxN for ; Wed, 5 Sep 2012 10:56:06 +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 mail-pb0-f44.google.com (mail-pb0-f44.google.com [209.85.160.44]) by theia.denx.de (Postfix) with ESMTPS id 363C42816E for ; Wed, 5 Sep 2012 10:56:05 +0200 (CEST) Received: by pbbrr4 with SMTP id rr4so588997pbb.3 for ; Wed, 05 Sep 2012 01:56:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=wsirCEnkFuoWrKrdXagKO9CfmCd5u9iBcGyB9wdobnw=; b=LKfHT0ChdvuOlKbQUAYXv9fOw4do6+0AYc+IPci6YPTM6Cl319dDGzLp0+6KsPC3wl S+Bc9ypakyWw0MvkvH70Vo2tqIZPNlG4TG8gL4knp6YJ/jxESHBZbuwtjxqrpBhZpR8v MT2lnh/Eypbz+sTrLE1cvA07wdKkVlSYYuagqAOB+nfBpdAtfBh2CE3biQlGuJ0Jb/BM 1u93V5v/sSXGQe0O9JRoWQnqVFJfzKBVLPBlydVUMGceYkCEXL9Ao1ALr+j9g87HI26f ELf6w7jqoCoU+vAkNR0tm/bEMMjZQAD5yvXLVocy4vuBNFv6tlofr0r4qxSK6YI7Dv+n tTMA== Received: by 10.66.73.7 with SMTP id h7mr47356137pav.34.1346835363297; Wed, 05 Sep 2012 01:56:03 -0700 (PDT) Received: from localhost.localdomain ([115.113.119.130]) by mx.google.com with ESMTPS id gf7sm967764pbc.65.2012.09.05.01.56.00 (version=SSLv3 cipher=OTHER); Wed, 05 Sep 2012 01:56:02 -0700 (PDT) From: Chander Kashyap To: u-boot@lists.denx.de Date: Wed, 5 Sep 2012 14:25:01 +0530 Message-Id: <1346835301-15021-1-git-send-email-chander.kashyap@linaro.org> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQmciRb0QHqn0YaGHnvwZ675Bkdw8kHV96cKfVz3vfouHLQlcTxPM84ypFj8WZuQz4AzQwTR Cc: patches@linaro.org Subject: [U-Boot] [RFC] [PATCH] PXE: FDT: Add support for fdt in PXE X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Now DT support is becomming common for all new SoC's. Hence it is better to have option for getting specific FDT from the remote server. This patch adds support for new lable i.e. fdt. If fdt_addr is specified then load fdt blob from the remote server to fdt_address. Signed-off-by: Chander Kashyap --- common/cmd_pxe.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 6b31dea..11cde21 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -450,6 +450,7 @@ struct pxe_label { char *kernel; char *append; char *initrd; + char *fdt; int attempted; int localboot; struct list_head list; @@ -517,6 +518,9 @@ static void label_destroy(struct pxe_label *label) if (label->initrd) free(label->initrd); + if (label->fdt) + free(label->fdt); + free(label); } @@ -541,6 +545,9 @@ static void label_print(void *data) if (label->initrd) printf("\t\tinitrd: %s\n", label->initrd); + + if (label->fdt) + printf("\tfdt: %s\n", label->fdt); } /* @@ -633,6 +640,21 @@ static void label_boot(struct pxe_label *label) */ bootm_argv[3] = getenv("fdt_addr"); + /* if fdt label is defined then get fdt from server */ + if (bootm_argv[3] && label->fdt) { + if (get_relfile_envaddr(label->fdt, "fdt_addr") < 0) { + printf("Skipping %s for failure retrieving fdt\n", + label->name); + return; + } + } + + /* + * fdt usage is optional. If there is an fdt_addr specified, we will + * pass it along to bootm, and adjust argc appropriately. + */ + bootm_argv[3] = getenv("fdt_addr"); + if (bootm_argv[3]) bootm_argc = 4; @@ -658,6 +680,7 @@ enum token_type { T_DEFAULT, T_PROMPT, T_INCLUDE, + T_FDT, T_INVALID }; @@ -685,6 +708,7 @@ static const struct token keywords[] = { {"append", T_APPEND}, {"initrd", T_INITRD}, {"include", T_INCLUDE}, + {"fdt", T_FDT}, {NULL, T_INVALID} }; @@ -1074,6 +1098,11 @@ static int parse_label(char **c, struct pxe_menu *cfg) err = parse_sliteral(c, &label->initrd); break; + case T_FDT: + if (!label->fdt) + err = parse_sliteral(c, &label->fdt); + break; + case T_LOCALBOOT: err = parse_integer(c, &label->localboot); break;