Skip to content

Commit de1d22d

Browse files
committed
fix(stm32variant): USB SOF pin
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent aa2d508 commit de1d22d

3 files changed

Lines changed: 31 additions & 41 deletions

File tree

‎CI/update/stm32variant.py‎

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,33 +1095,27 @@ def xspi_pinmap(lst):
10951095
def usb_pinmap(lst):
10961096
usb_pins_list = []
10971097
wpin = [0]
1098-
use_hs_in_fs = False
1099-
nb_loop = 1
11001098

11011099
if lst == usb_otgfs_list:
11021100
inst = usb_inst["otg_fs"]
1101+
pin_groups = [(lst, 0)]
11031102
elif lst == usb_otghs_list:
11041103
inst = usb_inst["otg_hs"]
1105-
nb_loop = 2
1104+
sof_pins = [p for p in lst if "SOF" in p[2]]
1105+
fs_pins = [p for p in lst if "SOF" not in p[2] and "ULPI" not in p[2]]
1106+
ulpi_pins = [p for p in lst if "ULPI" in p[2]]
1107+
pin_groups = [(sof_pins, 0)]
1108+
if fs_pins:
1109+
pin_groups.append((fs_pins, 1))
1110+
if ulpi_pins:
1111+
pin_groups.append((ulpi_pins, 2 if fs_pins else 0))
11061112
else:
11071113
inst = usb_inst["usb"]
1108-
for nb in range(nb_loop):
1109-
for p in lst:
1110-
hsinfs = 0
1111-
if lst == usb_otghs_list:
1112-
hsinfs = 3
1113-
if nb == 0:
1114-
if "ULPI" in p[2]:
1115-
continue
1116-
elif not use_hs_in_fs:
1117-
hsinfs = 1
1118-
use_hs_in_fs = True
1119-
else:
1120-
if "ULPI" not in p[2]:
1121-
continue
1122-
elif use_hs_in_fs:
1123-
hsinfs = 2
1124-
use_hs_in_fs = False
1114+
pin_groups = [(lst, 0)]
1115+
1116+
for pins, group_marker in pin_groups:
1117+
for pin_index, p in enumerate(pins):
1118+
hsinfs = group_marker if pin_index == 0 else 3
11251119

11261120
# 2nd element is the USB_XXXX signal
11271121
if not p[2].startswith("USB_D") and "VBUS" not in p[2]:
@@ -1155,6 +1149,7 @@ def usb_pinmap(lst):
11551149
hal=["PCD", "HCD"],
11561150
aname=inst,
11571151
data="",
1152+
hsinfs=any(marker == 1 for _, marker in pin_groups),
11581153
wpin=max(wpin) + 1,
11591154
winst=len(inst) + 1,
11601155
list=usb_pins_list,

‎CI/update/stm32variantv2.py‎

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -894,33 +894,27 @@ def xspi_pinmap(lst):
894894
def usb_pinmap(lst):
895895
usb_pins_list = []
896896
wpin = [0]
897-
use_hs_in_fs = False
898-
nb_loop = 1
899897

900898
if lst == usb_otgfs_list:
901899
inst = usb_inst["otg_fs"]
900+
pin_groups = [(lst, 0)]
902901
elif lst == usb_otghs_list:
903902
inst = usb_inst["otg_hs"]
904-
nb_loop = 2
903+
sof_pins = [p for p in lst if "SOF" in p[2]]
904+
fs_pins = [p for p in lst if "SOF" not in p[2] and "ULPI" not in p[2]]
905+
ulpi_pins = [p for p in lst if "ULPI" in p[2]]
906+
pin_groups = [(sof_pins, 0)]
907+
if fs_pins:
908+
pin_groups.append((fs_pins, 1))
909+
if ulpi_pins:
910+
pin_groups.append((ulpi_pins, 2 if fs_pins else 0))
905911
else:
906912
inst = usb_inst["usb"]
907-
for nb in range(nb_loop):
908-
for p in lst:
909-
hsinfs = 0
910-
if lst == usb_otghs_list:
911-
hsinfs = 3
912-
if nb == 0:
913-
if "ULPI" in p[2]:
914-
continue
915-
elif not use_hs_in_fs:
916-
hsinfs = 1
917-
use_hs_in_fs = True
918-
else:
919-
if "ULPI" not in p[2]:
920-
continue
921-
elif use_hs_in_fs:
922-
hsinfs = 2
923-
use_hs_in_fs = False
913+
pin_groups = [(lst, 0)]
914+
915+
for pins, group_marker in pin_groups:
916+
for pin_index, p in enumerate(pins):
917+
hsinfs = group_marker if pin_index == 0 else 3
924918

925919
# 2nd element is the USB_XXXX signal
926920
if not p[2].startswith("USB_D") and "VBUS" not in p[2]:
@@ -955,6 +949,7 @@ def usb_pinmap(lst):
955949
hal=["PCD", "HCD"],
956950
aname=inst,
957951
data="",
952+
hsinfs=any(marker == 1 for _, marker in pin_groups),
958953
wpin=max(wpin) + 1,
959954
winst=len(inst) + 1,
960955
list=usb_pins_list,

‎CI/update/templates/PeripheralPins.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ WEAK const PinMap PinMap_{{periph.aname}}[] = {
7171
{{"{"}}{{"%s %s"|format("{},".format(pm.pin).ljust(periph.wpin), "{},".format(pm.inst).ljust(periph.winst))}} STM_PIN_DATA({{pm.mode}}, {{pm.pull}}, {{pm.af}}){{"}"}},{{" // {}".format(pm.cmt) if pm.cmt}}
7272
{% endif %}
7373
{% if loop.last %}
74-
{% if pm.hsinfs and pm.hsinfs == 3 %}
74+
{% if periph.hsinfs %}
7575
#endif /* USE_USB_HS_IN_FS */
7676
{% endif %}
7777
{{"{"}}{{"%s %s"|format("{},".format("NC").ljust(periph.wpin), "{},".format("NP").ljust(periph.winst))}} 0{{"}"}}

0 commit comments

Comments
 (0)