@@ -30,6 +30,8 @@ def main(hal_path, output):
3030
3131 # obtain all available APIs for each series
3232 apis = dict ()
33+ usb_series = list ()
34+ usb_headers = list ()
3335 for entry in sorted (hal_path .iterdir ()):
3436 if not entry .is_dir () or not entry .name .startswith ("gd32" ):
3537 continue
@@ -51,6 +53,16 @@ def main(hal_path, output):
5153 apis [api ] = list ()
5254 apis [api ].append (entry .name )
5355
56+ usb_drivers = entry / "usb_drivers" / "include"
57+ if not usb_drivers .exists ():
58+ continue
59+
60+ usb_series .append (entry .name )
61+
62+ # All usb headers are same between gd32 series.
63+ if not usb_headers :
64+ usb_headers = [p .name for p in usb_drivers .iterdir ()]
65+
5466 if output .exists ():
5567 shutil .rmtree (output )
5668 output .mkdir (parents = True )
@@ -70,6 +82,24 @@ def main(hal_path, output):
7082 f .write (f"#include <{ series } _{ api } .h>\n " )
7183 f .write ("#endif\n " )
7284
85+ usb_header_file = output / ("gd32_usb.h" )
86+ with open (usb_header_file , "w" ) as f :
87+ f .write ("/*\n " )
88+ f .write (" * NOTE: Autogenerated file using gd32headers.py\n " )
89+ f .write (" *\n " )
90+ f .write (" * SPDX-License-Identifier: Apache-2.0\n " )
91+ f .write (" */\n \n " )
92+
93+ for series in usb_series :
94+ f .write (f"#if " if series == usb_series [0 ] else "\t " )
95+ f .write (f"defined(CONFIG_SOC_SERIES_{ series .upper ()} )" )
96+ f .write (" || \\ \n " if series != usb_series [- 1 ] else "\n " )
97+
98+ for header in usb_headers :
99+ f .write ("#include <" + header + ">\n " )
100+
101+ f .write ("#endif\n " )
102+
73103
74104if __name__ == "__main__" :
75105 parser = argparse .ArgumentParser ()
0 commit comments