From fe73a3794510994cedbc45e0283409c19f3bfe29 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Mon, 1 Oct 2012 10:35:48 +0200 Subject: [PATCH] fexc: uboot: ensure data from [pmu_para] is print in order --- script_uboot.c | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/script_uboot.c b/script_uboot.c index 1b16cba..079355c 100644 --- a/script_uboot.c +++ b/script_uboot.c @@ -32,6 +32,14 @@ #define pr_debug(...) #endif +struct members { + const char *name; + const char *translation; + int mode; +}; + +/* + */ static inline void out_u32_member(FILE *out, const char *key, int hexa, struct script_single_entry *val) { @@ -142,6 +150,16 @@ invalid_field: /* * PMU */ +static struct members pmu_members[] = { + { .name = "pmu_used2" }, + { .name = "pmu_para" }, + { .name = "pmu_adpdet" }, + { .name = "pmu_shutdown_chgcur" }, + { .name = "pmu_shutdown_chgcur2" }, + { .name = "pmu_pwroff_vol" }, + { .name = "pmu_pwron_vol" }, +}; + static int generate_pmu_struct(FILE *out, struct script_section *target, struct script_section *pmu_para) { @@ -164,27 +182,16 @@ static int generate_pmu_struct(FILE *out, struct script_section *target, } } - sp = pmu_para; - for (le = list_first(&sp->entries); le; - le = list_next(&sp->entries, le)) { - ep = container_of(le, struct script_entry, entries); - - if (strncmp(ep->name, "pmu_", 4) != 0) + for (const struct members *mp = pmu_members; + mp < pmu_members+ARRAY_SIZE(pmu_members); mp++) { + ep = script_find_entry(pmu_para, mp->name); + if (!ep) continue; - key = ep->name+4; - if (strcmp(key, "used2") == 0 || - strcmp(key, "para") == 0 || - strcmp(key, "adpdet") == 0 || - strcmp(key, "shutdown_chgcur") == 0 || - strcmp(key, "shutdown_chgcur2") == 0 || - strcmp(key, "pwroff_vol") == 0 || - strcmp(key, "pwron_vol") == 0) { - - if (!out_member(out, key, 0, ep)) { - pr_err("pmu_para: %s: invalid field\n", ep->name); - ret = 0; - } + key = (mp->translation) ? mp->translation : mp->name+4; + if (!out_member(out, key, mp->mode, ep)) { + pr_err("pmu_para: %s: invalid field\n", mp->name); + ret = 0; } }