summaryrefslogtreecommitdiffstats
path: root/discover/kboot-parser.c
diff options
context:
space:
mode:
authorGeoff Levand <geoff@infradead.org>2013-04-15 15:23:05 -0700
committerJeremy Kerr <jk@ozlabs.org>2013-06-24 13:07:57 +0800
commitc11bcba9a99e858e618f4d872a5be7d52dcaaa5a (patch)
treefeff36ae437774c66bd19b9ce6b16b19e8d7da0e /discover/kboot-parser.c
parent9f895134427d9a72be3d296e596c0360014a9753 (diff)
downloadtalos-petitboot-c11bcba9a99e858e618f4d872a5be7d52dcaaa5a.tar.gz
talos-petitboot-c11bcba9a99e858e618f4d872a5be7d52dcaaa5a.zip
Add initial dtb support
Updates & fixes by Jeremy Kerr <jk@ozlabs.org>. Signed-off-by: Geoff Levand <geoff@infradead.org> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/kboot-parser.c')
-rw-r--r--discover/kboot-parser.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/discover/kboot-parser.c b/discover/kboot-parser.c
index 4b4c2f7..9d0322d 100644
--- a/discover/kboot-parser.c
+++ b/discover/kboot-parser.c
@@ -21,6 +21,7 @@ static void kboot_process_pair(struct conf_context *conf, const char *name,
char *args;
const char *initrd;
const char *root;
+ const char *dtb;
/* ignore bare values */
@@ -50,6 +51,7 @@ static void kboot_process_pair(struct conf_context *conf, const char *name,
args = talloc_strdup(opt, "");
initrd = conf_get_global_option(conf, "initrd");
root = conf_get_global_option(conf, "root");
+ dtb = conf_get_global_option(conf, "dtb");
pos = strchr(value, ' ');
@@ -79,6 +81,11 @@ static void kboot_process_pair(struct conf_context *conf, const char *name,
continue;
}
+ if (streq(cl_name, "dtb")) {
+ dtb = cl_value;
+ continue;
+ }
+
args = talloc_asprintf_append(args, "%s=%s ", cl_name,
cl_value);
}
@@ -93,15 +100,22 @@ out_add:
} else
opt->boot_args = args;
+ opt->description = talloc_asprintf(opt, "%s %s", value,
+ opt->boot_args);
+
if (initrd) {
d_opt->initrd = create_devpath_resource(d_opt,
conf->dc->device, initrd);
+ opt->description = talloc_asprintf_append(opt->description,
+ " initrd=%s", initrd);
+ }
- opt->description = talloc_asprintf(opt, "%s initrd=%s %s",
- value, initrd, opt->boot_args);
- } else
- opt->description = talloc_asprintf(opt, "%s %s", value,
- opt->boot_args);
+ if (dtb) {
+ d_opt->dtb = create_devpath_resource(d_opt,
+ conf->dc->device, dtb);
+ opt->description = talloc_asprintf_append(opt->description,
+ " dtb=%s", dtb);
+ }
conf_strip_str(opt->boot_args);
conf_strip_str(opt->description);
@@ -110,6 +124,7 @@ out_add:
}
static struct conf_global_option kboot_global_options[] = {
+ { .name = "dtb" },
{ .name = "initrd" },
{ .name = "root" },
{ .name = "video" },
OpenPOWER on IntegriCloud