Skip to content

Commit ae01774

Browse files
committed
[genpinmap] Manage Dual Pad pins (_C/_ALTC)
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 6d95b4c commit ae01774

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

src/genpinmap/genpinmap_arduino.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
mcu_list = [] # 'name'
1414
io_list = [] # 'PIN','name'
1515
alt_list = [] # 'PIN','name'
16+
dualpad_list = [] # 'PIN','name'
1617
adclist = [] # 'PIN','name','ADCSignal'
1718
daclist = [] # 'PIN','name','DACSignal'
1819
i2cscl_list = [] # 'PIN','name','I2CSCLSignal'
@@ -391,6 +392,7 @@ def print_all_lists():
391392
if print_list_header("SD", "SD", "SD", sd_list):
392393
print_sd()
393394
# Print specific PinNames in header file
395+
print_dualpad_h()
394396
print_alt_h()
395397
print_syswkup_h()
396398
print_usb_h()
@@ -460,7 +462,7 @@ def print_adc():
460462
else:
461463
prev_p = p[0]
462464
alt_index = 0
463-
s1 = "%-15s" % (" {" + p[0] + ",")
465+
s1 = "%-16s" % (" {" + p[0] + ",")
464466
a = p[2].split("_")
465467
inst = a[0].replace("ADC", "")
466468
if len(inst) == 0:
@@ -522,7 +524,7 @@ def print_i2c(lst):
522524
else:
523525
prev_p = p[0]
524526
alt_index = 0
525-
s1 = "%-15s" % (" {" + p[0] + ",")
527+
s1 = "%-16s" % (" {" + p[0] + ",")
526528
# 2nd element is the I2C XXX signal
527529
b = p[2].split("_")[0]
528530
s1 += (
@@ -554,7 +556,7 @@ def print_pwm():
554556
else:
555557
prev_p = p[0]
556558
alt_index = 0
557-
s1 = "%-15s" % (" {" + p[0] + ",")
559+
s1 = "%-16s" % (" {" + p[0] + ",")
558560
# 2nd element is the PWM signal
559561
a = p[2].split("_")
560562
inst = a[0]
@@ -592,7 +594,7 @@ def print_uart(lst):
592594
else:
593595
prev_p = p[0]
594596
alt_index = 0
595-
s1 = "%-15s" % (" {" + p[0] + ",")
597+
s1 = "%-16s" % (" {" + p[0] + ",")
596598
# 2nd element is the UART_XX signal
597599
b = p[2].split("_")[0]
598600
s1 += "%-9s" % (b[: len(b) - 1] + b[len(b) - 1 :] + ",")
@@ -798,6 +800,15 @@ def print_usb(lst):
798800
)
799801

800802

803+
def print_dualpad_h():
804+
if len(dualpad_list) != 0:
805+
out_h_file.write("/* Dual pad pin name */\n")
806+
for p in dualpad_list:
807+
s1 = " %-12s = %-5s | %s,\n" % (p[0], p[0].split("_C")[0], "ALTC",)
808+
out_h_file.write(s1)
809+
out_h_file.write("\n")
810+
811+
801812
def print_alt_h():
802813
if len(alt_list) == 0:
803814
out_h_file.write("/* No alternate */\n")
@@ -876,6 +887,7 @@ def natural_sortkey2(list_2_elem):
876887
def sort_my_lists():
877888
io_list.sort(key=natural_sortkey)
878889
alt_list.sort(key=natural_sortkey)
890+
dualpad_list.sort(key=natural_sortkey)
879891
adclist.sort(key=natural_sortkey)
880892
daclist.sort(key=natural_sortkey)
881893
i2cscl_list.sort(key=natural_sortkey)
@@ -909,6 +921,7 @@ def sort_my_lists():
909921
def clean_all_lists():
910922
del io_list[:]
911923
del alt_list[:]
924+
del dualpad_list[:]
912925
del adclist[:]
913926
del daclist[:]
914927
del i2cscl_list[:]
@@ -940,7 +953,7 @@ def clean_all_lists():
940953

941954
def parse_pins():
942955
print(" * Getting pins per Ips...")
943-
pinregex = r"^(P[A-Z][0-9][0-5]?)|^(ANA[0-9])"
956+
pinregex = r"^(P[A-Z][0-9][0-5]?[_]?[C]?)|^(ANA[0-9])"
944957
itemlist = xml_mcu.getElementsByTagName("Pin")
945958
for s in itemlist:
946959
m = re.match(pinregex, s.attributes["Name"].value)
@@ -952,10 +965,14 @@ def parse_pins():
952965
# pin formatted ANA_<number>: ANA_1
953966
pin = m.group(0)[:3] + "_" + m.group(0)[3:]
954967
name = s.attributes["Name"].value.strip() # full name: "PF0 / OSC_IN"
968+
955969
if "Variant" in s.attributes and "REMAP" in s.attributes["Variant"].value:
956970
pin += "_ALTR"
957971
if s.attributes["Type"].value in ["I/O", "MonoIO"]:
958-
store_pin(pin, name, io_list)
972+
if pin.endswith("_C"):
973+
store_pin(pin, name, dualpad_list)
974+
else:
975+
store_pin(pin, name, io_list)
959976
else:
960977
continue
961978
siglist = s.getElementsByTagName("Signal")
@@ -1127,10 +1144,15 @@ def parse_pins():
11271144
print_all_lists()
11281145

11291146
print(
1130-
" * Total I/O pins found: {} ({} + {} ALT I/O pins)\n".format(
1131-
(len(io_list) + len(alt_list)), len(io_list), len(alt_list)
1147+
"* Total I/O pins found: {}".format(
1148+
len(io_list) + len(alt_list) + len(dualpad_list)
11321149
)
11331150
)
1151+
print(" - {} I/O pins".format(len(io_list)))
1152+
if len(dualpad_list):
1153+
print(" - {} dual pad".format(len(dualpad_list)))
1154+
print(" - {} ALT I/O pins".format(len(alt_list)))
1155+
11341156
# io_list.sort(key=natural_sortkey)
11351157
# for io in io_list:
11361158
# print(io[0] + ", " + io[1])

0 commit comments

Comments
 (0)