Loading scripts/kconfig/lkc.h +1 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ void sym_init(void); void sym_clear_all_valid(void); void sym_set_all_changed(void); void sym_set_changed(struct symbol *sym); struct symbol *sym_choice_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); Loading scripts/kconfig/symbol.c +33 −13 Original line number Diff line number Diff line Loading @@ -226,22 +226,18 @@ static void sym_calc_visibility(struct symbol *sym) } } static struct symbol *sym_calc_choice(struct symbol *sym) /* * Find the default symbol for a choice. * First try the default values for the choice symbol * Next locate the first visible choice value * Return NULL if none was found */ struct symbol *sym_choice_default(struct symbol *sym) { struct symbol *def_sym; struct property *prop; struct expr *e; /* first calculate all choice values' visibilities */ prop = sym_get_choice_prop(sym); expr_list_for_each_sym(prop->expr, e, def_sym) sym_calc_visibility(def_sym); /* is the user choice visible? */ def_sym = sym->def[S_DEF_USER].val; if (def_sym && def_sym->visible != no) return def_sym; /* any of the defaults visible? */ for_all_defaults(sym, prop) { prop->visible.tri = expr_calc_value(prop->visible.expr); Loading @@ -258,9 +254,33 @@ static struct symbol *sym_calc_choice(struct symbol *sym) if (def_sym->visible != no) return def_sym; /* failed to locate any defaults */ return NULL; } static struct symbol *sym_calc_choice(struct symbol *sym) { struct symbol *def_sym; struct property *prop; struct expr *e; /* first calculate all choice values' visibilities */ prop = sym_get_choice_prop(sym); expr_list_for_each_sym(prop->expr, e, def_sym) sym_calc_visibility(def_sym); /* is the user choice visible? */ def_sym = sym->def[S_DEF_USER].val; if (def_sym && def_sym->visible != no) return def_sym; def_sym = sym_choice_default(sym); if (def_sym == NULL) /* no choice? reset tristate value */ sym->curr.tri = no; return NULL; return def_sym; } void sym_calc_value(struct symbol *sym) Loading Loading
scripts/kconfig/lkc.h +1 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,7 @@ void sym_init(void); void sym_clear_all_valid(void); void sym_set_all_changed(void); void sym_set_changed(struct symbol *sym); struct symbol *sym_choice_default(struct symbol *sym); struct symbol *sym_check_deps(struct symbol *sym); struct property *prop_alloc(enum prop_type type, struct symbol *sym); struct symbol *prop_get_symbol(struct property *prop); Loading
scripts/kconfig/symbol.c +33 −13 Original line number Diff line number Diff line Loading @@ -226,22 +226,18 @@ static void sym_calc_visibility(struct symbol *sym) } } static struct symbol *sym_calc_choice(struct symbol *sym) /* * Find the default symbol for a choice. * First try the default values for the choice symbol * Next locate the first visible choice value * Return NULL if none was found */ struct symbol *sym_choice_default(struct symbol *sym) { struct symbol *def_sym; struct property *prop; struct expr *e; /* first calculate all choice values' visibilities */ prop = sym_get_choice_prop(sym); expr_list_for_each_sym(prop->expr, e, def_sym) sym_calc_visibility(def_sym); /* is the user choice visible? */ def_sym = sym->def[S_DEF_USER].val; if (def_sym && def_sym->visible != no) return def_sym; /* any of the defaults visible? */ for_all_defaults(sym, prop) { prop->visible.tri = expr_calc_value(prop->visible.expr); Loading @@ -258,9 +254,33 @@ static struct symbol *sym_calc_choice(struct symbol *sym) if (def_sym->visible != no) return def_sym; /* failed to locate any defaults */ return NULL; } static struct symbol *sym_calc_choice(struct symbol *sym) { struct symbol *def_sym; struct property *prop; struct expr *e; /* first calculate all choice values' visibilities */ prop = sym_get_choice_prop(sym); expr_list_for_each_sym(prop->expr, e, def_sym) sym_calc_visibility(def_sym); /* is the user choice visible? */ def_sym = sym->def[S_DEF_USER].val; if (def_sym && def_sym->visible != no) return def_sym; def_sym = sym_choice_default(sym); if (def_sym == NULL) /* no choice? reset tristate value */ sym->curr.tri = no; return NULL; return def_sym; } void sym_calc_value(struct symbol *sym) Loading