Skip to content

Commit f6456c3

Browse files
committed
feat(stm32variant): add I3C support generation
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 2954e51 commit f6456c3

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

CI/update/stm32variant.py

+57-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
daclist = [] # ['PIN','name','DACSignal']
2626
i2cscl_list = [] # ['PIN','name','I2CSCLSignal', ['af']]
2727
i2csda_list = [] # ['PIN','name','I2CSDASignal', ['af']
28+
i3cscl_list = [] # ['PIN','name','I3CSCLSignal', ['af']]
29+
i3csda_list = [] # ['PIN','name','I3CSDASignal', ['af']
2830
tim_list = [] # ['PIN','name','TIMSignal', ['af']]
2931
uarttx_list = [] # ['PIN','name','UARTtx', ['af']]
3032
uartrx_list = [] # ['PIN','name','UARTrx', ['af']]
@@ -447,6 +449,15 @@ def store_i2c(pin, name, signal):
447449
i2csda_list.append([pin, name, signal])
448450

449451

452+
# Store I3C list
453+
def store_i3c(pin, name, signal):
454+
# is it SDA or SCL ?
455+
if "_SCL" in signal:
456+
i3cscl_list.append([pin, name, signal])
457+
if "_SDA" in signal:
458+
i3csda_list.append([pin, name, signal])
459+
460+
450461
# Store timers
451462
def store_tim(pin, name, signal):
452463
if "_CH" in signal:
@@ -664,6 +675,41 @@ def i2c_pinmap(lst):
664675
)
665676

666677

678+
def i3c_pinmap(lst):
679+
i3c_pins_list = []
680+
winst = []
681+
wpin = []
682+
mode = "STM_MODE_AF_OD"
683+
if lst == i3csda_list:
684+
aname = "I3C_SDA"
685+
else:
686+
aname = "I3C_SCL"
687+
for p in lst:
688+
# 2nd element is the I3C XXX signal
689+
b = p[2].split("_")[0]
690+
inst = b[: len(b) - 1] + b[len(b) - 1]
691+
winst.append(len(inst))
692+
wpin.append(len(p[0]))
693+
i3c_pins_list.append(
694+
{
695+
"pin": p[0],
696+
"inst": inst,
697+
"mode": mode,
698+
"pull": "GPIO_NOPULL",
699+
"af": p[3],
700+
}
701+
)
702+
return dict(
703+
name="I3C",
704+
hal="I3C",
705+
aname=aname,
706+
data="",
707+
wpin=max(wpin) + 1,
708+
winst=max(winst) + 1,
709+
list=i3c_pins_list,
710+
)
711+
712+
667713
def tim_pinmap():
668714
tim_pins_list = []
669715
winst = []
@@ -1056,6 +1102,7 @@ def print_peripheral():
10561102
[adc_pinmap()],
10571103
[dac_pinmap()],
10581104
(i2c_pinmap(i2csda_list), i2c_pinmap(i2cscl_list)),
1105+
(i3c_pinmap(i3csda_list), i3c_pinmap(i3cscl_list)),
10591106
[tim_pinmap()],
10601107
(
10611108
uart_pinmap(uarttx_list),
@@ -1588,6 +1635,8 @@ def sort_my_lists():
15881635
daclist.sort(key=natural_sortkey)
15891636
i2cscl_list.sort(key=natural_sortkey)
15901637
i2csda_list.sort(key=natural_sortkey)
1638+
i3cscl_list.sort(key=natural_sortkey)
1639+
i3csda_list.sort(key=natural_sortkey)
15911640
tim_list.sort(key=natural_sortkey2)
15921641
tim_list.sort(key=natural_sortkey)
15931642
uarttx_list.sort(key=natural_sortkey)
@@ -1631,6 +1680,8 @@ def clean_all_lists():
16311680
del daclist[:]
16321681
del i2cscl_list[:]
16331682
del i2csda_list[:]
1683+
del i3cscl_list[:]
1684+
del i3csda_list[:]
16341685
del tim_list[:]
16351686
del uarttx_list[:]
16361687
del uartrx_list[:]
@@ -1663,7 +1714,8 @@ def clean_all_lists():
16631714
def manage_af_and_alternate():
16641715
add_af(i2cscl_list)
16651716
add_af(i2csda_list)
1666-
1717+
add_af(i3cscl_list)
1718+
add_af(i3csda_list)
16671719
add_af(tim_list)
16681720
add_af(uarttx_list)
16691721
add_af(uarttx_list)
@@ -1698,6 +1750,8 @@ def manage_af_and_alternate():
16981750
update_alternate(daclist)
16991751
update_alternate(i2cscl_list)
17001752
update_alternate(i2csda_list)
1753+
update_alternate(i3cscl_list)
1754+
update_alternate(i3csda_list)
17011755
update_alternate(tim_list)
17021756
update_alternate(uarttx_list)
17031757
update_alternate(uartrx_list)
@@ -1815,6 +1869,8 @@ def parse_pins():
18151869
store_dac(pin, name, sig)
18161870
elif re.match("^I2C", sig) is not None: # ignore FMPI2C
18171871
store_i2c(pin, name, sig)
1872+
elif re.match("^I3C", sig) is not None:
1873+
store_i3c(pin, name, sig)
18181874
elif re.match("^TIM", sig) is not None: # ignore HRTIM
18191875
store_tim(pin, name, sig)
18201876
elif re.match("^(LPU|US|U)ART", sig) is not None:

0 commit comments

Comments
 (0)