blob: 0e4e708adb49421b087f2c784fe597018d346bad [file] [log] [blame]
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +00001%{
Patrick Georgiea063cb2020-05-08 19:28:13 +02002/* sconfig, coreboot device tree compiler */
Patrick Georgi7333a112020-05-08 20:48:04 +02003/* SPDX-License-Identifier: GPL-2.0-only */
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +00004
5#include "sconfig.tab.h"
6
7int linenum = 0;
8%}
9%option nodebug
10%%
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020011[ \t]+ {}
12#.*\n {linenum++;}
13\r?\n {linenum++;}
14chip {return(CHIP);}
15device {return(DEVICE);}
Nico Huber8e1ea522020-06-03 10:20:07 -070016alias {return(ALIAS);}
Nico Huberc0fc38e2022-08-06 19:02:59 +020017ops {return(OPS);}
Nico Huber8e1ea522020-06-03 10:20:07 -070018use {return(REFERENCE);}
Duncan Lauriee335c2e2020-07-29 16:28:43 -070019ref {return(REFERENCE);}
Nico Huber8e1ea522020-06-03 10:20:07 -070020as {return(ASSOCIATION);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020021register {return(REGISTER);}
Duncan Laurie47b7b342020-05-15 15:39:08 -070022fw_config {return(FW_CONFIG_TABLE);}
23field {return(FW_CONFIG_FIELD);}
24option {return(FW_CONFIG_OPTION);}
25probe {return(FW_CONFIG_PROBE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020026on {yylval.number=1; return(BOOL);}
27off {yylval.number=0; return(BOOL);}
Ronald G. Minnich466ca2c2019-10-22 02:02:24 +000028hidden {yylval.number=3; return(STATUS);}
29mandatory {yylval.number=5; return(STATUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020030pci {yylval.number=PCI; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020031pnp {yylval.number=PNP; return(BUS);}
32i2c {yylval.number=I2C; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020033cpu_cluster {yylval.number=CPU_CLUSTER; return(BUS);}
34cpu {yylval.number=CPU; return(BUS);}
35domain {yylval.number=DOMAIN; return(BUS);}
36generic {yylval.number=GENERIC; return(BUS);}
37mmio {yylval.number=MMIO; return(BUS);}
38spi {yylval.number=SPI; return(BUS);}
39usb {yylval.number=USB; return(BUS);}
Michael Niewöhnerdbb667a2020-12-11 21:26:02 +010040gpio {yylval.number=GPIO; return(BUS);}
Mario Scheithauer67f63e72022-11-02 15:57:10 +010041mdio {yylval.number=MDIO; return(BUS);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020042irq {yylval.number=IRQ; return(RESOURCE);}
43drq {yylval.number=DRQ; return(RESOURCE);}
44io {yylval.number=IO; return(RESOURCE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020045inherit {return(INHERIT);}
46subsystemid {return(SUBSYSTEMID);}
47end {return(END);}
48smbios_slot_desc {return(SLOT_DESC);}
Angel Pons437da712021-09-03 16:51:40 +020049smbios_dev_info {return(SMBIOS_DEV_INFO);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020050= {return(EQUALS);}
Tim Wawrzynczak13e240c2021-04-28 14:03:07 -060051\| {return(PIPE);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +0200520x[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
53[0-9.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
54[0-9a-fA-F.]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(NUMBER);}
Patrick Rudolphac24d3c2019-04-12 14:42:17 +020055\"\"[^\"]+\"\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
56\"[^\"]+\" {yylval.string = malloc(yyleng-1); strncpy(yylval.string, yytext+1, yyleng-2); yylval.string[yyleng-2]='\0'; return(STRING);}
57[^ \n\t]+ {yylval.string = malloc(yyleng+1); strncpy(yylval.string, yytext, yyleng); yylval.string[yyleng]='\0'; return(STRING);}
Patrick Georgi7e8c9aa2010-04-08 11:37:43 +000058%%