Skip to content

Narrow write non-replicate alias #2715

@magy00

Description

@magy00

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 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions