summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2020-05-06 11:47:04 -0600
committerPatrick Georgi <pgeorgi@google.com>2020-05-12 20:12:17 +0000
commit3f3f53cd5e05eead7a8b8616244a4665bd14b22b (patch)
tree3181c1d34ad472611ea5eccbceba198ed6b70618
parent5819eab5a660f915e0d18dd7d948d2af2a231aa0 (diff)
downloadcoreboot-3f3f53cd5e05eead7a8b8616244a4665bd14b22b.tar.xz
util/sconfig: Add LPC and ESPI buses
Picasso has an LPC and eSPI bridge on the same PCI DEVFN. They can both be active at the same time. This adds a way to specify which devices belong on which bus. i.e., device pci 14.3 on # - D14F3 bridge device espi 0 on chip ec/google/chromeec device pnp 0c09.0 on end end end device lpc 0 on end end BUG=b:154445472 TEST=Built trembyle and saw static.c contained the espi bus. Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I0c2f40813c05680f72e5f30cbb13617e8f994841 Reviewed-on: https://review.coreboot.org/c/coreboot/+/41099 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--src/device/device_const.c6
-rw-r--r--src/device/device_util.c8
-rw-r--r--src/include/device/path.h14
-rw-r--r--util/sconfig/lex.yy.c_shipped283
-rw-r--r--util/sconfig/main.c8
-rwxr-xr-xutil/sconfig/sconfig.l2
-rw-r--r--util/sconfig/sconfig.tab.c_shipped34
-rw-r--r--util/sconfig/sconfig.tab.h_shipped4
-rwxr-xr-xutil/sconfig/sconfig.y2
9 files changed, 207 insertions, 154 deletions
diff --git a/src/device/device_const.c b/src/device/device_const.c
index 65ec15729a..3ad00f8838 100644
--- a/src/device/device_const.c
+++ b/src/device/device_const.c
@@ -156,6 +156,12 @@ static int path_eq(const struct device_path *path1,
case DEVICE_PATH_MMIO:
equal = (path1->mmio.addr == path2->mmio.addr);
break;
+ case DEVICE_PATH_ESPI:
+ equal = (path1->espi.addr == path2->espi.addr);
+ break;
+ case DEVICE_PATH_LPC:
+ equal = (path1->lpc.addr == path2->lpc.addr);
+ break;
default:
printk(BIOS_ERR, "Unknown device type: %d\n", path1->type);
break;
diff --git a/src/device/device_util.c b/src/device/device_util.c
index 5aa53c1daf..88608597f2 100644
--- a/src/device/device_util.c
+++ b/src/device/device_util.c
@@ -215,6 +215,14 @@ const char *dev_path(const struct device *dev)
snprintf(buffer, sizeof(buffer), "MMIO: %08lx",
dev->path.mmio.addr);
break;
+ case DEVICE_PATH_ESPI:
+ snprintf(buffer, sizeof(buffer), "ESPI: %08lx",
+ dev->path.espi.addr);
+ break;
+ case DEVICE_PATH_LPC:
+ snprintf(buffer, sizeof(buffer), "LPC: %08lx",
+ dev->path.lpc.addr);
+ break;
default:
printk(BIOS_ERR, "Unknown device path type: %d\n",
dev->path.type);
diff --git a/src/include/device/path.h b/src/include/device/path.h
index 6736bede69..964b4725fc 100644
--- a/src/include/device/path.h
+++ b/src/include/device/path.h
@@ -19,6 +19,8 @@ enum device_path_type {
DEVICE_PATH_SPI,
DEVICE_PATH_USB,
DEVICE_PATH_MMIO,
+ DEVICE_PATH_ESPI,
+ DEVICE_PATH_LPC,
/*
* When adding path types to this table, please also update the
@@ -42,6 +44,8 @@ enum device_path_type {
"DEVICE_PATH_SPI", \
"DEVICE_PATH_USB", \
"DEVICE_PATH_MMIO", \
+ "DEVICE_PATH_ESPI", \
+ "DEVICE_PATH_LPC", \
}
struct domain_path {
@@ -104,6 +108,14 @@ struct mmio_path {
uintptr_t addr;
};
+struct espi_path {
+ uintptr_t addr;
+};
+
+struct lpc_path {
+ uintptr_t addr;
+};
+
struct device_path {
enum device_path_type type;
union {
@@ -120,6 +132,8 @@ struct device_path {
struct spi_path spi;
struct usb_path usb;
struct mmio_path mmio;
+ struct espi_path espi;
+ struct lpc_path lpc;
};
};
diff --git a/util/sconfig/lex.yy.c_shipped b/util/sconfig/lex.yy.c_shipped
index 63297732fa..61928e6397 100644
--- a/util/sconfig/lex.yy.c_shipped
+++ b/util/sconfig/lex.yy.c_shipped
@@ -159,8 +159,10 @@ extern FILE *yyin, *yyout;
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
+
#define YY_LESS_LINENO(n)
#define YY_LINENO_REWIND_TO(ptr)
+
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
do \
@@ -347,8 +349,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 39
-#define YY_END_OF_BUFFER 40
+#define YY_NUM_RULES 41
+#define YY_END_OF_BUFFER 42
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -356,26 +358,27 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[168] =
+static const flex_int16_t yy_accept[173] =
{ 0,
- 0, 0, 40, 38, 1, 3, 38, 38, 38, 33,
- 33, 31, 34, 38, 34, 34, 34, 38, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38, 1, 3,
- 38, 0, 38, 38, 0, 2, 33, 34, 38, 38,
- 38, 38, 34, 38, 38, 38, 38, 38, 38, 38,
- 25, 38, 38, 38, 38, 38, 7, 38, 38, 38,
- 38, 38, 38, 38, 37, 37, 38, 0, 32, 38,
- 38, 17, 38, 38, 24, 29, 38, 38, 14, 38,
- 38, 23, 38, 38, 38, 8, 11, 13, 38, 38,
- 21, 38, 22, 38, 0, 35, 4, 38, 38, 38,
-
- 38, 38, 38, 38, 38, 38, 20, 38, 38, 38,
- 36, 36, 38, 38, 38, 38, 38, 38, 38, 15,
- 38, 38, 38, 38, 38, 5, 18, 38, 9, 38,
- 12, 38, 38, 38, 38, 38, 19, 27, 38, 38,
- 38, 38, 38, 38, 38, 38, 6, 38, 38, 38,
- 38, 10, 38, 38, 38, 26, 38, 38, 16, 38,
- 28, 38, 38, 38, 38, 30, 0
+ 0, 0, 42, 40, 1, 3, 40, 40, 40, 35,
+ 35, 33, 36, 40, 36, 36, 36, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 1, 3,
+ 40, 0, 40, 40, 0, 2, 35, 36, 40, 40,
+ 40, 40, 36, 40, 40, 40, 40, 40, 40, 40,
+ 40, 27, 40, 40, 40, 40, 40, 40, 7, 40,
+ 40, 40, 40, 40, 40, 40, 39, 39, 40, 0,
+ 34, 40, 40, 17, 40, 40, 26, 31, 40, 40,
+ 40, 14, 40, 40, 25, 40, 23, 40, 40, 8,
+ 11, 13, 40, 40, 21, 40, 22, 40, 0, 37,
+
+ 4, 40, 40, 40, 24, 40, 40, 40, 40, 40,
+ 40, 20, 40, 40, 40, 38, 38, 40, 40, 40,
+ 40, 40, 40, 40, 15, 40, 40, 40, 40, 40,
+ 5, 18, 40, 9, 40, 12, 40, 40, 40, 40,
+ 40, 19, 29, 40, 40, 40, 40, 40, 40, 40,
+ 40, 6, 40, 40, 40, 40, 10, 40, 40, 40,
+ 28, 40, 40, 16, 40, 30, 40, 40, 40, 40,
+ 32, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -418,118 +421,118 @@ static const YY_CHAR yy_meta[39] =
1, 1, 1, 1, 1, 1, 1, 1
} ;
-static const flex_int16_t yy_base[175] =
+static const flex_int16_t yy_base[180] =
{ 0,
- 0, 0, 235, 0, 232, 236, 230, 37, 41, 38,
- 195, 0, 44, 217, 54, 78, 60, 209, 204, 45,
- 211, 48, 42, 52, 206, 62, 193, 0, 223, 236,
- 88, 219, 93, 79, 220, 236, 0, 93, 104, 207,
- 196, 185, 96, 192, 187, 197, 188, 195, 195, 189,
- 195, 180, 180, 181, 183, 185, 0, 181, 175, 181,
- 185, 177, 183, 182, 0, 236, 115, 194, 0, 187,
- 167, 180, 170, 177, 0, 0, 172, 172, 0, 170,
- 160, 0, 164, 168, 158, 0, 0, 0, 161, 160,
- 0, 151, 0, 178, 177, 0, 0, 162, 161, 154,
-
- 146, 156, 144, 150, 155, 156, 0, 139, 142, 132,
- 0, 236, 143, 147, 139, 141, 137, 139, 144, 0,
- 128, 127, 127, 126, 123, 0, 0, 138, 0, 122,
- 139, 125, 132, 136, 117, 117, 0, 0, 124, 116,
- 115, 113, 124, 97, 98, 91, 0, 102, 100, 98,
- 83, 0, 80, 83, 74, 0, 60, 63, 0, 63,
- 0, 56, 51, 33, 29, 0, 236, 40, 132, 134,
- 136, 138, 140, 142
+ 0, 0, 240, 0, 237, 241, 235, 37, 41, 38,
+ 200, 0, 44, 222, 54, 78, 60, 214, 209, 45,
+ 49, 48, 42, 52, 212, 62, 199, 0, 229, 241,
+ 93, 225, 98, 79, 226, 241, 0, 97, 104, 213,
+ 202, 191, 110, 198, 193, 203, 192, 193, 200, 200,
+ 194, 200, 185, 185, 195, 185, 187, 189, 0, 185,
+ 179, 185, 189, 181, 187, 186, 0, 241, 125, 198,
+ 0, 191, 171, 184, 174, 181, 0, 0, 172, 175,
+ 175, 0, 173, 163, 0, 167, 0, 171, 161, 0,
+ 0, 0, 164, 163, 0, 154, 0, 181, 180, 0,
+
+ 0, 165, 164, 157, 0, 149, 159, 147, 153, 158,
+ 159, 0, 142, 145, 135, 0, 241, 146, 150, 142,
+ 144, 140, 142, 147, 0, 131, 130, 130, 129, 126,
+ 0, 0, 141, 0, 125, 129, 115, 122, 126, 107,
+ 107, 0, 0, 114, 106, 105, 103, 114, 100, 101,
+ 94, 0, 105, 102, 99, 83, 0, 80, 83, 70,
+ 0, 60, 71, 0, 74, 0, 63, 55, 39, 29,
+ 0, 241, 40, 146, 148, 150, 152, 154, 156
} ;
-static const flex_int16_t yy_def[175] =
+static const flex_int16_t yy_def[180] =
{ 0,
- 167, 1, 167, 168, 167, 167, 168, 169, 170, 168,
- 10, 168, 10, 168, 10, 10, 10, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 167, 167,
- 169, 171, 172, 170, 173, 167, 10, 10, 10, 168,
- 168, 168, 10, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 167, 172, 174, 39, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 167, 168, 168, 168, 168, 168,
-
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 167, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
- 168, 168, 168, 168, 168, 168, 0, 167, 167, 167,
- 167, 167, 167, 167
+ 172, 1, 172, 173, 172, 172, 173, 174, 175, 173,
+ 10, 173, 10, 173, 10, 10, 10, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 172, 172,
+ 174, 176, 177, 175, 178, 172, 10, 10, 10, 173,
+ 173, 173, 10, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 172, 177, 179,
+ 39, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 172, 173,
+
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 172, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
+ 173, 0, 172, 172, 172, 172, 172, 172, 172
} ;
-static const flex_int16_t yy_nxt[275] =
+static const flex_int16_t yy_nxt[280] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 10, 12,
13, 13, 14, 4, 4, 4, 13, 13, 15, 16,
17, 13, 18, 19, 20, 21, 22, 4, 23, 24,
4, 25, 26, 4, 27, 4, 4, 4, 32, 32,
- 28, 33, 35, 36, 37, 37, 37, 166, 38, 38,
- 38, 38, 38, 49, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 56, 54, 165, 38, 38, 38, 57,
- 58, 164, 50, 51, 55, 163, 52, 41, 162, 59,
- 35, 36, 161, 42, 38, 38, 38, 46, 61, 32,
- 32, 62, 65, 160, 68, 68, 63, 28, 43, 38,
-
- 38, 38, 38, 38, 38, 159, 44, 158, 157, 45,
- 69, 69, 69, 156, 69, 69, 68, 68, 155, 94,
- 69, 69, 69, 69, 69, 69, 154, 153, 152, 151,
- 150, 73, 31, 31, 34, 34, 32, 32, 67, 67,
- 35, 35, 68, 68, 149, 148, 147, 146, 145, 144,
- 143, 142, 141, 140, 139, 138, 137, 136, 135, 134,
- 133, 132, 131, 130, 129, 128, 127, 126, 125, 124,
- 123, 122, 121, 120, 119, 118, 117, 116, 115, 114,
- 113, 112, 111, 110, 109, 108, 107, 106, 105, 104,
- 103, 102, 101, 100, 99, 98, 97, 96, 95, 93,
-
- 92, 91, 90, 89, 88, 87, 86, 85, 84, 83,
- 82, 81, 80, 79, 78, 77, 76, 75, 74, 72,
- 71, 70, 36, 66, 29, 64, 60, 53, 48, 47,
- 40, 39, 30, 29, 167, 3, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167
+ 28, 33, 35, 36, 37, 37, 37, 171, 38, 38,
+ 38, 38, 38, 50, 38, 38, 38, 38, 38, 38,
+ 38, 38, 38, 58, 56, 54, 38, 38, 38, 59,
+ 60, 170, 51, 52, 57, 169, 53, 41, 55, 61,
+ 35, 36, 168, 42, 38, 38, 38, 46, 63, 167,
+ 166, 64, 47, 165, 32, 32, 65, 67, 43, 70,
+
+ 70, 164, 28, 38, 38, 38, 44, 163, 162, 45,
+ 71, 71, 71, 161, 71, 71, 38, 38, 38, 160,
+ 71, 71, 71, 71, 71, 71, 70, 70, 159, 98,
+ 158, 157, 156, 155, 154, 153, 152, 151, 150, 149,
+ 148, 147, 146, 145, 144, 75, 31, 31, 34, 34,
+ 32, 32, 69, 69, 35, 35, 70, 70, 143, 142,
+ 141, 140, 139, 138, 137, 136, 135, 134, 133, 132,
+ 131, 130, 129, 128, 127, 126, 125, 124, 123, 122,
+ 121, 120, 119, 118, 117, 116, 115, 114, 113, 112,
+ 111, 110, 109, 108, 107, 106, 105, 104, 103, 102,
+
+ 101, 100, 99, 97, 96, 95, 94, 93, 92, 91,
+ 90, 89, 88, 87, 86, 85, 84, 83, 82, 81,
+ 80, 79, 78, 77, 76, 74, 73, 72, 36, 68,
+ 29, 66, 62, 49, 48, 40, 39, 30, 29, 172,
+ 3, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172
} ;
-static const flex_int16_t yy_chk[275] =
+static const flex_int16_t yy_chk[280] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 8, 8,
- 168, 8, 9, 9, 10, 10, 10, 165, 10, 10,
+ 173, 8, 9, 9, 10, 10, 10, 170, 10, 10,
13, 13, 13, 20, 10, 10, 10, 10, 10, 10,
- 15, 15, 15, 23, 22, 164, 17, 17, 17, 23,
- 24, 163, 20, 20, 22, 162, 20, 15, 160, 24,
- 34, 34, 158, 15, 16, 16, 16, 17, 26, 31,
- 31, 26, 31, 157, 33, 33, 26, 33, 16, 38,
-
- 38, 38, 43, 43, 43, 155, 16, 154, 153, 16,
- 39, 39, 39, 151, 39, 39, 67, 67, 150, 67,
- 39, 39, 39, 39, 39, 39, 149, 148, 146, 145,
- 144, 43, 169, 169, 170, 170, 171, 171, 172, 172,
- 173, 173, 174, 174, 143, 142, 141, 140, 139, 136,
- 135, 134, 133, 132, 131, 130, 128, 125, 124, 123,
- 122, 121, 119, 118, 117, 116, 115, 114, 113, 110,
- 109, 108, 106, 105, 104, 103, 102, 101, 100, 99,
- 98, 95, 94, 92, 90, 89, 85, 84, 83, 81,
- 80, 78, 77, 74, 73, 72, 71, 70, 68, 64,
-
- 63, 62, 61, 60, 59, 58, 56, 55, 54, 53,
- 52, 51, 50, 49, 48, 47, 46, 45, 44, 42,
- 41, 40, 35, 32, 29, 27, 25, 21, 19, 18,
- 14, 11, 7, 5, 3, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167
+ 15, 15, 15, 23, 22, 21, 17, 17, 17, 23,
+ 24, 169, 20, 20, 22, 168, 20, 15, 21, 24,
+ 34, 34, 167, 15, 16, 16, 16, 17, 26, 165,
+ 163, 26, 17, 162, 31, 31, 26, 31, 16, 33,
+
+ 33, 160, 33, 38, 38, 38, 16, 159, 158, 16,
+ 39, 39, 39, 156, 39, 39, 43, 43, 43, 155,
+ 39, 39, 39, 39, 39, 39, 69, 69, 154, 69,
+ 153, 151, 150, 149, 148, 147, 146, 145, 144, 141,
+ 140, 139, 138, 137, 136, 43, 174, 174, 175, 175,
+ 176, 176, 177, 177, 178, 178, 179, 179, 135, 133,
+ 130, 129, 128, 127, 126, 124, 123, 122, 121, 120,
+ 119, 118, 115, 114, 113, 111, 110, 109, 108, 107,
+ 106, 104, 103, 102, 99, 98, 96, 94, 93, 89,
+ 88, 86, 84, 83, 81, 80, 79, 76, 75, 74,
+
+ 73, 72, 70, 66, 65, 64, 63, 62, 61, 60,
+ 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
+ 48, 47, 46, 45, 44, 42, 41, 40, 35, 32,
+ 29, 27, 25, 19, 18, 14, 11, 7, 5, 3,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172, 172,
+ 172, 172, 172, 172, 172, 172, 172, 172, 172
} ;
static yy_state_type yy_last_accepting_state;
@@ -807,13 +810,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 168 )
+ if ( yy_current_state >= 173 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 236 );
+ while ( yy_base[yy_current_state] != 241 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -929,47 +932,47 @@ YY_RULE_SETUP
YY_BREAK
case 23:
YY_RULE_SETUP
-{yylval.number=IRQ; return(RESOURCE);}
+{yylval.number=LPC; return(BUS);}
YY_BREAK
case 24:
YY_RULE_SETUP
-{yylval.number=DRQ; return(RESOURCE);}
+{yylval.number=ESPI; return(BUS);}
YY_BREAK
case 25:
YY_RULE_SETUP
-{yylval.number=IO; return(RESOURCE);}
+{yylval.number=IRQ; return(RESOURCE);}
YY_BREAK
case 26:
YY_RULE_SETUP
-{return(IOAPIC_IRQ);}
+{yylval.number=DRQ; return(RESOURCE);}
YY_BREAK
case 27:
YY_RULE_SETUP
-{return(INHERIT);}
+{yylval.number=IO; return(RESOURCE);}
YY_BREAK
case 28:
YY_RULE_SETUP
-{return(SUBSYSTEMID);}
+{return(IOAPIC_IRQ);}
YY_BREAK
case 29:
YY_RULE_SETUP
-{return(END);}
+{return(INHERIT);}
YY_BREAK
case 30:
YY_RULE_SETUP
-{return(SLOT_DESC);}
+{return(SUBSYSTEMID);}
YY_BREAK
case 31:
YY_RULE_SETUP
-{return(EQUALS);}
+{return(END);}
YY_BREAK
case 32:
YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
+{return(SLOT_DESC);}
YY_BREAK
case 33:
YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
+{return(EQUALS);}
YY_BREAK
case 34:
YY_RULE_SETUP
@@ -977,23 +980,31 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
YY_BREAK
case 36:
-/* rule 36 can match eol */
YY_RULE_SETUP
-{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
YY_BREAK
case 37:
-/* rule 37 can match eol */
YY_RULE_SETUP
-{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(PCIINT);}
YY_BREAK
case 38:
+/* rule 38 can match eol */
YY_RULE_SETUP
-{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
+{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
YY_BREAK
case 39:
+/* rule 39 can match eol */
+YY_RULE_SETUP
+{yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
+ YY_BREAK
+case 40:
+YY_RULE_SETUP
+{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
+ YY_BREAK
+case 41:
YY_RULE_SETUP
ECHO;
YY_BREAK
@@ -1293,7 +1304,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 168 )
+ if ( yy_current_state >= 173 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1321,11 +1332,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 168 )
+ if ( yy_current_state >= 173 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 167);
+ yy_is_jam = (yy_current_state == 172);
return yy_is_jam ? 0 : yy_current_state;
}
diff --git a/util/sconfig/main.c b/util/sconfig/main.c
index b0c53385c6..6676baea90 100644
--- a/util/sconfig/main.c
+++ b/util/sconfig/main.c
@@ -493,6 +493,14 @@ struct device *new_device(struct bus *parent,
case MMIO:
new_d->path = ".type=DEVICE_PATH_MMIO,{.mmio={ .addr = 0x%x }}";
break;
+
+ case ESPI:
+ new_d->path = ".type=DEVICE_PATH_ESPI,{.espi={ .addr = 0x%x }}";
+ break;
+
+ case LPC:
+ new_d->path = ".type=DEVICE_PATH_LPC,{.lpc={ .addr = 0x%x }}";
+ break;
}
return new_d;
diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l
index 9fd0cec0e9..5ac5057e23 100755
--- a/util/sconfig/sconfig.l
+++ b/util/sconfig/sconfig.l
@@ -30,6 +30,8 @@ generic {yylval.number=GENERIC; return(BUS);}
mmio {yylval.number=MMIO; return(BUS);}
spi {yylval.number=SPI; return(BUS);}
usb {yylval.number=USB; return(BUS);}
+lpc {yylval.number=LPC; return(BUS);}
+espi {yylval.number=ESPI; return(BUS);}
irq {yylval.number=IRQ; return(RESOURCE);}
drq {yylval.number=DRQ; return(RESOURCE);}
io {yylval.number=IO; return(RESOURCE);}
diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped
index fb7e3f710f..2bae43bc29 100644
--- a/util/sconfig/sconfig.tab.c_shipped
+++ b/util/sconfig/sconfig.tab.c_shipped
@@ -158,7 +158,9 @@ extern int yydebug;
GENERIC = 287,
SPI = 288,
USB = 289,
- MMIO = 290
+ MMIO = 290,
+ LPC = 291,
+ ESPI = 292
};
#endif
@@ -493,7 +495,7 @@ union yyalloc
#define YYLAST 45
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 36
+#define YYNTOKENS 38
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 15
/* YYNRULES -- Number of rules. */
@@ -502,7 +504,7 @@ union yyalloc
#define YYNSTATES 50
#define YYUNDEFTOK 2
-#define YYMAXUTOK 290
+#define YYMAXUTOK 292
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -543,7 +545,7 @@ 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
+ 35, 36, 37
};
#if YYDEBUG
@@ -565,10 +567,10 @@ static const char *const yytname[] =
"STATUS", "MANDATORY", "BUS", "RESOURCE", "END", "EQUALS", "HEX",
"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",
- "$accept", "devtree", "$@1", "chipchildren", "devicechildren", "chip",
- "@2", "device", "@3", "status", "resource", "registers", "subsystemid",
- "ioapic_irq", "smbios_slot_desc", YY_NULLPTR
+ "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
};
#endif
@@ -580,7 +582,7 @@ 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
+ 285, 286, 287, 288, 289, 290, 291, 292
};
# endif
@@ -656,19 +658,19 @@ static const yytype_int8 yycheck[] =
symbol of state STATE-NUM. */
static const yytype_int8 yystos[] =
{
- 0, 37, 38, 0, 3, 41, 14, 42, 39, 4,
- 5, 11, 41, 43, 47, 9, 14, 26, 12, 6,
- 7, 45, 14, 44, 40, 10, 11, 24, 27, 29,
- 41, 43, 46, 47, 48, 49, 50, 26, 14, 26,
+ 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
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_int8 yyr1[] =
{
- 0, 36, 38, 37, 39, 39, 39, 39, 40, 40,
- 40, 40, 40, 40, 40, 40, 42, 41, 44, 43,
- 45, 45, 46, 47, 48, 48, 49, 50, 50, 50
+ 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
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
diff --git a/util/sconfig/sconfig.tab.h_shipped b/util/sconfig/sconfig.tab.h_shipped
index f93daea392..5fa9d19362 100644
--- a/util/sconfig/sconfig.tab.h_shipped
+++ b/util/sconfig/sconfig.tab.h_shipped
@@ -81,7 +81,9 @@ extern int yydebug;
GENERIC = 287,
SPI = 288,
USB = 289,
- MMIO = 290
+ MMIO = 290,
+ LPC = 291,
+ ESPI = 292
};
#endif
diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y
index 597e309a42..161cf81551 100755
--- a/util/sconfig/sconfig.y
+++ b/util/sconfig/sconfig.y
@@ -18,7 +18,7 @@ static struct chip_instance *cur_chip_instance;
int number;
}
-%token CHIP DEVICE REGISTER BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX 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
+%token CHIP DEVICE REGISTER BOOL STATUS MANDATORY BUS RESOURCE END EQUALS HEX 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
%%
devtree: { cur_parent = root_parent; } chip;