Skip to content

Commit b28b570

Browse files
jonathannilsenhenrikbrixandersen
authored andcommitted
soc: nordic: uicr: fix SPIM CSN CTRLSEL values
Fix an incorrect interpretation of the chip select signal for the SPIM instances. If cs-gpios is used then the chip select pin is used as a GPIO, and should have CTRLSEL=0. Only when NRF_FUN_SPIM_CSN is used should CTRLSEL be configured to enable hardware control of the pin. Signed-off-by: Jonathan Nilsen <[email protected]>
1 parent f047a41 commit b28b570

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

soc/nordic/common/uicr/gen_periphconf_entries.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
from periphconf.builder import (
2626
Ctrlsel,
2727
FixedPPIMap,
28-
GpiosProp,
2928
Node,
3029
NrfCompChannel,
3130
NrfFun,
@@ -178,7 +177,7 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
178177
# SPIM mappings
179178
NrfPsel(fun=NrfFun.SPIM_MOSI, port=9, pin=5): Ctrlsel.SERIAL0,
180179
NrfPsel(fun=NrfFun.SPIM_MISO, port=9, pin=2): Ctrlsel.SERIAL0,
181-
GpiosProp(name="cs-gpios", port=9, pin=3): Ctrlsel.SERIAL0,
180+
NrfPsel(fun=NrfFun.SPIM_CSN, port=9, pin=3): Ctrlsel.SERIAL0,
182181
NrfPsel(fun=NrfFun.SPIM_SCK, port=9, pin=4): Ctrlsel.SERIAL0,
183182
# SPIS mappings
184183
NrfPsel(fun=NrfFun.SPIS_MISO, port=9, pin=5): Ctrlsel.SERIAL0,
@@ -202,7 +201,7 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
202201
# SPIM mappings
203202
NrfPsel(fun=NrfFun.SPIM_MOSI, port=9, pin=0): Ctrlsel.CAN_TDM_SERIAL2,
204203
NrfPsel(fun=NrfFun.SPIM_MISO, port=9, pin=2): Ctrlsel.CAN_TDM_SERIAL2,
205-
GpiosProp(name="cs-gpios", port=9, pin=3): Ctrlsel.CAN_TDM_SERIAL2,
204+
NrfPsel(fun=NrfFun.SPIM_CSN, port=9, pin=3): Ctrlsel.CAN_TDM_SERIAL2,
206205
NrfPsel(fun=NrfFun.SPIM_SCK, port=9, pin=1): Ctrlsel.CAN_TDM_SERIAL2,
207206
# SPIS mappings
208207
NrfPsel(fun=NrfFun.SPIS_MISO, port=9, pin=0): Ctrlsel.CAN_TDM_SERIAL2,
@@ -284,17 +283,17 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
284283
# SPIM P6 mappings
285284
NrfPsel(fun=NrfFun.SPIM_MOSI, port=6, pin=8): Ctrlsel.SERIAL0,
286285
NrfPsel(fun=NrfFun.SPIM_MISO, port=6, pin=7): Ctrlsel.SERIAL0,
287-
GpiosProp(name="cs-gpios", port=6, pin=5): Ctrlsel.SERIAL0,
286+
NrfPsel(fun=NrfFun.SPIM_CSN, port=6, pin=5): Ctrlsel.SERIAL0,
288287
NrfPsel(fun=NrfFun.SPIM_SCK, port=6, pin=1): Ctrlsel.SERIAL0,
289288
# SPIM P7 mappings
290289
NrfPsel(fun=NrfFun.SPIM_MOSI, port=7, pin=7): Ctrlsel.SERIAL0,
291290
NrfPsel(fun=NrfFun.SPIM_MISO, port=7, pin=6): Ctrlsel.SERIAL0,
292-
GpiosProp(name="cs-gpios", port=7, pin=5): Ctrlsel.SERIAL0,
291+
NrfPsel(fun=NrfFun.SPIM_CSN, port=7, pin=5): Ctrlsel.SERIAL0,
293292
NrfPsel(fun=NrfFun.SPIM_SCK, port=7, pin=3): Ctrlsel.SERIAL0,
294293
# SPIM P2 mappings
295294
NrfPsel(fun=NrfFun.SPIM_MOSI, port=2, pin=6): Ctrlsel.SERIAL0,
296295
NrfPsel(fun=NrfFun.SPIM_MISO, port=2, pin=5): Ctrlsel.SERIAL0,
297-
GpiosProp(name="cs-gpios", port=2, pin=7): Ctrlsel.SERIAL0,
296+
NrfPsel(fun=NrfFun.SPIM_CSN, port=2, pin=7): Ctrlsel.SERIAL0,
298297
NrfPsel(fun=NrfFun.SPIM_SCK, port=2, pin=3): Ctrlsel.SERIAL0,
299298
# UARTÈ P6 mappings
300299
NrfPsel(fun=NrfFun.UART_TX, port=6, pin=8): Ctrlsel.SERIAL0,
@@ -317,21 +316,21 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
317316
# SPIM P6 mappings
318317
NrfPsel(fun=NrfFun.SPIM_MOSI, port=6, pin=13): Ctrlsel.SERIAL0,
319318
NrfPsel(fun=NrfFun.SPIM_MISO, port=6, pin=12): Ctrlsel.SERIAL0,
320-
GpiosProp(name="cs-gpios", port=6, pin=10): Ctrlsel.SERIAL0,
319+
NrfPsel(fun=NrfFun.SPIM_CSN, port=6, pin=10): Ctrlsel.SERIAL0,
321320
NrfPsel(fun=NrfFun.SPIM_SCK, port=6, pin=2): Ctrlsel.SERIAL0,
322321
# SPIM P7 mappings
323322
NrfPsel(fun=NrfFun.SPIM_MOSI, port=7, pin=1): Ctrlsel.EXMIF_RADIO_SERIAL1,
324323
NrfPsel(fun=NrfFun.SPIS_MISO, port=7, pin=1): Ctrlsel.EXMIF_RADIO_SERIAL1,
325324
NrfPsel(fun=NrfFun.SPIM_MISO, port=7, pin=0): Ctrlsel.EXMIF_RADIO_SERIAL1,
326325
NrfPsel(fun=NrfFun.SPIS_MOSI, port=7, pin=0): Ctrlsel.EXMIF_RADIO_SERIAL1,
327-
GpiosProp(name="cs-gpios", port=7, pin=4): Ctrlsel.EXMIF_RADIO_SERIAL1,
326+
NrfPsel(fun=NrfFun.SPIM_CSN, port=7, pin=4): Ctrlsel.EXMIF_RADIO_SERIAL1,
328327
NrfPsel(fun=NrfFun.SPIS_CSN, port=7, pin=4): Ctrlsel.EXMIF_RADIO_SERIAL1,
329328
NrfPsel(fun=NrfFun.SPIM_SCK, port=7, pin=2): Ctrlsel.EXMIF_RADIO_SERIAL1,
330329
NrfPsel(fun=NrfFun.SPIS_SCK, port=7, pin=2): Ctrlsel.EXMIF_RADIO_SERIAL1,
331330
# SPIM P2 mappings
332331
NrfPsel(fun=NrfFun.SPIM_MOSI, port=2, pin=11): Ctrlsel.SERIAL0,
333332
NrfPsel(fun=NrfFun.SPIM_MISO, port=2, pin=10): Ctrlsel.SERIAL0,
334-
GpiosProp(name="cs-gpios", port=2, pin=8): Ctrlsel.SERIAL0,
333+
NrfPsel(fun=NrfFun.SPIM_CSN, port=2, pin=8): Ctrlsel.SERIAL0,
335334
NrfPsel(fun=NrfFun.SPIM_SCK, port=2, pin=2): Ctrlsel.SERIAL0,
336335
},
337336
# EXMIF
@@ -449,12 +448,12 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
449448
# SPIM120/UARTE120
450449
0x5F8E_6000: {
451450
# SPIM P2 mappings
452-
GpiosProp(name="cs-gpios", port=2, pin=5): Ctrlsel.SERIAL0,
451+
NrfPsel(fun=NrfFun.SPIM_CSN, port=2, pin=5): Ctrlsel.SERIAL0,
453452
NrfPsel(fun=NrfFun.SPIM_MISO, port=2, pin=3): Ctrlsel.SERIAL0,
454453
NrfPsel(fun=NrfFun.SPIM_MOSI, port=2, pin=4): Ctrlsel.SERIAL0,
455454
NrfPsel(fun=NrfFun.SPIM_SCK, port=2, pin=0): Ctrlsel.SERIAL0,
456455
# SPIM P6 mappings
457-
GpiosProp(name="cs-gpios", port=6, pin=5): Ctrlsel.SERIAL0,
456+
NrfPsel(fun=NrfFun.SPIM_CSN, port=6, pin=5): Ctrlsel.SERIAL0,
458457
NrfPsel(fun=NrfFun.SPIM_MISO, port=6, pin=7): Ctrlsel.SERIAL0,
459458
NrfPsel(fun=NrfFun.SPIM_MOSI, port=6, pin=8): Ctrlsel.SERIAL0,
460459
NrfPsel(fun=NrfFun.SPIM_SCK, port=6, pin=1): Ctrlsel.SERIAL0,
@@ -472,12 +471,12 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
472471
# SPIM121
473472
0x5F8E_7000: {
474473
# P2
475-
GpiosProp(name="cs-gpios", port=2, pin=6): Ctrlsel.SERIAL0,
474+
NrfPsel(fun=NrfFun.SPIM_CSN, port=2, pin=6): Ctrlsel.SERIAL0,
476475
NrfPsel(fun=NrfFun.SPIM_MISO, port=2, pin=8): Ctrlsel.SERIAL0,
477476
NrfPsel(fun=NrfFun.SPIM_MOSI, port=2, pin=9): Ctrlsel.SERIAL0,
478477
NrfPsel(fun=NrfFun.SPIM_SCK, port=2, pin=1): Ctrlsel.SERIAL0,
479478
# P6
480-
GpiosProp(name="cs-gpios", port=6, pin=10): Ctrlsel.SERIAL0,
479+
NrfPsel(fun=NrfFun.SPIM_CSN, port=6, pin=10): Ctrlsel.SERIAL0,
481480
NrfPsel(fun=NrfFun.SPIM_MISO, port=6, pin=12): Ctrlsel.SERIAL0,
482481
NrfPsel(fun=NrfFun.SPIM_MOSI, port=6, pin=13): Ctrlsel.SERIAL0,
483482
NrfPsel(fun=NrfFun.SPIM_SCK, port=6, pin=2): Ctrlsel.SERIAL0,
@@ -492,7 +491,7 @@ def lookup_tables_get(soc: Soc) -> SocLookupTables:
492491
# SPIM130/SPIS130/TWIM130/TWIS130/UARTE130
493492
0x5F9A_5000: {
494493
# SPIM mappings
495-
GpiosProp(name="cs-gpios", port=9, pin=1): Ctrlsel.SERIAL0,
494+
NrfPsel(fun=NrfFun.SPIM_CSN, port=9, pin=1): Ctrlsel.SERIAL0,
496495
NrfPsel(fun=NrfFun.SPIM_MISO, port=9, pin=2): Ctrlsel.SERIAL0,
497496
NrfPsel(fun=NrfFun.SPIM_MOSI, port=9, pin=3): Ctrlsel.SERIAL0,
498497
NrfPsel(fun=NrfFun.SPIM_SCK, port=9, pin=0): Ctrlsel.SERIAL0,

soc/nordic/common/uicr/periphconf/builder.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,7 @@ class NrfFun(int, enum.Enum):
10171017
TDM_SDIN = 75
10181018
TDM_SDOUT = 76
10191019
TDM_MCK = 77
1020+
SPIM_CSN = 78
10201021

10211022
# Value used to ignore the function field and only check (port, pin)
10221023
IGNORE = -1

0 commit comments

Comments
 (0)