summaryrefslogtreecommitdiff
path: root/kconfig
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2020-12-10 06:55:15 (GMT)
committerChris Packham <judge.packham@gmail.com>2021-02-02 07:06:32 (GMT)
commit914c794fc2d4433b8796bd977a93afa0803ec42b (patch)
treed460ccfa566f6c0f518aac2738b5aa7775a19912 /kconfig
parent3bf9edb36c5f1ea9715de1a2a556390540398077 (diff)
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 <judge.packham@gmail.com>
Diffstat (limited to 'kconfig')
-rw-r--r--kconfig/.gitignore2
-rw-r--r--kconfig/symbol.c9
2 files changed, 6 insertions, 5 deletions
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;