nuttx/Documentation/platforms
Marco Casaroli 7fc26fd50c
Some checks are pending
Build Documentation / build-html (push) Waiting to run
MemBrowse Memory Report / changes-filter (push) Waiting to run
MemBrowse Memory Report / load-targets (push) Waiting to run
MemBrowse Memory Report / identical (push) Blocked by required conditions
MemBrowse Memory Report / analyze (push) Blocked by required conditions
rp23xx: Add an OTP driver on the efuse interface.
The rp2350 holds 4096 rows of 24 bit one-time-programmable memory, which
the port did not expose at all.  This adds a driver on the NuttX efuse
interface, registered by the common board bringup as /dev/efuse.

The driver uses the ECC interpretation of a row, in which 16 bits carry
data and the remaining 8 carry a Hamming code, so the OTP appears as a
flat space of 4096 * 16 bits for the efuse field descriptors to index: a
descriptor at bit offset N refers to bit N % 16 of row N / 16.  That
matches the row numbers already listed in hardware/rp23xx_otp_data.h.

Reads come from the chip's ECC-translated window and have no side
effects.  Rows are locked in pages of 64; a page locked against reads
would raise a bus fault, so the lock is checked first and reported as an
error instead.

Programming needs the separate RP23XX_OTP_WRITE option, which defaults to
off; without it a write returns EPERM and no programming code is built at
all.  When enabled, a row is programmed as a whole through the bootrom,
since the ECC bits cover the whole row.  For the same reason a row that
already holds data cannot be modified, and such a write is rejected
rather than left to corrupt the row's ECC.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-07-27 10:33:13 +08:00
..
arm rp23xx: Add an OTP driver on the efuse interface. 2026-07-27 10:33:13 +08:00
arm64 docs/raspberrypi-4b: Document baromonitor configuration 2026-07-20 21:00:46 -03:00
avr arch/avr/src/avrdx/avrdx_delay: add custom up_udelay function 2026-06-12 09:55:11 -04:00
ceva
hc docs/m9s12/demo9s12ne64: Migrate README.txt to RST 2026-02-12 10:43:53 +01:00
mips arch/mips/jz4780: Add USB host and display controller drivers 2026-07-24 12:17:35 +08:00
misco misco/lm32/boards/misoc: Migrate README.txt to RST 2025-05-08 03:04:04 +02:00
or1k docs/or1k: Migrate README.txt to RST format 2026-02-06 08:54:28 -03:00
renesas Documentation: PBKDF2 login docs, board Kconfig, and CI password 2026-07-21 20:19:14 +08:00
risc-v risc-v/gd32vw55x: fix ADC reopen and add gd32vw553k-start adc example 2026-07-26 13:24:12 +02:00
sim arch/sim: Add PTY mode for simulated UART 2026-07-25 15:03:56 +08:00
sparc
tricore arch/tricore: support tc4evb board. 2026-03-10 10:38:19 +01:00
x86 doc/qemu-i486: Add documentation about qemu-i486:vga_fb 2026-04-30 11:56:49 +08:00
x86_64 Documentation: add notes about TAP configuration for qemu 2025-12-18 11:39:54 -03:00
xtensa boards/stm32h7/linum-stm32h753bi: enable USB FS host, add lvglterm_kbda 2026-07-08 14:08:16 -04:00
z16
z80 style: Fix "the the" typo across the codebase. 2026-03-23 11:07:49 +01:00
index.rst docs: Fix duplicate toctree references causing build warnings 2026-06-03 15:02:22 +08:00