Skip to content

Commit e5a1a0b

Browse files
committed
[genpinmap] Manage pin remap (_R)
Some pins can be remapped to an other one. Mainly PA9/PA10 to PA11/PA12. Using _R suffix allows to know which pin to remap. Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 49d7105 commit e5a1a0b

File tree

1 file changed

+19
-64
lines changed

1 file changed

+19
-64
lines changed

src/genpinmap/genpinmap_arduino.py

Lines changed: 19 additions & 64 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+
remap_list = [] # 'PIN','name'
1617
adclist = [] # 'PIN','name','ADCSignal'
1718
daclist = [] # 'PIN','name','DACSignal'
1819
i2cscl_list = [] # 'PIN','name','I2CSCLSignal'
@@ -163,11 +164,6 @@ def get_gpio_af_numF1(pintofind, iptofind):
163164
return mygpioaf
164165

165166

166-
# Return 0 if pin/signal not already in the list
167-
def isPinAndSignalInList(pin, signal, lst):
168-
return len([item for item in lst if item[0] == pin and item[2] == signal])
169-
170-
171167
def store_pin(pin, name, dest_list):
172168
if pin in [p[0] for p in dest_list]:
173169
return
@@ -179,156 +175,101 @@ def store_pin(pin, name, dest_list):
179175

180176
# function to store ADC list
181177
def store_adc(pin, name, signal):
182-
if isPinAndSignalInList(pin, signal, adclist):
183-
return
184178
adclist.append([pin, name, signal])
185179

186180

187181
# function to store DAC list
188182
def store_dac(pin, name, signal):
189-
if isPinAndSignalInList(pin, signal, daclist):
190-
return
191183
daclist.append([pin, name, signal])
192184

193185

194186
# function to store I2C list
195187
def store_i2c(pin, name, signal):
196188
# is it SDA or SCL ?
197189
if "_SCL" in signal:
198-
if isPinAndSignalInList(pin, signal, i2cscl_list):
199-
return
200190
i2cscl_list.append([pin, name, signal])
201191
if "_SDA" in signal:
202-
if isPinAndSignalInList(pin, signal, i2csda_list):
203-
return
204192
i2csda_list.append([pin, name, signal])
205193

206194

207195
# function to store timers
208196
def store_pwm(pin, name, signal):
209197
if "_CH" in signal:
210-
if isPinAndSignalInList(pin, signal, pwm_list):
211-
return
212198
pwm_list.append([pin, name, signal])
213199

214200

215201
# function to store Uart pins
216202
def store_uart(pin, name, signal):
217203
if "_TX" in signal:
218-
if isPinAndSignalInList(pin, signal, uarttx_list):
219-
return
220204
uarttx_list.append([pin, name, signal])
221205
if "_RX" in signal:
222-
if isPinAndSignalInList(pin, signal, uartrx_list):
223-
return
224206
uartrx_list.append([pin, name, signal])
225207
if "_CTS" in signal:
226-
if isPinAndSignalInList(pin, signal, uartcts_list):
227-
return
228208
uartcts_list.append([pin, name, signal])
229209
if "_RTS" in signal:
230-
if isPinAndSignalInList(pin, signal, uartrts_list):
231-
return
232210
uartrts_list.append([pin, name, signal])
233211

234212

235213
# function to store SPI pins
236214
def store_spi(pin, name, signal):
237215
if "_MISO" in signal:
238-
if isPinAndSignalInList(pin, signal, spimiso_list):
239-
return
240216
spimiso_list.append([pin, name, signal])
241217
if "_MOSI" in signal:
242-
if isPinAndSignalInList(pin, signal, spimosi_list):
243-
return
244218
spimosi_list.append([pin, name, signal])
245219
if "_SCK" in signal:
246-
if isPinAndSignalInList(pin, signal, spisclk_list):
247-
return
248220
spisclk_list.append([pin, name, signal])
249221
if "_NSS" in signal:
250-
if isPinAndSignalInList(pin, signal, spissel_list):
251-
return
252222
spissel_list.append([pin, name, signal])
253223

254224

255225
# function to store CAN pins
256226
def store_can(pin, name, signal):
257227
if "_RX" in signal:
258-
if isPinAndSignalInList(pin, signal, canrd_list):
259-
return
260228
canrd_list.append([pin, name, signal])
261229
if "_TX" in signal:
262-
if isPinAndSignalInList(pin, signal, cantd_list):
263-
return
264230
cantd_list.append([pin, name, signal])
265231

266232

267233
# function to store ETH list
268234
def store_eth(pin, name, signal):
269-
if isPinAndSignalInList(pin, signal, eth_list):
270-
return
271235
eth_list.append([pin, name, signal])
272236

273237

