summaryrefslogtreecommitdiff
path: root/util/sconfig/sconfig.tab.c_shipped
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2020-05-15 15:39:08 -0700
committerDuncan Laurie <dlaurie@chromium.org>2020-06-02 18:06:37 +0000
commit47b7b3402b0864e5c782705bc24e4bf143c3c7f3 (patch)
treeb12bb7e9d75ff2e3e3e2a10b5cb9be21b2a97ded /util/sconfig/sconfig.tab.c_shipped
parent36e6c6f8d2b63428b0829ff615903715766b8c20 (diff)
sconfig: Add support for firmware configuration
This change adds support to sconfig for generating the firmware configuration field and option definitions in devicetree.cb. In addition these fields and options can be used to probe for a device and have that device be disabled if it is not found at boot time. New tokens: fw_config: top level token, table can be defined before chips field: define field in the mask with the start and end bits option: define option in a field with the value of the field probe: indicate that a device should probe by field and option Example: fw_config field FEATURE 0 0 option DISABLE 0 option ENABLE 1 end end chip drivers/generic/feature device generic 0 on probe FEATURE ENABLE end end Variants can add new fields and add new options to existing fields in overridetree.cb but cannot redefine an existing option. Devices can have multiple probe tokens, and the device will be considered to be found if any of them return true. The output from defining this field are: 1) the various fields and options will be added as macro constants to static.h and can be used by fw_config for probing. 2) the probe entries will result in a list of fields/options to probe that is added to the resulting struct device and handled by coreboot. BUG=b:147462631 Signed-off-by: Duncan Laurie <dlaurie@google.com> Change-Id: I8aea63e577d933aea09e0d0b09470929cc96e0de Reviewed-on: https://review.coreboot.org/c/coreboot/+/41440 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com>
Diffstat (limited to 'util/sconfig/sconfig.tab.c_shipped')
-rw-r--r--util/sconfig/sconfig.tab.c_shipped209
1 files changed, 140 insertions, 69 deletions
diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped
index 2bae43bc29..c78f1ace25 100644
--- a/util/sconfig/sconfig.tab.c_shipped
+++ b/util/sconfig/sconfig.tab.c_shipped
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.5.4. */
+/* A Bison parser, made by GNU Bison 3.5.1. */
/* Bison implementation for Yacc-like parsers in C
@@ -48,7 +48,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.5.4"
+#define YYBISON_VERSION "3.5.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -77,6 +77,7 @@ void yyerror(const char *s);
static struct bus *cur_parent;
static struct chip_instance *cur_chip_instance;
+static struct fw_config_field *cur_field;
@@ -111,8 +112,8 @@ static struct chip_instance *cur_chip_instance;
/* Use api.header.include to #include this header
instead of duplicating it here. */
-#ifndef YY_YY_HOME_ME_REPOS_COREBOOTORG_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
-# define YY_YY_HOME_ME_REPOS_COREBOOTORG_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
+#ifndef YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
+# define YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
@@ -160,7 +161,11 @@ extern int yydebug;
USB = 289,
MMIO = 290,
LPC = 291,
- ESPI = 292
+ ESPI = 292,
+ FW_CONFIG_TABLE = 293,
+ FW_CONFIG_FIELD = 294,
+ FW_CONFIG_OPTION = 295,
+ FW_CONFIG_PROBE = 296
};
#endif
@@ -186,7 +191,7 @@ extern YYSTYPE yylval;
int yyparse (void);
-#endif /* !YY_YY_HOME_ME_REPOS_COREBOOTORG_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
+#endif /* !YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */
@@ -490,21 +495,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 3
+#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 45
+#define YYLAST 58
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 38
+#define YYNTOKENS 42
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 15
+#define YYNNTS 23
/* YYNRULES -- Number of rules. */
-#define YYNRULES 29
+#define YYNRULES 44
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 50
+#define YYNSTATES 75
#define YYUNDEFTOK 2
-#define YYMAXUTOK 292
+#define YYMAXUTOK 296
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -545,16 +550,18 @@ static const yytype_int8 yytranslate[] =
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37
+ 35, 36, 37, 38, 39, 40, 41
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int8 yyrline[] =
{
- 0, 36, 36, 36, 38, 38, 38, 38, 40, 40,
- 40, 40, 40, 40, 40, 40, 42, 42, 51, 51,
- 59, 59, 61, 64, 67, 70, 73, 76, 79, 82
+ 0, 24, 24, 24, 24, 26, 26, 26, 26, 28,
+ 28, 28, 28, 28, 28, 28, 28, 28, 30, 30,
+ 39, 39, 47, 47, 49, 52, 55, 58, 61, 64,
+ 67, 70, 74, 77, 77, 80, 80, 83, 83, 89,
+ 89, 95, 95, 101, 105
};
#endif
@@ -568,9 +575,13 @@ static const char *const yytname[] =
"STRING", "PCI", "PNP", "I2C", "APIC", "CPU_CLUSTER", "CPU", "DOMAIN",
"IRQ", "DRQ", "SLOT_DESC", "IO", "NUMBER", "SUBSYSTEMID", "INHERIT",
"IOAPIC_IRQ", "IOAPIC", "PCIINT", "GENERIC", "SPI", "USB", "MMIO", "LPC",
- "ESPI", "$accept", "devtree", "$@1", "chipchildren", "devicechildren",
- "chip", "@2", "device", "@3", "status", "resource", "registers",
- "subsystemid", "ioapic_irq", "smbios_slot_desc", YY_NULLPTR
+ "ESPI", "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION",
+ "FW_CONFIG_PROBE", "$accept", "devtree", "chipchildren",
+ "devicechildren", "chip", "@1", "device", "@2", "status", "resource",
+ "registers", "subsystemid", "ioapic_irq", "smbios_slot_desc",
+ "fw_config_table", "fw_config_table_children",
+ "fw_config_field_children", "fw_config_field", "$@3", "$@4", "$@5",
+ "fw_config_option", "fw_config_probe", YY_NULLPTR
};
#endif
@@ -582,11 +593,12 @@ static const yytype_int16 yytoknum[] =
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296
};
# endif
-#define YYPACT_NINF (-10)
+#define YYPACT_NINF (-12)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -600,11 +612,14 @@ static const yytype_int16 yytoknum[] =
STATE-NUM. */
static const yytype_int8 yypact[] =
{
- -10, 11, 10, -10, 0, -10, -10, -10, 1, 6,
- 2, -10, -10, -10, -10, -9, 8, 3, 4, -10,
- -10, -10, -10, -10, -3, -4, -10, 9, -1, 5,
- -10, -10, -10, -10, -10, -10, -10, 15, 14, 7,
- -2, 12, 16, 13, 17, -10, 18, -10, -10, -10
+ -12, 3, -12, 4, -12, -12, -12, -12, -2, -12,
+ -12, 8, -12, 9, 1, 14, 11, -12, -12, -12,
+ -12, 2, -12, 5, 17, -12, -12, -6, 10, 16,
+ -12, -1, -12, 18, -12, -12, -12, -12, -12, 0,
+ -12, 7, -12, -12, -12, -3, 19, -12, 21, 20,
+ 22, 28, -12, -12, -12, -12, -12, -12, -12, -12,
+ 31, 30, 23, 24, 33, 25, 36, 26, 27, -12,
+ -12, 38, -12, -12, -12
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -612,25 +627,30 @@ static const yytype_int8 yypact[] =
means the default is an error. */
static const yytype_int8 yydefact[] =
{
- 2, 0, 0, 1, 0, 3, 16, 7, 0, 0,
- 0, 17, 5, 4, 6, 0, 0, 0, 0, 20,
- 21, 18, 23, 15, 0, 0, 19, 0, 0, 0,
- 9, 8, 10, 14, 11, 12, 13, 0, 0, 0,
- 0, 0, 29, 24, 0, 22, 28, 25, 26, 27
+ 2, 0, 1, 0, 34, 3, 4, 18, 0, 8,
+ 32, 0, 33, 0, 41, 0, 0, 19, 6, 5,
+ 7, 39, 36, 0, 0, 37, 36, 0, 0, 0,
+ 36, 0, 42, 0, 35, 22, 23, 20, 25, 0,
+ 40, 0, 17, 38, 43, 0, 0, 21, 0, 0,
+ 0, 0, 10, 9, 11, 15, 12, 13, 14, 16,
+ 0, 0, 0, 0, 0, 0, 31, 26, 0, 44,
+ 24, 30, 27, 28, 29
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
- -10, -10, -10, -10, -10, -5, -10, 20, -10, -10,
- -10, 21, -10, -10, -10
+ -12, -12, -12, -12, -9, -12, 12, -12, -12, -12,
+ 13, -12, -12, -12, -12, -12, -11, -12, -12, -12,
+ -12, -12, -12
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int8 yydefgoto[] =
{
- -1, 1, 2, 8, 24, 5, 7, 13, 23, 21,
- 32, 14, 34, 35, 36
+ -1, 1, 13, 45, 5, 9, 19, 42, 37, 54,
+ 20, 56, 57, 58, 6, 8, 27, 12, 30, 26,
+ 22, 34, 59
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -638,47 +658,56 @@ static const yytype_int8 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int8 yytable[] =
{
- 4, 9, 10, 12, 4, 9, 10, 25, 26, 19,
- 20, 3, 11, 4, 6, 15, 16, 17, 22, 30,
- 18, 27, 37, 38, 28, 39, 29, 41, 42, 44,
- 46, 40, 49, 43, 0, 0, 0, 0, 45, 0,
- 0, 47, 0, 48, 31, 33
+ 3, 15, 16, 2, 18, 32, 3, 46, 47, 10,
+ 40, 43, 3, 15, 16, 31, 35, 36, 7, 39,
+ 17, 48, 14, 23, 49, 24, 50, 21, 25, 29,
+ 38, 28, 41, 44, 33, 61, 52, 11, 51, 33,
+ 33, 4, 64, 65, 66, 60, 62, 69, 63, 67,
+ 71, 70, 74, 73, 72, 68, 0, 53, 55
};
static const yytype_int8 yycheck[] =
{
- 3, 4, 5, 8, 3, 4, 5, 10, 11, 6,
- 7, 0, 11, 3, 14, 9, 14, 26, 14, 24,
- 12, 24, 26, 14, 27, 26, 29, 12, 14, 31,
- 14, 26, 14, 26, -1, -1, -1, -1, 26, -1,
- -1, 28, -1, 26, 24, 24
+ 3, 4, 5, 0, 13, 11, 3, 10, 11, 11,
+ 11, 11, 3, 4, 5, 26, 6, 7, 14, 30,
+ 11, 24, 14, 9, 27, 14, 29, 26, 26, 12,
+ 14, 26, 14, 26, 40, 14, 45, 39, 41, 40,
+ 40, 38, 14, 12, 14, 26, 26, 14, 26, 26,
+ 14, 26, 14, 26, 28, 31, -1, 45, 45
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 39, 40, 0, 3, 43, 14, 44, 41, 4,
- 5, 11, 43, 45, 49, 9, 14, 26, 12, 6,
- 7, 47, 14, 46, 42, 10, 11, 24, 27, 29,
- 43, 45, 48, 49, 50, 51, 52, 26, 14, 26,
- 26, 12, 14, 26, 31, 26, 14, 28, 26, 14
+ 0, 43, 0, 3, 38, 46, 56, 14, 57, 47,
+ 11, 39, 59, 44, 14, 4, 5, 11, 46, 48,
+ 52, 26, 62, 9, 14, 26, 61, 58, 26, 12,
+ 60, 58, 11, 40, 63, 6, 7, 50, 14, 58,
+ 11, 14, 49, 11, 26, 45, 10, 11, 24, 27,
+ 29, 41, 46, 48, 51, 52, 53, 54, 55, 64,
+ 26, 14, 26, 26, 14, 12, 14, 26, 31, 14,
+ 26, 14, 28, 26, 14
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_int8 yyr1[] =
{
- 0, 38, 40, 39, 41, 41, 41, 41, 42, 42,
- 42, 42, 42, 42, 42, 42, 44, 43, 46, 45,
- 47, 47, 48, 49, 50, 50, 51, 52, 52, 52
+ 0, 42, 43, 43, 43, 44, 44, 44, 44, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 47, 46,
+ 49, 48, 50, 50, 51, 52, 53, 53, 54, 55,
+ 55, 55, 56, 57, 57, 58, 58, 60, 59, 61,
+ 59, 62, 59, 63, 64
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_int8 yyr2[] =
{
- 0, 2, 0, 2, 2, 2, 2, 0, 2, 2,
- 2, 2, 2, 2, 2, 0, 0, 5, 0, 7,
- 1, 1, 4, 4, 3, 4, 4, 5, 4, 3
+ 0, 2, 0, 2, 2, 2, 2, 2, 0, 2,
+ 2, 2, 2, 2, 2, 2, 2, 0, 0, 5,
+ 0, 7, 1, 1, 4, 4, 3, 4, 4, 5,
+ 4, 3, 3, 2, 0, 2, 0, 0, 7, 0,
+ 6, 0, 5, 3, 3
};
@@ -1377,7 +1406,7 @@ yyreduce:
{ cur_parent = root_parent; }
break;
- case 16:
+ case 18:
{
(yyval.chip_instance) = new_chip_instance((yyvsp[0].string));
chip_enqueue_tail(cur_chip_instance);
@@ -1385,57 +1414,99 @@ yyreduce:
}
break;
- case 17:
+ case 19:
{
cur_chip_instance = chip_dequeue_tail();
}
break;
- case 18:
+ case 20:
{
(yyval.dev) = new_device(cur_parent, cur_chip_instance, (yyvsp[-2].number), (yyvsp[-1].string), (yyvsp[0].number));
cur_parent = (yyval.dev)->last_bus;
}
break;
- case 19:
+ case 21:
{
cur_parent = (yyvsp[-2].dev)->parent;
}
break;
- case 22:
+ case 24:
{ add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); }
break;
- case 23:
+ case 25:
{ add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); }
break;
- case 24:
+ case 26:
{ add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); }
break;
- case 25:
+ case 27:
{ add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); }
break;
- case 26:
+ case 28:
{ add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); }
break;
- case 27:
+ case 29:
{ add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); }
break;
- case 28:
+ case 30:
{ add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); }
break;
- case 29:
+ case 31:
{ add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); }
break;
+ case 32:
+ { }
+ break;
+
+ case 37:
+ {
+ cur_field = new_fw_config_field((yyvsp[-2].string), strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
+}
+ break;
+
+ case 38:
+ { }
+ break;
+
+ case 39:
+ {
+ cur_field = new_fw_config_field((yyvsp[-1].string), strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0));
+}
+ break;
+
+ case 40:
+ { }
+ break;
+
+ case 41:
+ {
+ cur_field = get_fw_config_field((yyvsp[0].string));
+}
+ break;
+
+ case 42:
+ { }
+ break;
+
+ case 43:
+ { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoul((yyvsp[0].string), NULL, 0)); }
+ break;
+
+ case 44:
+ { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); }
+ break;
+
default: break;