From patchwork Wed Sep 5 09:26:17 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chander Kashyap X-Patchwork-Id: 11187 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 9B60823E00 for ; Wed, 5 Sep 2012 09:26:36 +0000 (UTC) Received: from mail-ie0-f180.google.com (mail-ie0-f180.google.com [209.85.223.180]) by fiordland.canonical.com (Postfix) with ESMTP id 08BB9A193BC for ; Wed, 5 Sep 2012 09:25:42 +0000 (UTC) Received: by mail-ie0-f180.google.com with SMTP id k11so610945iea.11 for ; Wed, 05 Sep 2012 02:26:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:x-gm-message-state; bh=suUSs/iyQoW0a4igw83yrPyA6Rqrw7EmatA3yOpiZsc=; b=dCBPTFoUsPOi0ueBD5DHJafT1svQiPoeLQvhnk7Zj1toh6YruRQNpCXAjz50/QAVw3 RiH+p89A3hGG/NxmBqp2OS/9pdWz9sX35WM+2q/0xmuUu/UHs30EyMFr/fruDhiS5YAK mbLlRNHmUPRDOAZloQg8IjOMCRYZCmEs/OkrKyyrnu7x9kdMihtzB3LJYWkOIeRh2HcD tBiE+Z9H5TaEagA5u3i2kLIuALsV/RHxFmgrSgkbpB1yLkhYMTlyDI02UkhNGt7mmNiv YQ/o7igilk/tkREbIRj5EPx6JBp6nqfvsP64d0V3toNucBfOpQuV6V5YX157OVEefees 7PtQ== Received: by 10.50.207.106 with SMTP id lv10mr17271268igc.0.1346837195505; Wed, 05 Sep 2012 02:26:35 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.50.184.232 with SMTP id ex8csp242192igc; Wed, 5 Sep 2012 02:26:34 -0700 (PDT) Received: by 10.68.229.228 with SMTP id st4mr52442932pbc.106.1346837194298; Wed, 05 Sep 2012 02:26:34 -0700 (PDT) Received: from mail-pz0-f50.google.com (mail-pz0-f50.google.com [209.85.210.50]) by mx.google.com with ESMTPS id px6si1737421pbc.94.2012.09.05.02.26.33 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 05 Sep 2012 02:26:34 -0700 (PDT) Received-SPF: neutral (google.com: 209.85.210.50 is neither permitted nor denied by best guess record for domain of chander.kashyap@linaro.org) client-ip=209.85.210.50; Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.210.50 is neither permitted nor denied by best guess record for domain of chander.kashyap@linaro.org) smtp.mail=chander.kashyap@linaro.org Received: by dade7 with SMTP id e7so265705dad.37 for ; Wed, 05 Sep 2012 02:26:33 -0700 (PDT) Received: by 10.68.134.99 with SMTP id pj3mr30026144pbb.13.1346837193179; Wed, 05 Sep 2012 02:26:33 -0700 (PDT) Received: from localhost.localdomain ([115.113.119.130]) by mx.google.com with ESMTPS id rm9sm1016035pbc.72.2012.09.05.02.26.30 (version=SSLv3 cipher=OTHER); Wed, 05 Sep 2012 02:26:32 -0700 (PDT) From: Chander Kashyap To: u-boot@lists.denx.de Cc: patches@linaro.org, jason.hobbs@calxeda.com, Chander Kashyap Subject: [PATCH v2] PXE: FDT: Add support for fdt in PXE Date: Wed, 5 Sep 2012 14:56:17 +0530 Message-Id: <1346837177-17547-1-git-send-email-chander.kashyap@linaro.org> X-Mailer: git-send-email 1.7.9.5 X-Gm-Message-State: ALoCoQk519x91Pa3/VvjmbDKdalhJbT+NGuY9iGtyXvtoPyYiWlzwXIIHMLC4twX09gRRa7FEtBJ 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 --- Changes in v2: Removed the duplicate code. common/cmd_pxe.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 6b31dea..0c81e08 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,15 @@ 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; + } + } + if (bootm_argv[3]) bootm_argc = 4; @@ -658,6 +674,7 @@ enum token_type { T_DEFAULT, T_PROMPT, T_INCLUDE, + T_FDT, T_INVALID }; @@ -685,6 +702,7 @@ static const struct token keywords[] = { {"append", T_APPEND}, {"initrd", T_INITRD}, {"include", T_INCLUDE}, + {"fdt", T_FDT}, {NULL, T_INVALID} }; @@ -1074,6 +1092,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;