Skip to content

Commit 41afa20

Browse files
ayla-nordicsemirlubos
authored andcommitted
[nrf fromtree] hal_nordic: ironside: Add 9251 peripherals
- Add Fast peripherals, GRTC CLCK pin, VPR121, VPR130 and MIPIRFFE Ctrlsel configuration to nRF9251. - Add Trace port Ctrlsel support for nRF9251 and nRF9280. - Simplify script by removing Family and rely only on SoC number. (cherry picked from commit 0d744a0cc63b1c49408985be54d4f224673f74c3) Signed-off-by: Aymen LAOUINI <aymen.laouini@nordicsemi.no>
1 parent 542443e commit 41afa20

1 file changed

Lines changed: 86 additions & 20 deletions

File tree

modules/hal_nordic/ironside/se/scripts/gen_periphconf_entries.py

Lines changed: 86 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,28 +55,12 @@ def get_additional_node_kwargs(node: Node) -> dict[str, Any]:
5555
return additional_kwargs
5656

5757

58-
class Family(enum.Enum):
59-
"""Families of SoCs supported by this script"""
60-
61-
SERIES_NRF54HX = "nrf54h"
62-
SERIES_NRF92X = "nrf92"
63-
SERIES_UNKNOWN = "unknown"
64-
65-
@classmethod
66-
def family(cls, soc):
67-
if soc.startswith("nrf54h") and len(soc) == 8:
68-
return cls.SERIES_NRF54HX
69-
elif soc.startswith("nrf92") and len(soc) == 7:
70-
return cls.SERIES_NRF92X
71-
else:
72-
return cls.SERIES_UNKNOWN
73-
74-
7558
class Soc(enum.Enum):
7659
"""Names of SoCs supported by this script"""
7760

7861
NRF54H20 = "nrf54h20"
7962
NRF9280 = "nrf9280"
63+
NRF9251 = "nrf9251"
8064
UNKNOWN = "unknown"
8165

8266
@classmethod
@@ -85,6 +69,8 @@ def soc(cls, soc):
8569
return cls.NRF54H20
8670
elif soc.startswith("nrf9280") and len(soc) == 7:
8771
return cls.NRF9280
72+
elif soc.startswith("nrf9251") and len(soc) == 7:
73+
return cls.NRF9251
8874
else:
8975
return cls.UNKNOWN
9076

@@ -151,7 +137,7 @@ def main() -> None:
151137
args = parse_args()
152138
dt = pickle.load(args.in_edt_pickle)
153139
processor = dt_processor_id(dt)
154-
lookup_tables = lookup_tables_get(Soc.soc(args.soc), Family.family(args.soc))
140+
lookup_tables = lookup_tables_get(Soc.soc(args.soc))
155141
builder = PeriphconfBuilder(dt, lookup_tables, lock_value=args.lock)
156142

157143
# Application local peripherals
@@ -185,7 +171,7 @@ def main() -> None:
185171
args.out_periphconf_source.write(generated_source)
186172

187173

