X-Git-Url: https://jxself.org/git/?p=linux-libre-firmware.git;a=blobdiff_plain;f=carl9170fw%2Fconfig%2Fconfdata.c;h=99664fd2de23bb15dc29dd6d1897a0dcc1a6f60a;hp=a124a25e899fde96872ff0a9952e079070339d44;hb=HEAD;hpb=b51695c17b7a86ca904192fb7e7d337fa36f4d56 diff --git a/carl9170fw/config/confdata.c b/carl9170fw/config/confdata.c index a124a25..99664fd 100644 --- a/carl9170fw/config/confdata.c +++ b/carl9170fw/config/confdata.c @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -756,25 +757,6 @@ static struct conf_printer header_printer_cb = .print_comment = header_print_comment, }; -/* - * Tristate printer - * - * This printer is used when generating the `include/generated/tristate.conf' file. - */ -static void -tristate_print_symbol(FILE *fp, struct symbol *sym, const char *value, void *arg) -{ - - if (sym->type == S_TRISTATE && *value != 'n') - fprintf(fp, "%s%s=%c\n", CONFIG_, sym->name, (char)toupper(*value)); -} - -static struct conf_printer tristate_printer_cb = -{ - .print_symbol = tristate_print_symbol, - .print_comment = kconfig_print_comment, -}; - static void conf_write_symbol(FILE *fp, struct symbol *sym, struct conf_printer *printer, void *printer_arg) { @@ -1108,7 +1090,7 @@ int conf_write_autoconf(int overwrite) struct symbol *sym; const char *name; const char *autoconf_name = conf_get_autoconfig_name(); - FILE *out, *tristate, *out_h, *out_c; + FILE *out, *out_h, *out_c; int i; if (!overwrite && is_present(autoconf_name)) @@ -1123,30 +1105,20 @@ int conf_write_autoconf(int overwrite) if (!out) return 1; - tristate = fopen(".tmpconfig_tristate", "w"); - if (!tristate) { - fclose(out); - return 1; - } - out_h = fopen(".tmpconfig.h", "w"); if (!out_h) { fclose(out); - fclose(tristate); return 1; } out_c = fopen(".tmpconfig.cmake", "w"); if (!out_c) { fclose(out); - fclose(tristate); fclose(out_h); } conf_write_heading(out, &kconfig_printer_cb, NULL); - conf_write_heading(tristate, &tristate_printer_cb, NULL); - conf_write_heading(out_h, &header_printer_cb, NULL); conf_write_heading(out_c, &kconfig_printer_cmake_cb, NULL); @@ -1156,17 +1128,14 @@ int conf_write_autoconf(int overwrite) if (!(sym->flags & SYMBOL_WRITE) || !sym->name) continue; - /* write symbol to auto.conf, tristate and header files */ + /* write symbol to auto.conf and header files */ conf_write_symbol(out, sym, &kconfig_printer_cb, (void *)1); - conf_write_symbol(tristate, sym, &tristate_printer_cb, (void *)1); - conf_write_symbol(out_h, sym, &header_printer_cb, NULL); conf_write_symbol(out_c, sym, &kconfig_printer_cmake_cb, NULL); } fclose(out); - fclose(tristate); fclose(out_h); fclose(out_c); @@ -1178,14 +1147,6 @@ int conf_write_autoconf(int overwrite) if (rename(".tmpconfig.h", name)) return 1; - name = getenv("KCONFIG_TRISTATE"); - if (!name) - name = "include/generated/tristate.conf"; - if (make_parent_dir(name)) - return 1; - if (rename(".tmpconfig_tristate", name)) - return 1; - if (make_parent_dir(autoconf_name)) return 1; @@ -1420,7 +1381,7 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode) sym_calc_value(csym); if (mode == def_random) - has_changed = randomize_choice_values(csym); + has_changed |= randomize_choice_values(csym); else { set_all_choice_values(csym); has_changed = true; @@ -1429,3 +1390,18 @@ bool conf_set_all_new_symbols(enum conf_def_mode mode) return has_changed; } + +void conf_rewrite_mod_or_yes(enum conf_def_mode mode) +{ + struct symbol *sym; + int i; + tristate old_val = (mode == def_y2m) ? yes : mod; + tristate new_val = (mode == def_y2m) ? mod : yes; + + for_all_symbols(i, sym) { + if (sym_get_type(sym) == S_TRISTATE && + sym->def[S_DEF_USER].tri == old_val) + sym->def[S_DEF_USER].tri = new_val; + } + sym_clear_all_valid(); +}