Narrow write non-replicate alias #2715

Open
opened 2025-11-05 21:20:08 -06:00 by magy00 · 0 comments
magy00 commented 2025-11-05 21:20:08 -06:00 (Migrated from github.com)

It would be nice to have the +0x4000 non-replication write alias offset from 2.1.5. Narrow IO register writes of the RP2350 datasheet defined somewhere. Not sure about the name, and whether hw_*_alias_untyped(addr) and hw_*_alias(p) would be necessary, but maybe something like:

diff --git src/rp2350/hardware_regs/include/hardware/regs/addressmap.h src/rp2350/hardware_regs/include/hardware/regs/addressmap.h
index 0e8df52..43d4d22 100644
--- src/rp2350/hardware_regs/include/hardware/regs/addressmap.h
+++ src/rp2350/hardware_regs/include/hardware/regs/addressmap.h
@@ -17,12 +17,16 @@
 // Register address offsets for atomic RMW aliases
 #define REG_ALIAS_RW_BITS  (_u(0x0) << _u(12))
 #define REG_ALIAS_XOR_BITS (_u(0x1) << _u(12))
 #define REG_ALIAS_SET_BITS (_u(0x2) << _u(12))
 #define REG_ALIAS_CLR_BITS (_u(0x3) << _u(12))

+// Register address offsets for narrow write replicating aliases
+#define REG_ALIAS_NARROW_REPL_BITS (_u(0x0) << _u(14))
+#define REG_ALIAS_NARROW_ZERO_BITS (_u(0x1) << _u(14))
+
 #define ROM_BASE _u(0x00000000)
 #define XIP_BASE _u(0x10000000)
 #define XIP_SRAM_BASE _u(0x13ffc000)
 #define XIP_END _u(0x14000000)
 #define XIP_NOCACHE_NOALLOC_BASE _u(0x14000000)
 #define XIP_SRAM_END _u(0x14000000)
diff --git src/rp2040/hardware_regs/include/hardware/regs/addressmap.h src/rp2040/hardware_regs/include/hardware/regs/addressmap.h
index 61da68c..d33e40d 100644
--- src/rp2040/hardware_regs/include/hardware/regs/addressmap.h
+++ src/rp2040/hardware_regs/include/hardware/regs/addressmap.h
@@ -20,6 +20,9 @@
 #define REG_ALIAS_SET_BITS (_u(0x2) << _u(12))
 #define REG_ALIAS_CLR_BITS (_u(0x3) << _u(12))

+// Register address offsets for narrow write replicating aliases
+#define REG_ALIAS_NARROW_REPL_BITS (_u(0x0) << _u(14))
+
 #define ROM_BASE _u(0x00000000)
 #define XIP_BASE _u(0x10000000)
 #define XIP_MAIN_BASE _u(0x10000000)

Maybe also update https://github.com/raspberrypi/pico-examples/blob/master/system/narrow_io_write/narrow_io_write.c with #ifdef on above.

It would be nice to have the `+0x4000` non-replication write alias offset from **2.1.5. Narrow IO register writes** of the [RP2350 datasheet](https://rpltd.co/rp2350-datasheet) defined somewhere. Not sure about the name, and whether `hw_*_alias_untyped(addr)` and `hw_*_alias(p)` would be necessary, but maybe something like: ```diff diff --git src/rp2350/hardware_regs/include/hardware/regs/addressmap.h src/rp2350/hardware_regs/include/hardware/regs/addressmap.h index 0e8df52..43d4d22 100644 --- src/rp2350/hardware_regs/include/hardware/regs/addressmap.h +++ src/rp2350/hardware_regs/include/hardware/regs/addressmap.h @@ -17,12 +17,16 @@ // Register address offsets for atomic RMW aliases #define REG_ALIAS_RW_BITS (_u(0x0) << _u(12)) #define REG_ALIAS_XOR_BITS (_u(0x1) << _u(12)) #define REG_ALIAS_SET_BITS (_u(0x2) << _u(12)) #define REG_ALIAS_CLR_BITS (_u(0x3) << _u(12)) +// Register address offsets for narrow write replicating aliases +#define REG_ALIAS_NARROW_REPL_BITS (_u(0x0) << _u(14)) +#define REG_ALIAS_NARROW_ZERO_BITS (_u(0x1) << _u(14)) + #define ROM_BASE _u(0x00000000) #define XIP_BASE _u(0x10000000) #define XIP_SRAM_BASE _u(0x13ffc000) #define XIP_END _u(0x14000000) #define XIP_NOCACHE_NOALLOC_BASE _u(0x14000000) #define XIP_SRAM_END _u(0x14000000) diff --git src/rp2040/hardware_regs/include/hardware/regs/addressmap.h src/rp2040/hardware_regs/include/hardware/regs/addressmap.h index 61da68c..d33e40d 100644 --- src/rp2040/hardware_regs/include/hardware/regs/addressmap.h +++ src/rp2040/hardware_regs/include/hardware/regs/addressmap.h @@ -20,6 +20,9 @@ #define REG_ALIAS_SET_BITS (_u(0x2) << _u(12)) #define REG_ALIAS_CLR_BITS (_u(0x3) << _u(12)) +// Register address offsets for narrow write replicating aliases +#define REG_ALIAS_NARROW_REPL_BITS (_u(0x0) << _u(14)) + #define ROM_BASE _u(0x00000000) #define XIP_BASE _u(0x10000000) #define XIP_MAIN_BASE _u(0x10000000) ``` Maybe also update https://github.com/raspberrypi/pico-examples/blob/master/system/narrow_io_write/narrow_io_write.c with `#ifdef` on above.
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-raspberrypi/pico-sdk#2715
No description provided.