188-
def lookup_tables_get(soc: Soc, family: Family) -> SocLookupTables:
174+
def lookup_tables_get(soc: Soc) -> SocLookupTables:
189175
if soc == Soc.NRF54H20:
190176
ctrlsel_lookup = {
191177
# CAN120
@@ -485,7 +471,79 @@ def lookup_tables_get(soc: Soc, family: Family) -> SocLookupTables:
485471
NrfPsel(fun=NrfFun.TPIU_DATA3, port=7, pin=7): Ctrlsel.TND,
486472
},
487473
}
488-
elif family == Family.SERIES_NRF92X:
474+
elif soc == Soc.NRF9251:
475+
ctrlsel_lookup = {
476+
# (High Speed peripherals using Ctrlsel=3)
477+
# SPIM120/SPIS120/UART120
478+
0x5F8E_6000: {
479+
# SPIS120 P5 Mappings
480+
NrfPsel(fun=NrfFun.SPIS_SCK, port=5, pin=1): Ctrlsel.SERIAL0,
481+
NrfPsel(fun=NrfFun.SPIS_MOSI, port=5, pin=4): Ctrlsel.SERIAL0,
482+
NrfPsel(fun=NrfFun.SPIS_MISO, port=5, pin=2): Ctrlsel.SERIAL0,
483+
NrfPsel(fun=NrfFun.SPIS_CSN, port=5, pin=5): Ctrlsel.SERIAL0,
484+
# UART120 P5 Mappings
485+
NrfPsel(fun=NrfFun.UART_CTS, port=5, pin=4): Ctrlsel.SERIAL0,
486+
NrfPsel(fun=NrfFun.UART_RTS, port=5, pin=5): Ctrlsel.SERIAL0,
487+
NrfPsel(fun=NrfFun.UART_RX, port=5, pin=3): Ctrlsel.SERIAL0,
488+
NrfPsel(fun=NrfFun.UART_TX, port=5, pin=2): Ctrlsel.SERIAL0,
489+
# SPIM120 P5 Mappings
490+
NrfPsel(fun=NrfFun.SPIM_SCK, port=5, pin=1): Ctrlsel.SERIAL0,
491+
NrfPsel(fun=NrfFun.SPIM_MOSI, port=5, pin=2): Ctrlsel.SERIAL0,
492+
NrfPsel(fun=NrfFun.SPIM_MISO, port=5, pin=4): Ctrlsel.SERIAL0,
493+
NrfPsel(fun=NrfFun.SPIM_CSN, port=5, pin=5): Ctrlsel.SERIAL0,
494+
},
495+
# VPR121 (FLPR)
496+
0x5F8D_4000: {
497+
# P2
498+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=0): Ctrlsel.VPR_GRC,
499+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=1): Ctrlsel.VPR_GRC,
500+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=2): Ctrlsel.VPR_GRC,
501+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=3): Ctrlsel.VPR_GRC,
502+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=5): Ctrlsel.VPR_GRC,
503+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=6): Ctrlsel.VPR_GRC,
504+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=8): Ctrlsel.VPR_GRC,
505+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=9): Ctrlsel.VPR_GRC,
506+
# P5
507+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=0): Ctrlsel.VPR_GRC,
508+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=1): Ctrlsel.VPR_GRC,
509+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=2): Ctrlsel.VPR_GRC,
510+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=3): Ctrlsel.VPR_GRC,
511+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=4): Ctrlsel.VPR_GRC,
512+
NrfPsel(fun=NrfFun.IGNORE, port=5, pin=5): Ctrlsel.VPR_GRC,
513+
},
514+
# VPR130 (PPR)
515+
0x5F90_8000: {
516+
# P0
517+
NrfPsel(fun=NrfFun.IGNORE, port=0, pin=0): Ctrlsel.VPR_GRC,
518+
NrfPsel(fun=NrfFun.IGNORE, port=0, pin=1): Ctrlsel.VPR_GRC,
519+
# P1
520+
NrfPsel(fun=NrfFun.IGNORE, port=1, pin=6): Ctrlsel.VPR_GRC,
521+
NrfPsel(fun=NrfFun.IGNORE, port=1, pin=7): Ctrlsel.VPR_GRC,
522+
NrfPsel(fun=NrfFun.IGNORE, port=1, pin=10): Ctrlsel.VPR_GRC,
523+
NrfPsel(fun=NrfFun.IGNORE, port=1, pin=11): Ctrlsel.VPR_GRC,
524+
},
525+
# MIPIRFFE
526+
0x5F99_B000: {
527+
# P2
528+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=2): Ctrlsel.SERIAL0,
529+
NrfPsel(fun=NrfFun.IGNORE, port=2, pin=3): Ctrlsel.SERIAL0,
530+
},
531+
# GRTC CLKOUT
532+
0x5F99_C000: {
533+
# P1
534+
NrfPsel(fun=NrfFun.GRTC_CLKOUT_FAST, port=1, pin=0): Ctrlsel.CAN_TDM_SERIAL2,
535+
NrfPsel(fun=NrfFun.GRTC_CLKOUT_FAST, port=2, pin=1): Ctrlsel.CAN_TDM_SERIAL2,
536+
},
537+
# Coresight (TPIU) – TDD
538+
0xBF04_0000: {
539+
NrfPsel(fun=NrfFun.TPIU_CLOCK, port=5, pin=1): Ctrlsel.TND,
540+
NrfPsel(fun=NrfFun.TPIU_DATA0, port=5, pin=2): Ctrlsel.TND,
541+
NrfPsel(fun=NrfFun.TPIU_DATA1, port=5, pin=3): Ctrlsel.TND,
542+
NrfPsel(fun=NrfFun.TPIU_DATA2, port=5, pin=4): Ctrlsel.TND,
543+
NrfPsel(fun=NrfFun.TPIU_DATA3, port=5, pin=5): Ctrlsel.TND,
544+
},
545+
}
546+
elif soc == Soc.NRF9280:
489547
ctrlsel_lookup = {
490548
# PWM120
491549
0x5F8E_4000: {
@@ -568,6 +626,14 @@ def lookup_tables_get(soc: Soc, family: Family) -> SocLookupTables:
568626
NrfPsel(fun=NrfFun.UART_RX, port=9, pin=4): Ctrlsel.SERIAL0,
569627
NrfPsel(fun=NrfFun.UART_TX, port=9, pin=3): Ctrlsel.SERIAL0,
570628
},
629+
# Coresight (TPIU) – TDD
630+
0xBF04_0000: {
631+
NrfPsel(fun=NrfFun.TPIU_CLOCK, port=8, pin=4): Ctrlsel.TND,
632+
NrfPsel(fun=NrfFun.TPIU_DATA0, port=8, pin=0): Ctrlsel.TND,
633+
NrfPsel(fun=NrfFun.TPIU_DATA1, port=8, pin=1): Ctrlsel.TND,
634+
NrfPsel(fun=NrfFun.TPIU_DATA2, port=8, pin=2): Ctrlsel.TND,
635+
NrfPsel(fun=NrfFun.TPIU_DATA3, port=8, pin=3): Ctrlsel.TND,
636+
},
571637
}
572638
else:
573639
raise NotImplementedError(f"No CTRLSEL table exists for soc {soc}")

0 commit comments

Comments
 (0)