274238
# function to store QSPI pins
275239
def store_qspi(pin, name, signal):
276240
if "_IO0" in signal:
277-
if isPinAndSignalInList(pin, signal, quadspidata0_list):
278-
return
279241
quadspidata0_list.append([pin, name, signal])
280242
if "_IO1" in signal:
281-
if isPinAndSignalInList(pin, signal, quadspidata1_list):
282-
return
283243
quadspidata1_list.append([pin, name, signal])
284244
if "_IO2" in signal:
285-
if isPinAndSignalInList(pin, signal, quadspidata2_list):
286-
return
287245
quadspidata2_list.append([pin, name, signal])
288246
if "_IO3" in signal:
289-
if isPinAndSignalInList(pin, signal, quadspidata3_list):
290-
return
291247
quadspidata3_list.append([pin, name, signal])
292248
if "_CLK" in signal:
293-
if isPinAndSignalInList(pin, signal, quadspisclk_list):
294-
return
295249
quadspisclk_list.append([pin, name, signal])
296250
if "_NCS" in signal:
297-
if isPinAndSignalInList(pin, signal, quadspissel_list):
298-
return
299251
quadspissel_list.append([pin, name, signal])
300252

301253

302254
# function to store SYS pins
303255
def store_sys(pin, name, signal):
304256
if "_WKUP" in signal:
305257
signal = signal.replace("PWR", "SYS")
306-
if isPinAndSignalInList(pin, signal, syswkup_list):
307-
return
308258
syswkup_list.append([pin, name, signal])
309259

310260

311261
# function to store USB pins
312262
def store_usb(pin, name, signal):
313263
if "OTG" not in signal:
314-
if isPinAndSignalInList(pin, signal, usb_list):
315-
return
316264
usb_list.append([pin, name, signal])
317265
if signal.startswith("USB_OTG_FS"):
318-
if isPinAndSignalInList(pin, signal, usb_otgfs_list):
319-
return
320266
usb_otgfs_list.append([pin, name, signal])
321267
if signal.startswith("USB_OTG_HS"):
322-
if isPinAndSignalInList(pin, signal, usb_otghs_list):
323-
return
324268
usb_otghs_list.append([pin, name, signal])
325269

326270

327271
# function to store SD pins
328272
def store_sd(pin, name, signal):
329-
# print(pin, signal, name)
330-
if isPinAndSignalInList(pin, signal, sd_list):
331-
return
332273
sd_list.append([pin, name, signal])
333274

334275

@@ -936,6 +877,7 @@ def natural_sortkey2(list_2_elem):
936877
def sort_my_lists():
937878
io_list.sort(key=natural_sortkey)
938879
alt_list.sort(key=natural_sortkey)
880+
remap_list.sort(key=natural_sortkey)
939881
adclist.sort(key=natural_sortkey)
940882
daclist.sort(key=natural_sortkey)
941883
i2cscl_list.sort(key=natural_sortkey)
@@ -969,6 +911,7 @@ def sort_my_lists():
969911
def clean_all_lists():
970912
del io_list[:]
971913
del alt_list[:]
914+
del remap_list[:]
972915
del adclist[:]
973916
del daclist[:]
974917
del i2cscl_list[:]
@@ -1013,7 +956,14 @@ def parse_pins():
1013956
pin = m.group(0)[:3] + "_" + m.group(0)[3:]
1014957
name = s.attributes["Name"].value.strip() # full name: "PF0 / OSC_IN"
1015958
if s.attributes["Type"].value in ["I/O", "MonoIO"]:
1016-
store_pin(pin, name, io_list)
959+
if (
960+
"Variant" in s.attributes
961+
and "REMAP" in s.attributes["Variant"].value
962+
):
963+
pin += "_R"
964+
store_pin(pin, name, remap_list)
965+
else:
966+
store_pin(pin, name, io_list)
1017967
else:
1018968
continue
1019969
siglist = s.getElementsByTagName("Signal")
@@ -1185,11 +1135,16 @@ def parse_pins():
11851135
print_all_lists()
11861136

11871137
print(
1188-
" * Total I/O pins found: {} ({} + {} ALT I/O pins)\n".format(
1189-
(len(io_list) + len(alt_list)), len(io_list), len(alt_list)
1138+
"* Total I/O pins found: {}".format(
1139+
len(io_list) + len(alt_list) + len(dualpad_list) + len(remap_list)
11901140
)
11911141
)
1192-
# io_list.sort(key=natural_sortkey)
1142+
print(" - {} I/O pins".format(len(io_list)))
1143+
1144+
if len(remap_list):
1145+
print(" - {} remap pins".format(len(remap_list)))
1146+
print(" - {} ALT I/O pins".format(len(alt_list)))
1147+
11931148
# for io in io_list:
11941149
# print(io[0] + ", " + io[1])
11951150

0 commit comments

Comments
 (0)