diff options
-rw-r--r-- | src/device/Makefile.inc | 2 | ||||
-rw-r--r-- | src/device/device_const.c | 3 | ||||
-rw-r--r-- | src/device/device_util.c | 6 | ||||
-rw-r--r-- | src/device/gpio.c | 21 | ||||
-rw-r--r-- | src/include/device/device.h | 2 | ||||
-rw-r--r-- | src/include/device/gpio.h | 20 | ||||
-rw-r--r-- | src/include/device/path.h | 7 | ||||
-rw-r--r-- | util/sconfig/lex.yy.c_shipped | 316 | ||||
-rw-r--r-- | util/sconfig/main.c | 4 | ||||
-rwxr-xr-x | util/sconfig/sconfig.l | 1 | ||||
-rw-r--r-- | util/sconfig/sconfig.tab.c_shipped | 372 | ||||
-rw-r--r-- | util/sconfig/sconfig.tab.h_shipped | 19 | ||||
-rwxr-xr-x | util/sconfig/sconfig.y | 2 |
13 files changed, 373 insertions, 402 deletions
diff --git a/src/device/Makefile.inc b/src/device/Makefile.inc index bb125afb8f..808648d4b4 100644 --- a/src/device/Makefile.inc +++ b/src/device/Makefile.inc @@ -63,3 +63,5 @@ ramstage-$(CONFIG_RESOURCE_ALLOCATOR_V3) += resource_allocator_v3.c ramstage-$(CONFIG_RESOURCE_ALLOCATOR_V4) += resource_allocator_v4.c ramstage-$(CONFIG_XHCI_UTILS) += xhci.c + +ramstage-y += gpio.c diff --git a/src/device/device_const.c b/src/device/device_const.c index 2dc583ca27..5288a743b6 100644 --- a/src/device/device_const.c +++ b/src/device/device_const.c @@ -162,6 +162,9 @@ static int path_eq(const struct device_path *path1, case DEVICE_PATH_LPC: equal = (path1->lpc.addr == path2->lpc.addr); break; + case DEVICE_PATH_GPIO: + equal = (path1->gpio.id == path2->gpio.id); + 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 452a87bf14..0bce26a99e 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -130,6 +130,9 @@ u32 dev_path_encode(const struct device *dev) case DEVICE_PATH_USB: ret |= dev->path.usb.port_type << 8 | dev->path.usb.port_id; break; + case DEVICE_PATH_GPIO: + ret |= dev->path.gpio.id; + break; case DEVICE_PATH_NONE: case DEVICE_PATH_MMIO: /* don't care */ default: @@ -223,6 +226,9 @@ const char *dev_path(const struct device *dev) snprintf(buffer, sizeof(buffer), "LPC: %08lx", dev->path.lpc.addr); break; + case DEVICE_PATH_GPIO: + snprintf(buffer, sizeof(buffer), "GPIO: %d", dev->path.gpio.id); + break; default: printk(BIOS_ERR, "Unknown device path type: %d\n", dev->path.type); diff --git a/src/device/gpio.c b/src/device/gpio.c new file mode 100644 index 0000000000..5e71497024 --- /dev/null +++ b/src/device/gpio.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <console/console.h> +#include <device/device.h> +#include <device/gpio.h> + +const struct gpio_operations *dev_get_gpio_ops(struct device *dev) +{ + if (!dev) { + printk(BIOS_ERR, "Could not get gpio operations, device is NULL."); + return NULL; + } else if (!dev->ops) { + printk(BIOS_ERR, "Could not get gpio operations, dev->ops is NULL."); + return NULL; + } else if (!dev->ops->ops_gpio) { + printk(BIOS_ERR, "Could not get gpio operations, ops_gpio is NULL."); + return NULL; + } + + return dev->ops->ops_gpio; +} diff --git a/src/include/device/device.h b/src/include/device/device.h index 786a640f39..d83cfe4075 100644 --- a/src/include/device/device.h +++ b/src/include/device/device.h @@ -16,6 +16,7 @@ struct smbus_bus_operations; struct pnp_mode_ops; struct spi_bus_operations; struct usb_bus_operations; +struct gpio_operations; /* Chip operations */ struct chip_operations { @@ -62,6 +63,7 @@ struct device_operations { const struct spi_bus_operations *ops_spi_bus; const struct smbus_bus_operations *ops_smbus_bus; const struct pnp_mode_ops *ops_pnp_mode; + const struct gpio_operations *ops_gpio; }; /** diff --git a/src/include/device/gpio.h b/src/include/device/gpio.h new file mode 100644 index 0000000000..67975b3c45 --- /dev/null +++ b/src/include/device/gpio.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef __DEVICE_GPIO_H__ +#define __DEVICE_GPIO_H__ + +#include <types.h> + +struct gpio_operations { + int (*get)(uint32_t gpio); + void (*set)(uint32_t gpio, int value); + void (*input_pulldown)(uint32_t gpio); + void (*input_pullup)(uint32_t gpio); + void (*input)(uint32_t gpio); + void (*output)(uint32_t gpio, int value); +}; + +/* Helper for getting gpio operations from a device */ +const struct gpio_operations *dev_get_gpio_ops(struct device *dev); + +#endif /* __DEVICE_GPIO_H__ */ diff --git a/src/include/device/path.h b/src/include/device/path.h index 5690badc4c..0cdb997726 100644 --- a/src/include/device/path.h +++ b/src/include/device/path.h @@ -21,6 +21,7 @@ enum device_path_type { DEVICE_PATH_MMIO, DEVICE_PATH_ESPI, DEVICE_PATH_LPC, + DEVICE_PATH_GPIO, /* * When adding path types to this table, please also update the @@ -46,6 +47,7 @@ enum device_path_type { "DEVICE_PATH_MMIO", \ "DEVICE_PATH_ESPI", \ "DEVICE_PATH_LPC", \ + "DEVICE_PATH_GPIO", \ } struct domain_path { @@ -116,6 +118,10 @@ struct lpc_path { uintptr_t addr; }; +struct gpio_path { + unsigned int id; +}; + struct device_path { enum device_path_type type; union { @@ -134,6 +140,7 @@ struct device_path { struct mmio_path mmio; struct espi_path espi; struct lpc_path lpc; + struct gpio_path gpio; }; }; diff --git a/util/sconfig/lex.yy.c_shipped b/util/sconfig/lex.yy.c_shipped index 18b34b5e87..c3d985945a 100644 --- a/util/sconfig/lex.yy.c_shipped +++ b/util/sconfig/lex.yy.c_shipped @@ -349,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 49 -#define YY_END_OF_BUFFER 50 +#define YY_NUM_RULES 50 +#define YY_END_OF_BUFFER 51 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -358,31 +358,31 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[203] = +static const flex_int16_t yy_accept[206] = { 0, - 0, 0, 50, 48, 1, 3, 48, 48, 48, 43, - 43, 41, 44, 48, 44, 44, 44, 44, 44, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 1, 3, 48, 0, 48, 48, 0, 2, 43, 44, - 48, 48, 48, 9, 48, 48, 44, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 35, 48, 48, - 48, 48, 48, 48, 15, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 47, 47, 48, 0, 42, 48, - 48, 48, 25, 48, 48, 34, 39, 48, 48, 48, - 48, 48, 22, 48, 48, 33, 48, 31, 48, 48, - - 16, 48, 19, 21, 48, 8, 48, 48, 29, 48, - 30, 7, 48, 0, 45, 48, 4, 48, 48, 48, - 32, 48, 48, 48, 48, 48, 48, 48, 48, 28, - 48, 48, 48, 48, 48, 46, 46, 6, 48, 48, - 48, 12, 48, 48, 48, 48, 48, 23, 48, 48, - 14, 48, 48, 48, 48, 5, 26, 48, 48, 17, - 48, 20, 48, 13, 48, 48, 48, 48, 48, 27, - 37, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 10, 48, 48, 48, 11, 48, 18, 48, 48, 48, - 36, 48, 48, 24, 48, 38, 48, 48, 48, 48, - - 40, 0 + 0, 0, 51, 49, 1, 3, 49, 49, 49, 44, + 44, 42, 45, 49, 45, 45, 45, 45, 45, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 1, 3, 49, 0, 49, 49, 0, 2, 44, 45, + 49, 49, 49, 9, 49, 49, 45, 49, 49, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 36, 49, + 49, 49, 49, 49, 49, 15, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 48, 48, 49, 0, 43, + 49, 49, 49, 25, 49, 49, 35, 40, 49, 49, + 49, 49, 49, 49, 22, 49, 49, 34, 49, 31, + + 49, 49, 16, 49, 19, 21, 49, 8, 49, 49, + 29, 49, 30, 7, 49, 0, 46, 49, 4, 49, + 49, 49, 32, 49, 49, 49, 33, 49, 49, 49, + 49, 49, 28, 49, 49, 49, 49, 49, 47, 47, + 6, 49, 49, 49, 12, 49, 49, 49, 49, 49, + 23, 49, 49, 14, 49, 49, 49, 49, 5, 26, + 49, 49, 17, 49, 20, 49, 13, 49, 49, 49, + 49, 49, 27, 38, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 10, 49, 49, 49, 11, 49, 18, + 49, 49, 49, 37, 49, 49, 24, 49, 39, 49, + + 49, 49, 49, 41, 0 } ; static const YY_CHAR yy_ec[256] = @@ -425,136 +425,138 @@ static const YY_CHAR yy_meta[40] = 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[210] = +static const flex_int16_t yy_base[213] = { 0, - 0, 0, 275, 0, 272, 276, 270, 38, 42, 39, - 234, 0, 45, 257, 55, 59, 83, 65, 62, 249, - 244, 68, 25, 48, 54, 75, 247, 75, 234, 0, - 264, 276, 106, 260, 111, 76, 261, 276, 0, 110, - 113, 248, 237, 0, 236, 225, 119, 232, 227, 237, - 226, 234, 238, 225, 232, 232, 226, 232, 217, 217, - 227, 217, 219, 221, 0, 208, 216, 210, 210, 63, - 220, 212, 218, 118, 0, 276, 135, 230, 0, 223, - 216, 202, 215, 205, 212, 0, 0, 203, 201, 207, - 204, 204, 0, 202, 192, 0, 196, 0, 200, 190, - - 0, 193, 0, 0, 199, 0, 191, 190, 0, 181, - 0, 0, 208, 207, 0, 178, 0, 191, 190, 183, - 0, 187, 177, 173, 183, 171, 177, 182, 183, 0, - 170, 177, 164, 167, 156, 0, 276, 0, 168, 172, - 164, 0, 163, 165, 161, 163, 168, 0, 152, 157, - 0, 150, 150, 149, 146, 0, 0, 158, 160, 0, - 144, 161, 147, 0, 154, 158, 139, 139, 146, 0, - 0, 145, 137, 136, 121, 132, 118, 128, 118, 110, - 0, 122, 120, 125, 0, 114, 0, 115, 118, 110, - 0, 107, 109, 0, 107, 0, 86, 80, 62, 61, - - 0, 276, 48, 155, 157, 159, 161, 163, 165 + 0, 0, 278, 0, 275, 279, 273, 38, 42, 39, + 237, 0, 45, 260, 55, 59, 83, 65, 62, 54, + 248, 68, 25, 59, 73, 86, 251, 81, 238, 0, + 268, 279, 77, 264, 104, 117, 265, 279, 0, 114, + 117, 252, 241, 0, 240, 229, 123, 236, 231, 241, + 230, 238, 242, 229, 231, 235, 235, 229, 235, 220, + 220, 230, 220, 222, 224, 0, 211, 219, 213, 213, + 118, 223, 215, 221, 92, 0, 279, 140, 233, 0, + 226, 219, 205, 218, 208, 215, 0, 0, 206, 204, + 210, 207, 198, 206, 0, 204, 194, 0, 198, 0, + + 202, 192, 0, 195, 0, 0, 201, 0, 193, 192, + 0, 183, 0, 0, 210, 209, 0, 180, 0, 193, + 192, 185, 0, 189, 179, 175, 0, 185, 173, 179, + 184, 185, 0, 172, 179, 166, 169, 158, 0, 279, + 0, 170, 174, 166, 0, 165, 167, 163, 165, 170, + 0, 154, 159, 0, 152, 152, 151, 148, 0, 0, + 160, 162, 0, 146, 163, 149, 0, 156, 160, 141, + 141, 148, 0, 0, 147, 126, 125, 123, 134, 120, + 130, 120, 112, 0, 124, 122, 127, 0, 116, 0, + 117, 119, 101, 0, 93, 97, 0, 86, 0, 74, + + 64, 45, 46, 0, 279, 48, 159, 161, 163, 165, + 167, 169 } ; -static const flex_int16_t yy_def[210] = +static const flex_int16_t yy_def[213] = { 0, - 202, 1, 202, 203, 202, 202, 203, 204, 205, 203, - 10, 203, 10, 203, 10, 10, 10, 10, 10, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 202, 202, 204, 206, 207, 205, 208, 202, 10, 10, - 10, 203, 203, 203, 203, 203, 10, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 202, 207, 209, 41, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 202, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 202, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - - 203, 0, 202, 202, 202, 202, 202, 202, 202 + 205, 1, 205, 206, 205, 205, 206, 207, 208, 206, + 10, 206, 10, 206, 10, 10, 10, 10, 10, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 205, 205, 207, 209, 210, 208, 211, 205, 10, 10, + 10, 206, 206, 206, 206, 206, 10, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 205, 210, 212, 41, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 205, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, + + 206, 206, 206, 206, 0, 205, 205, 205, 205, 205, + 205, 205 } ; -static const flex_int16_t yy_nxt[316] = +static const flex_int16_t yy_nxt[319] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 10, 12, 13, 13, 14, 4, 4, 4, 15, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 4, 25, 26, 4, 27, 28, 4, 29, 4, 4, 4, 4, 34, - 34, 60, 35, 37, 38, 39, 39, 39, 30, 40, - 40, 40, 40, 40, 61, 40, 40, 40, 40, 40, + 34, 61, 35, 37, 38, 39, 39, 39, 30, 40, 40, 40, 40, 40, 62, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 63, 64, 56, 37, 38, 201, - 43, 65, 45, 66, 106, 107, 52, 44, 46, 40, - 40, 40, 50, 67, 200, 57, 58, 51, 53, 59, - - 199, 71, 68, 47, 72, 198, 69, 34, 34, 73, - 75, 48, 78, 78, 49, 30, 40, 40, 40, 79, - 79, 79, 197, 79, 79, 40, 40, 40, 196, 79, - 79, 79, 79, 79, 79, 111, 78, 78, 112, 113, - 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, - 185, 184, 183, 182, 84, 33, 33, 36, 36, 34, - 34, 77, 77, 37, 37, 78, 78, 181, 180, 179, - 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, - 168, 167, 166, 165, 164, 163, 162, 161, 160, 159, - 158, 157, 156, 155, 154, 153, 152, 151, 150, 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, 110, 109, 108, 105, 104, - 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, - 93, 92, 91, 90, 89, 88, 87, 86, 85, 83, - 82, 81, 80, 38, 76, 31, 74, 70, 55, 54, - 42, 41, 32, 31, 202, 3, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202 + 40, 40, 40, 40, 204, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 54, 63, 57, 203, 34, 34, + 43, 76, 45, 55, 202, 64, 52, 44, 46, 40, + 40, 40, 50, 201, 65, 58, 59, 51, 53, 60, + + 66, 200, 67, 47, 68, 79, 79, 72, 30, 113, + 73, 48, 114, 69, 49, 74, 199, 70, 37, 38, + 40, 40, 40, 80, 80, 80, 198, 80, 80, 40, + 40, 40, 197, 80, 80, 80, 80, 80, 80, 108, + 109, 79, 79, 196, 115, 195, 194, 193, 192, 191, + 190, 189, 188, 187, 186, 185, 184, 183, 85, 33, + 33, 36, 36, 34, 34, 78, 78, 37, 37, 79, + 79, 182, 181, 180, 179, 178, 177, 176, 175, 174, + 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, + 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, + + 153, 152, 151, 150, 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, 112, 111, + 110, 107, 106, 105, 104, 103, 102, 101, 100, 99, + 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, + 88, 87, 86, 84, 83, 82, 81, 38, 77, 31, + 75, 71, 56, 42, 41, 32, 31, 205, 3, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205 } ; -static const flex_int16_t yy_chk[316] = +static const flex_int16_t yy_chk[319] = { 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, 1, 8, - 8, 23, 8, 9, 9, 10, 10, 10, 203, 10, + 8, 23, 8, 9, 9, 10, 10, 10, 206, 10, 10, 13, 13, 13, 23, 10, 10, 10, 10, 10, - 10, 15, 15, 15, 24, 16, 16, 16, 19, 19, - 19, 18, 18, 18, 24, 25, 22, 36, 36, 200, - 15, 25, 16, 25, 70, 70, 19, 15, 16, 17, - 17, 17, 18, 26, 199, 22, 22, 18, 19, 22, - - 198, 28, 26, 17, 28, 197, 26, 33, 33, 28, - 33, 17, 35, 35, 17, 35, 40, 40, 40, 41, - 41, 41, 195, 41, 41, 47, 47, 47, 193, 41, - 41, 41, 41, 41, 41, 74, 77, 77, 74, 77, - 192, 190, 189, 188, 186, 184, 183, 182, 180, 179, - 178, 177, 176, 175, 47, 204, 204, 205, 205, 206, - 206, 207, 207, 208, 208, 209, 209, 174, 173, 172, - 169, 168, 167, 166, 165, 163, 162, 161, 159, 158, - 155, 154, 153, 152, 150, 149, 147, 146, 145, 144, - 143, 141, 140, 139, 135, 134, 133, 132, 131, 129, - - 128, 127, 126, 125, 124, 123, 122, 120, 119, 118, - 116, 114, 113, 110, 108, 107, 105, 102, 100, 99, - 97, 95, 94, 92, 91, 90, 89, 88, 85, 84, - 83, 82, 81, 80, 78, 73, 72, 71, 69, 68, - 67, 66, 64, 63, 62, 61, 60, 59, 58, 57, - 56, 55, 54, 53, 52, 51, 50, 49, 48, 46, - 45, 43, 42, 37, 34, 31, 29, 27, 21, 20, - 14, 11, 7, 5, 3, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202 + 10, 15, 15, 15, 203, 16, 16, 16, 19, 19, + 19, 18, 18, 18, 20, 24, 22, 202, 33, 33, + 15, 33, 16, 20, 201, 24, 19, 15, 16, 17, + 17, 17, 18, 200, 25, 22, 22, 18, 19, 22, + + 25, 198, 25, 17, 26, 35, 35, 28, 35, 75, + 28, 17, 75, 26, 17, 28, 196, 26, 36, 36, + 40, 40, 40, 41, 41, 41, 195, 41, 41, 47, + 47, 47, 193, 41, 41, 41, 41, 41, 41, 71, + 71, 78, 78, 192, 78, 191, 189, 187, 186, 185, + 183, 182, 181, 180, 179, 178, 177, 176, 47, 207, + 207, 208, 208, 209, 209, 210, 210, 211, 211, 212, + 212, 175, 172, 171, 170, 169, 168, 166, 165, 164, + 162, 161, 158, 157, 156, 155, 153, 152, 150, 149, + 148, 147, 146, 144, 143, 142, 138, 137, 136, 135, + + 134, 132, 131, 130, 129, 128, 126, 125, 124, 122, + 121, 120, 118, 116, 115, 112, 110, 109, 107, 104, + 102, 101, 99, 97, 96, 94, 93, 92, 91, 90, + 89, 86, 85, 84, 83, 82, 81, 79, 74, 73, + 72, 70, 69, 68, 67, 65, 64, 63, 62, 61, + 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, + 50, 49, 48, 46, 45, 43, 42, 37, 34, 31, + 29, 27, 21, 14, 11, 7, 5, 3, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 205, 205, 205, 205, 205 } ; static yy_state_type yy_last_accepting_state; @@ -819,13 +821,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 >= 203 ) + if ( yy_current_state >= 206 ) 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] != 276 ); + while ( yy_base[yy_current_state] != 279 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -981,43 +983,43 @@ YY_RULE_SETUP YY_BREAK case 33: YY_RULE_SETUP -{yylval.number=IRQ; return(RESOURCE);} +{yylval.number=GPIO; return(BUS);} YY_BREAK case 34: YY_RULE_SETUP -{yylval.number=DRQ; return(RESOURCE);} +{yylval.number=IRQ; return(RESOURCE);} YY_BREAK case 35: YY_RULE_SETUP -{yylval.number=IO; return(RESOURCE);} +{yylval.number=DRQ; return(RESOURCE);} YY_BREAK case 36: YY_RULE_SETUP -{return(IOAPIC_IRQ);} +{yylval.number=IO; return(RESOURCE);} YY_BREAK case 37: YY_RULE_SETUP -{return(INHERIT);} +{return(IOAPIC_IRQ);} YY_BREAK case 38: YY_RULE_SETUP -{return(SUBSYSTEMID);} +{return(INHERIT);} YY_BREAK case 39: YY_RULE_SETUP -{return(END);} +{return(SUBSYSTEMID);} YY_BREAK case 40: YY_RULE_SETUP -{return(SLOT_DESC);} +{return(END);} YY_BREAK case 41: YY_RULE_SETUP -{return(EQUALS);} +{return(SLOT_DESC);} YY_BREAK case 42: YY_RULE_SETUP -{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);} +{return(EQUALS);} YY_BREAK case 43: YY_RULE_SETUP @@ -1029,12 +1031,11 @@ YY_RULE_SETUP YY_BREAK case 45: 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 46: -/* rule 46 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 47: /* rule 47 can match eol */ @@ -1042,11 +1043,16 @@ 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 48: +/* rule 48 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 49: YY_RULE_SETUP +{yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);} + YY_BREAK +case 50: +YY_RULE_SETUP ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1345,7 +1351,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 >= 203 ) + if ( yy_current_state >= 206 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -1373,11 +1379,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 >= 203 ) + if ( yy_current_state >= 206 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 202); + yy_is_jam = (yy_current_state == 205); return yy_is_jam ? 0 : yy_current_state; } diff --git a/util/sconfig/main.c b/util/sconfig/main.c index 815bfc7e55..175b926c5f 100644 --- a/util/sconfig/main.c +++ b/util/sconfig/main.c @@ -793,6 +793,10 @@ static struct device *new_device_with_path(struct bus *parent, case LPC: new_d->path = ".type=DEVICE_PATH_LPC,{.lpc={ .addr = 0x%x }}"; break; + + case GPIO: + new_d->path = ".type=DEVICE_PATH_GPIO,{.gpio={ .id = 0x%x }}"; + break; } return new_d; diff --git a/util/sconfig/sconfig.l b/util/sconfig/sconfig.l index a772b96b36..5bdc52b692 100755 --- a/util/sconfig/sconfig.l +++ b/util/sconfig/sconfig.l @@ -40,6 +40,7 @@ spi {yylval.number=SPI; return(BUS);} usb {yylval.number=USB; return(BUS);} lpc {yylval.number=LPC; return(BUS);} espi {yylval.number=ESPI; return(BUS);} +gpio {yylval.number=GPIO; 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 43fd14f090..a8d1e1db1f 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.6.3. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison implementation for Yacc-like parsers in C @@ -49,7 +49,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.6.3" +#define YYBISON_VERSION "3.7.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -71,6 +71,7 @@ /* sconfig, coreboot device tree compiler */ /* SPDX-License-Identifier: GPL-2.0-only */ +#include <stdint.h> #include "sconfig.h" int yylex(); @@ -103,96 +104,7 @@ static struct fw_config_field *cur_field; # endif # endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#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 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - CHIP = 258, /* CHIP */ - DEVICE = 259, /* DEVICE */ - REGISTER = 260, /* REGISTER */ - ALIAS = 261, /* ALIAS */ - REFERENCE = 262, /* REFERENCE */ - ASSOCIATION = 263, /* ASSOCIATION */ - BOOL = 264, /* BOOL */ - STATUS = 265, /* STATUS */ - MANDATORY = 266, /* MANDATORY */ - BUS = 267, /* BUS */ - RESOURCE = 268, /* RESOURCE */ - END = 269, /* END */ - EQUALS = 270, /* EQUALS */ - HEX = 271, /* HEX */ - STRING = 272, /* STRING */ - PCI = 273, /* PCI */ - PNP = 274, /* PNP */ - I2C = 275, /* I2C */ - APIC = 276, /* APIC */ - CPU_CLUSTER = 277, /* CPU_CLUSTER */ - CPU = 278, /* CPU */ - DOMAIN = 279, /* DOMAIN */ - IRQ = 280, /* IRQ */ - DRQ = 281, /* DRQ */ - SLOT_DESC = 282, /* SLOT_DESC */ - IO = 283, /* IO */ - NUMBER = 284, /* NUMBER */ - SUBSYSTEMID = 285, /* SUBSYSTEMID */ - INHERIT = 286, /* INHERIT */ - IOAPIC_IRQ = 287, /* IOAPIC_IRQ */ - IOAPIC = 288, /* IOAPIC */ - PCIINT = 289, /* PCIINT */ - GENERIC = 290, /* GENERIC */ - SPI = 291, /* SPI */ - USB = 292, /* USB */ - MMIO = 293, /* MMIO */ - LPC = 294, /* LPC */ - ESPI = 295, /* ESPI */ - FW_CONFIG_TABLE = 296, /* FW_CONFIG_TABLE */ - FW_CONFIG_FIELD = 297, /* FW_CONFIG_FIELD */ - FW_CONFIG_OPTION = 298, /* FW_CONFIG_OPTION */ - FW_CONFIG_PROBE = 299 /* FW_CONFIG_PROBE */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ - - struct device *dev; - struct chip_instance *chip_instance; - char *string; - int number; - - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */ +#include "sconfig.tab.h_shipped" /* Symbol kind. */ enum yysymbol_kind_t { @@ -238,36 +150,37 @@ enum yysymbol_kind_t YYSYMBOL_MMIO = 38, /* MMIO */ YYSYMBOL_LPC = 39, /* LPC */ YYSYMBOL_ESPI = 40, /* ESPI */ - YYSYMBOL_FW_CONFIG_TABLE = 41, /* FW_CONFIG_TABLE */ - YYSYMBOL_FW_CONFIG_FIELD = 42, /* FW_CONFIG_FIELD */ - YYSYMBOL_FW_CONFIG_OPTION = 43, /* FW_CONFIG_OPTION */ - YYSYMBOL_FW_CONFIG_PROBE = 44, /* FW_CONFIG_PROBE */ - YYSYMBOL_YYACCEPT = 45, /* $accept */ - YYSYMBOL_devtree = 46, /* devtree */ - YYSYMBOL_chipchildren = 47, /* chipchildren */ - YYSYMBOL_devicechildren = 48, /* devicechildren */ - YYSYMBOL_chip = 49, /* chip */ - YYSYMBOL_50_1 = 50, /* @1 */ - YYSYMBOL_device = 51, /* device */ - YYSYMBOL_52_2 = 52, /* @2 */ - YYSYMBOL_53_3 = 53, /* @3 */ - YYSYMBOL_alias = 54, /* alias */ - YYSYMBOL_status = 55, /* status */ - YYSYMBOL_resource = 56, /* resource */ - YYSYMBOL_reference = 57, /* reference */ - YYSYMBOL_registers = 58, /* registers */ - YYSYMBOL_subsystemid = 59, /* subsystemid */ - YYSYMBOL_ioapic_irq = 60, /* ioapic_irq */ - YYSYMBOL_smbios_slot_desc = 61, /* smbios_slot_desc */ - YYSYMBOL_fw_config_table = 62, /* fw_config_table */ - YYSYMBOL_fw_config_table_children = 63, /* fw_config_table_children */ - YYSYMBOL_fw_config_field_children = 64, /* fw_config_field_children */ - YYSYMBOL_fw_config_field = 65, /* fw_config_field */ - YYSYMBOL_66_4 = 66, /* $@4 */ - YYSYMBOL_67_5 = 67, /* $@5 */ - YYSYMBOL_68_6 = 68, /* $@6 */ - YYSYMBOL_fw_config_option = 69, /* fw_config_option */ - YYSYMBOL_fw_config_probe = 70 /* fw_config_probe */ + YYSYMBOL_GPIO = 41, /* GPIO */ + YYSYMBOL_FW_CONFIG_TABLE = 42, /* FW_CONFIG_TABLE */ + YYSYMBOL_FW_CONFIG_FIELD = 43, /* FW_CONFIG_FIELD */ + YYSYMBOL_FW_CONFIG_OPTION = 44, /* FW_CONFIG_OPTION */ + YYSYMBOL_FW_CONFIG_PROBE = 45, /* FW_CONFIG_PROBE */ + YYSYMBOL_YYACCEPT = 46, /* $accept */ + YYSYMBOL_devtree = 47, /* devtree */ + YYSYMBOL_chipchildren = 48, /* chipchildren */ + YYSYMBOL_devicechildren = 49, /* devicechildren */ + YYSYMBOL_chip = 50, /* chip */ + YYSYMBOL_51_1 = 51, /* @1 */ + YYSYMBOL_device = 52, /* device */ + YYSYMBOL_53_2 = 53, /* @2 */ + YYSYMBOL_54_3 = 54, /* @3 */ + YYSYMBOL_alias = 55, /* alias */ + YYSYMBOL_status = 56, /* status */ + YYSYMBOL_resource = 57, /* resource */ + YYSYMBOL_reference = 58, /* reference */ + YYSYMBOL_registers = 59, /* registers */ + YYSYMBOL_subsystemid = 60, /* subsystemid */ + YYSYMBOL_ioapic_irq = 61, /* ioapic_irq */ + YYSYMBOL_smbios_slot_desc = 62, /* smbios_slot_desc */ + YYSYMBOL_fw_config_table = 63, /* fw_config_table */ + YYSYMBOL_fw_config_table_children = 64, /* fw_config_table_children */ + YYSYMBOL_fw_config_field_children = 65, /* fw_config_field_children */ + YYSYMBOL_fw_config_field = 66, /* fw_config_field */ + YYSYMBOL_67_4 = 67, /* $@4 */ + YYSYMBOL_68_5 = 68, /* $@5 */ + YYSYMBOL_69_6 = 69, /* $@6 */ + YYSYMBOL_fw_config_option = 70, /* fw_config_option */ + YYSYMBOL_fw_config_probe = 71 /* fw_config_probe */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -577,10 +490,10 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 97 +#define YYLAST 79 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 45 +#define YYNTOKENS 46 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 26 /* YYNRULES -- Number of rules. */ @@ -588,7 +501,8 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 89 -#define YYMAXUTOK 299 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 300 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -631,19 +545,20 @@ 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, 38, 39, 40, 41, 42, 43, 44 + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int8 yyrline[] = { - 0, 24, 24, 24, 24, 26, 26, 26, 26, 26, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 30, - 30, 39, 39, 47, 47, 55, 57, 61, 61, 63, - 66, 69, 72, 75, 78, 81, 84, 87, 91, 94, - 94, 97, 97, 100, 100, 106, 106, 112, 112, 118, - 122 + 0, 25, 25, 25, 25, 27, 27, 27, 27, 27, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 31, + 31, 40, 40, 48, 48, 56, 58, 62, 62, 64, + 67, 70, 73, 76, 79, 82, 85, 88, 92, 95, + 95, 98, 98, 101, 101, 107, 107, 113, 113, 119, + 123 }; #endif @@ -665,7 +580,7 @@ static const char *const yytname[] = "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", - "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION", + "GPIO", "FW_CONFIG_TABLE", "FW_CONFIG_FIELD", "FW_CONFIG_OPTION", "FW_CONFIG_PROBE", "$accept", "devtree", "chipchildren", "devicechildren", "chip", "@1", "device", "@2", "@3", "alias", "status", "resource", "reference", "registers", "subsystemid", "ioapic_irq", @@ -690,11 +605,11 @@ static const yytype_int16 yytoknum[] = 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, 293, 294, - 295, 296, 297, 298, 299 + 295, 296, 297, 298, 299, 300 }; #endif -#define YYPACT_NINF (-12) +#define YYPACT_NINF (-15) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -708,15 +623,15 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int8 yypact[] = { - -12, 9, -12, 18, -12, -12, -12, -12, 2, -12, - -12, 25, -12, 16, 14, 10, 30, 31, -12, -12, - -12, -12, -12, 17, -12, 32, 22, 3, 44, -12, - -12, -11, 29, 20, 36, 37, -12, -7, -12, 38, - -12, -12, -12, -12, 39, 29, -12, -12, -6, -12, - 28, -12, -12, -12, -12, -12, -3, -12, 33, -12, - 41, 34, 35, 42, -12, -12, -12, -12, -12, -12, - -12, -12, 1, 45, 48, 40, 27, 49, -12, 43, - 50, 46, 47, -12, -12, 51, -12, -12, -12 + -15, 9, -15, 0, -15, -15, -15, -15, -11, -15, + -15, 2, -15, 45, -8, 13, 6, 19, -15, -15, + -15, -15, -15, 10, -15, 23, 12, 11, 36, -15, + -15, -7, 25, 39, 30, 37, -15, -6, -15, 38, + -15, -15, -15, -15, 40, 25, -15, -15, -1, -15, + 24, -15, -15, -15, -15, -15, -3, -15, 27, -15, + 41, 31, 32, 46, -15, -15, -15, -15, -15, -15, + -15, -15, 1, 47, 48, 35, 33, 49, -15, 42, + 51, 43, 44, -15, -15, 52, -15, -15, -15 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -738,9 +653,9 @@ static const yytype_int8 yydefact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { - -12, -12, -12, 13, 12, -12, 58, -12, -12, -12, - 52, -12, -12, 60, -12, -12, -12, -12, -12, 4, - -12, -12, -12, -12, -12, -12 + -15, -15, -15, 15, 17, -15, 57, -15, -15, -15, + 34, -15, -15, 62, -15, -15, -15, -15, -15, -14, + -15, -15, -15, -15, -15, -15 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -756,56 +671,52 @@ static const yytype_int8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int8 yytable[] = { - 3, 15, 16, 38, 3, 15, 16, 49, 54, 2, - 58, 59, 3, 5, 58, 78, 10, 25, 34, 3, - 15, 16, 26, 17, 60, 19, 44, 61, 60, 62, - 18, 61, 39, 62, 37, 7, 39, 39, 41, 42, - 48, 63, 14, 23, 11, 63, 29, 27, 28, 32, - 4, 33, 35, 46, 47, 50, 52, 55, 74, 77, - 79, 82, 73, 75, 76, 80, 83, 85, 88, 81, - 72, 20, 84, 22, 0, 0, 87, 86, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 53 + 3, 15, 16, 10, 3, 15, 16, 38, 49, 2, + 58, 59, 3, 54, 58, 78, 37, 7, 5, 14, + 25, 23, 48, 27, 60, 26, 34, 61, 60, 62, + 19, 61, 11, 62, 41, 42, 28, 39, 39, 29, + 32, 33, 63, 39, 35, 44, 63, 46, 3, 15, + 16, 4, 17, 55, 47, 50, 73, 52, 74, 18, + 75, 76, 79, 77, 81, 80, 83, 82, 85, 88, + 20, 84, 72, 87, 86, 22, 0, 0, 0, 53 }; static const yytype_int8 yycheck[] = { 3, 4, 5, 14, 3, 4, 5, 14, 14, 0, - 13, 14, 3, 1, 13, 14, 14, 7, 15, 3, - 4, 5, 12, 7, 27, 13, 6, 30, 27, 32, - 14, 30, 43, 32, 30, 17, 43, 43, 9, 10, - 36, 44, 17, 29, 42, 44, 29, 17, 17, 17, - 41, 29, 8, 17, 17, 17, 17, 29, 17, 17, - 15, 34, 29, 29, 29, 17, 17, 17, 17, 29, - 57, 13, 29, 13, -1, -1, 29, 31, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 45 + 13, 14, 3, 14, 13, 14, 30, 17, 1, 17, + 7, 29, 36, 17, 27, 12, 15, 30, 27, 32, + 13, 30, 43, 32, 9, 10, 17, 44, 44, 29, + 17, 29, 45, 44, 8, 6, 45, 17, 3, 4, + 5, 42, 7, 29, 17, 17, 29, 17, 17, 14, + 29, 29, 15, 17, 29, 17, 17, 34, 17, 17, + 13, 29, 57, 29, 31, 13, -1, -1, -1, 45 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int8 yystos[] = { - 0, 46, 0, 3, 41, 49, 62, 17, 63, 50, - 14, 42, 65, 47, 17, 4, 5, 7, 14, 49, - 51, 57, 58, 29, 68, 7, 12, 17, 17, 29, - 67, 64, 17, 29, 15, 8, 66, 64, 14, 43, - 69, 9, 10, 55, 6, 54, 17, 17, 64, 14, - 17, 53, 17, 55, 14, 29, 48, 52, 13, 14, - 27, 30, 32, 44, 49, 51, 56, 58, 59, 60, - 61, 70, 48, 29, 17, 29, 29, 17, 14, 15, + 0, 47, 0, 3, 42, 50, 63, 17, 64, 51, + 14, 43, 66, 48, 17, 4, 5, 7, 14, 50, + 52, 58, 59, 29, 69, 7, 12, 17, 17, 29, + 68, 65, 17, 29, 15, 8, 67, 65, 14, 44, + 70, 9, 10, 56, 6, 55, 17, 17, 65, 14, + 17, 54, 17, 56, 14, 29, 49, 53, 13, 14, + 27, 30, 32, 45, 50, 52, 57, 59, 60, 61, + 62, 71, 49, 29, 17, 29, 29, 17, 14, 15, 17, 29, 34, 17, 29, 17, 31, 29, 17 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int8 yyr1[] = { - 0, 45, 46, 46, 46, 47, 47, 47, 47, 47, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, - 49, 52, 51, 53, 51, 54, 54, 55, 55, 56, - 57, 58, 59, 59, 60, 61, 61, 61, 62, 63, - 63, 64, 64, 66, 65, 67, 65, 68, 65, 69, - 70 + 0, 46, 47, 47, 47, 48, 48, 48, 48, 48, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 51, + 50, 53, 52, 54, 52, 55, 55, 56, 56, 57, + 58, 59, 60, 60, 61, 62, 62, 62, 63, 64, + 64, 65, 65, 67, 66, 68, 66, 69, 66, 70, + 71 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1028,7 +939,7 @@ yydestruct (const char *yymsg, } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -1046,34 +957,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -1087,15 +994,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -1296,11 +1194,11 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: + case 2: /* devtree: %empty */ { cur_parent = root_parent; } break; - case 19: + case 19: /* @1: %empty */ { (yyval.chip_instance) = new_chip_instance((yyvsp[0].string)); chip_enqueue_tail(cur_chip_instance); @@ -1308,125 +1206,125 @@ yyreduce: } break; - case 20: + case 20: /* chip: CHIP STRING @1 chipchildren END */ { cur_chip_instance = chip_dequeue_tail(); } break; - case 21: + case 21: /* @2: %empty */ { (yyval.dev) = new_device_raw(cur_parent, cur_chip_instance, (yyvsp[-3].number), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].number)); cur_parent = (yyval.dev)->last_bus; } break; - case 22: + case 22: /* device: DEVICE BUS NUMBER alias status @2 devicechildren END */ { cur_parent = (yyvsp[-2].dev)->parent; } break; - case 23: + case 23: /* @3: %empty */ { (yyval.dev) = new_device_reference(cur_parent, cur_chip_instance, (yyvsp[-1].string), (yyvsp[0].number)); cur_parent = (yyval.dev)->last_bus; } break; - case 24: + case 24: /* device: DEVICE REFERENCE STRING status @3 devicechildren END */ { cur_parent = (yyvsp[-2].dev)->parent; } break; - case 25: + case 25: /* alias: %empty */ { (yyval.string) = NULL; } break; - case 26: + case 26: /* alias: ALIAS STRING */ { (yyval.string) = (yyvsp[0].string); } break; - case 29: + case 29: /* resource: RESOURCE NUMBER EQUALS NUMBER */ { add_resource(cur_parent, (yyvsp[-3].number), strtol((yyvsp[-2].string), NULL, 0), strtol((yyvsp[0].string), NULL, 0)); } break; - case 30: + case 30: /* reference: REFERENCE STRING ASSOCIATION STRING */ { add_reference(cur_chip_instance, (yyvsp[0].string), (yyvsp[-2].string)); } break; - case 31: + case 31: /* registers: REGISTER STRING EQUALS STRING */ { add_register(cur_chip_instance, (yyvsp[-2].string), (yyvsp[0].string)); } break; - case 32: + case 32: /* subsystemid: SUBSYSTEMID NUMBER NUMBER */ { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-1].string), NULL, 16), strtol((yyvsp[0].string), NULL, 16), 0); } break; - case 33: + case 33: /* subsystemid: SUBSYSTEMID NUMBER NUMBER INHERIT */ { add_pci_subsystem_ids(cur_parent, strtol((yyvsp[-2].string), NULL, 16), strtol((yyvsp[-1].string), NULL, 16), 1); } break; - case 34: + case 34: /* ioapic_irq: IOAPIC_IRQ NUMBER PCIINT NUMBER */ { add_ioapic_info(cur_parent, strtol((yyvsp[-2].string), NULL, 16), (yyvsp[-1].string), strtol((yyvsp[0].string), NULL, 16)); } break; - case 35: + case 35: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-3].string), (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string)); } break; - case 36: + case 36: /* smbios_slot_desc: SLOT_DESC STRING STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-2].string), (yyvsp[-1].string), (yyvsp[0].string), NULL); } break; - case 37: + case 37: /* smbios_slot_desc: SLOT_DESC STRING STRING */ { add_slot_desc(cur_parent, (yyvsp[-1].string), (yyvsp[0].string), NULL, NULL); } break; - case 38: + case 38: /* fw_config_table: FW_CONFIG_TABLE fw_config_table_children END */ { } break; - case 43: + case 43: /* $@4: %empty */ { cur_field = new_fw_config_field((yyvsp[-2].string), strtoul((yyvsp[-1].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0)); } break; - case 44: + case 44: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER NUMBER $@4 fw_config_field_children END */ { } break; - case 45: + case 45: /* $@5: %empty */ { cur_field = new_fw_config_field((yyvsp[-1].string), strtoul((yyvsp[0].string), NULL, 0), strtoul((yyvsp[0].string), NULL, 0)); } break; - case 46: + case 46: /* fw_config_field: FW_CONFIG_FIELD STRING NUMBER $@5 fw_config_field_children END */ { } break; - case 47: + case 47: /* $@6: %empty */ { cur_field = get_fw_config_field((yyvsp[0].string)); } break; - case 48: + case 48: /* fw_config_field: FW_CONFIG_FIELD STRING $@6 fw_config_field_children END */ { } break; - case 49: - { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoul((yyvsp[0].string), NULL, 0)); } + case 49: /* fw_config_option: FW_CONFIG_OPTION STRING NUMBER */ + { add_fw_config_option(cur_field, (yyvsp[-1].string), strtoull((yyvsp[0].string), NULL, 0)); } break; - case 50: + case 50: /* fw_config_probe: FW_CONFIG_PROBE STRING STRING */ { add_fw_config_probe(cur_parent, (yyvsp[-1].string), (yyvsp[0].string)); } break; @@ -1590,13 +1488,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { diff --git a/util/sconfig/sconfig.tab.h_shipped b/util/sconfig/sconfig.tab.h_shipped index b05831fc33..6983c3bb76 100644 --- a/util/sconfig/sconfig.tab.h_shipped +++ b/util/sconfig/sconfig.tab.h_shipped @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.3. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison interface for Yacc-like parsers in C @@ -35,8 +35,8 @@ especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ -#ifndef YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED -# define YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED +#ifndef YY_YY_HOME_C0D3_SRC_COREBOOT_GIT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED +# define YY_YY_HOME_C0D3_SRC_COREBOOT_GIT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -92,10 +92,11 @@ extern int yydebug; MMIO = 293, /* MMIO */ LPC = 294, /* LPC */ ESPI = 295, /* ESPI */ - FW_CONFIG_TABLE = 296, /* FW_CONFIG_TABLE */ - FW_CONFIG_FIELD = 297, /* FW_CONFIG_FIELD */ - FW_CONFIG_OPTION = 298, /* FW_CONFIG_OPTION */ - FW_CONFIG_PROBE = 299 /* FW_CONFIG_PROBE */ + GPIO = 296, /* GPIO */ + FW_CONFIG_TABLE = 297, /* FW_CONFIG_TABLE */ + FW_CONFIG_FIELD = 298, /* FW_CONFIG_FIELD */ + FW_CONFIG_OPTION = 299, /* FW_CONFIG_OPTION */ + FW_CONFIG_PROBE = 300 /* FW_CONFIG_PROBE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -108,7 +109,7 @@ union YYSTYPE struct device *dev; struct chip_instance *chip_instance; char *string; - int number; + uint64_t number; }; @@ -122,4 +123,4 @@ extern YYSTYPE yylval; int yyparse (void); -#endif /* !YY_YY_SRC_COREBOOT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */ +#endif /* !YY_YY_HOME_C0D3_SRC_COREBOOT_GIT_UTIL_SCONFIG_SCONFIG_TAB_H_SHIPPED_INCLUDED */ diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y index 84dfe248fd..8e0379183c 100755 --- a/util/sconfig/sconfig.y +++ b/util/sconfig/sconfig.y @@ -20,7 +20,7 @@ static struct fw_config_field *cur_field; uint64_t number; } -%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION 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 FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE +%token CHIP DEVICE REGISTER ALIAS REFERENCE ASSOCIATION 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 GPIO FW_CONFIG_TABLE FW_CONFIG_FIELD FW_CONFIG_OPTION FW_CONFIG_PROBE %% devtree: { cur_parent = root_parent; } | devtree chip | devtree fw_config_table; |