@@ -1478,6 +1478,25 @@ def i2c_pins_variant():
14781478 return dict (sda = sda_pin , scl = scl_pin )
14791479
14801480
1481+ def i3c_pins_variant ():
1482+ sda_pin = scl_pin = "PNUM_NOT_DEFINED"
1483+ # Iterate to find match instance if any
1484+ for sda in i3csda_list :
1485+ sda_inst = sda [2 ].split ("_" , 1 )[0 ]
1486+ for scl in i3cscl_list :
1487+ scl_inst = scl [2 ].split ("_" , 1 )[0 ]
1488+ if sda_inst == scl_inst :
1489+ sda_pin = sda [0 ].replace ("_" , "" , 1 )
1490+ scl_pin = scl [0 ].replace ("_" , "" , 1 )
1491+ break
1492+ else :
1493+ continue
1494+ break
1495+ else :
1496+ print ("No I3C found!" )
1497+ return dict (sda = sda_pin , scl = scl_pin )
1498+
1499+
14811500def serial_pins_variant ():
14821501 # Manage (LP)U(S)ART pins
14831502 if uarttx_list :
@@ -1591,6 +1610,12 @@ def print_variant(generic_list, alt_syswkup_list):
15911610 # I2C definition
15921611 i2c_pins = i2c_pins_variant ()
15931612
1613+ # I3C definition if any
1614+ if i3csda_list and i3cscl_list :
1615+ i3c_pins = i3c_pins_variant ()
1616+ else :
1617+ i3c_pins = None
1618+
15941619 # Serial definition
15951620 serial = serial_pins_variant ()
15961621
@@ -1660,6 +1685,8 @@ def print_variant(generic_list, alt_syswkup_list):
16601685 hal_modules_list .append ("DAC" )
16611686 if eth_list :
16621687 hal_modules_list .append ("ETH" )
1688+ if i3csda_list and i3cscl_list :
1689+ hal_modules_list .append ("I3C" )
16631690 if xspidata0_list :
16641691 if "OCTOSPI" in xspidata0_list [0 ][2 ]:
16651692 hal_modules_list .append ("OSPI" )
@@ -1681,6 +1708,7 @@ def print_variant(generic_list, alt_syswkup_list):
16811708 num_analog_inputs = len (analog_pins_list ),
16821709 spi_pins = spi_pins ,
16831710 i2c_pins = i2c_pins ,
1711+ i3c_pins = i3c_pins ,
16841712 timer = timer ,
16851713 serial = serial ,
16861714 hal_modules_list = hal_modules_list ,
0 commit comments