8 "review.coreboot.org/coreboot.git/util/intelp2m/config"
9 "review.coreboot.org/coreboot.git/util/intelp2m/parser"
12 // generateOutputFile - generates include file
13 // parser : parser data structure
14 func generateOutputFile(parser
*parser
.ParserData
) (err error
) {
16 config
.OutputGenFile
.WriteString(`/* SPDX-License-Identifier: GPL-2.0-only */
23 /* Pad configuration was generated automatically using intelp2m utility */
24 static const struct pad_config gpio_table[] = {
28 config
.OutputGenFile
.WriteString(`};
30 #endif /* CFG_GPIO_H */
37 // Command line arguments
38 inputFileName
:= flag
.String("file",
40 "the path to the inteltool log file\n")
42 outputFileName
:= flag
.String("o",
44 "the path to the generated file with GPIO configuration\n")
46 ignFlag
:= flag
.Bool("ign",
48 "exclude fields that should be ignored from advanced macros\n")
50 nonCheckFlag
:= flag
.Bool("n",
52 "Generate macros without checking.\n" +
53 "\tIn this case, some fields of the configuration registers\n" +
54 "\tDW0 will be ignored.\n")
56 infoLevels
:= []*bool {
57 flag
.Bool("i", false, "Show pads function in the comments"),
58 flag
.Bool("ii", false, "Show DW0/DW1 value in the comments"),
59 flag
.Bool("iii", false, "Show ignored bit fields in the comments"),
60 flag
.Bool("iiii", false, "Show target PAD_CFG() macro in the comments"),
63 template
:= flag
.Int("t", 0, "template type number\n"+
64 "\t0 - inteltool.log (default)\n"+
66 "\t2 - your template\n\t")
68 platform
:= flag
.String("p", "snr", "set platform:\n"+
69 "\tsnr - Sunrise PCH or Skylake/Kaby Lake SoC\n"+
70 "\tlbg - Lewisburg PCH with Xeon SP\n"+
71 "\tapl - Apollo Lake SoC\n"+
72 "\tcnl - CannonLake-LP or Whiskeylake/Coffeelake/Cometlake-U SoC\n"+
73 "\tadl - AlderLake PCH\n")
75 fieldstyle
:= flag
.String("fld", "none", "set fields macros style:\n"+
76 "\tcb - use coreboot style for bit fields macros\n"+
77 "\tfsp - use fsp style\n"+
78 "\traw - do not convert, print as is\n")
82 config
.IgnoredFieldsFlagSet(*ignFlag
)
83 config
.NonCheckingFlagSet(*nonCheckFlag
)
85 for level
, flag
:= range infoLevels
{
87 config
.InfoLevelSet(level
+ 1)
88 fmt
.Printf("Info level: Use level %d!\n", level
+ 1)
93 if !config
.TemplateSet(*template
) {
94 fmt
.Printf("Error! Unknown template format of input file!\n")
98 if valid
:= config
.PlatformSet(*platform
); valid
!= 0 {
99 fmt
.Printf("Error: invalid platform -%s!\n", *platform
)
103 fmt
.Println("Log file:", *inputFileName
)
104 fmt
.Println("Output generated file:", *outputFileName
)
106 inputRegDumpFile
, err
:= os
.Open(*inputFileName
)
108 fmt
.Printf("Error: inteltool log file was not found!\n")
112 if config
.FldStyleSet(*fieldstyle
) != 0 {
113 fmt
.Printf("Error! Unknown bit fields style option -%s!\n", *fieldstyle
)
117 // create dir for output files
118 err
= os
.MkdirAll("generate", os
.ModePerm
)
120 fmt
.Printf("Error! Can not create a directory for the generated files!\n")
124 // create empty gpio.h file
125 outputGenFile
, err
:= os
.Create(*outputFileName
)
127 fmt
.Printf("Error: unable to generate GPIO config file!\n")
131 defer inputRegDumpFile
.Close()
132 defer outputGenFile
.Close()
134 config
.OutputGenFile
= outputGenFile
135 config
.InputRegDumpFile
= inputRegDumpFile
137 parser
:= parser
.ParserData
{}
141 err
= generateOutputFile(&parser
)
143 fmt
.Printf("Error! Can not create the file with GPIO configuration!\n")