From 914c794fc2d4433b8796bd977a93afa0803ec42b Mon Sep 17 00:00:00 2001 From: Chris Packham Date: Thu, 10 Dec 2020 19:55:15 +1300 Subject: kconfig: Sync with upstream v5.7 This commit introduces the following upstream changes: 60969f02f07a kconfig: qconf: Fix a few alignment issues e1f7769f6094 kconfig: qconf: remove some old bogus TODOs b311142fcfd3 kconfig: qconf: fix support for the split view mode cce1faba8264 kconfig: qconf: fix the content of the main widget 5752ff07fd90 kconfig: qconf: Change title for the item window cf497b922386 kconfig: qconf: clean deprecated warnings dbd35860122b kconfig: remove unused variable in qconf.cc d198b34f3855 .gitignore: add SPDX License Identifier 2985bed68083 .gitignore: remove too obvious comments 3a9dd3ecb207 kconfig: make 'imply' obey the direct dependency def2fbffe62c kconfig: allow symbols implied by y to become m 2a86f6612164 kbuild: use KBUILD_DEFCONFIG as the fallback for DEFCONFIG_LIST Signed-off-by: Chris Packham diff --git a/kconfig/.gitignore b/kconfig/.gitignore index 1908525..8886956 100644 --- a/kconfig/.gitignore +++ b/kconfig/.gitignore @@ -1,3 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + # # Generated files # diff --git a/kconfig/symbol.c b/kconfig/symbol.c index 8d38b70..3dc8139 100644 --- a/kconfig/symbol.c +++ b/kconfig/symbol.c @@ -221,7 +221,7 @@ static void sym_calc_visibility(struct symbol *sym) sym_set_changed(sym); } tri = no; - if (sym->implied.expr && sym->dir_dep.tri != no) + if (sym->implied.expr) tri = expr_calc_value(sym->implied.expr); if (tri == mod && sym_get_type(sym) == S_BOOLEAN) tri = yes; @@ -394,6 +394,8 @@ void sym_calc_value(struct symbol *sym) if (sym->implied.tri != no) { sym->flags |= SYMBOL_WRITE; newval.tri = EXPR_OR(newval.tri, sym->implied.tri); + newval.tri = EXPR_AND(newval.tri, + sym->dir_dep.tri); } } calc_newval: @@ -401,8 +403,7 @@ void sym_calc_value(struct symbol *sym) sym_warn_unmet_dep(sym); newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri); } - if (newval.tri == mod && - (sym_get_type(sym) == S_BOOLEAN || sym->implied.tri == yes)) + if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN) newval.tri = yes; break; case S_STRING: @@ -484,8 +485,6 @@ bool sym_tristate_within_range(struct symbol *sym, tristate val) return false; if (sym->visible <= sym->rev_dep.tri) return false; - if (sym->implied.tri == yes && val == mod) - return false; if (sym_is_choice_value(sym) && sym->visible == yes) return val == yes; return val >= sym->rev_dep.tri && val <= sym->visible; -- cgit v0.10.2-6-g49f6