Skip to content

Update to latest generated headers - note SVD peripherals section is now alphabetically sorted#2905

Open
kilograham wants to merge 3 commits intodevelopfrom
hardware-header-updates
Open

Update to latest generated headers - note SVD peripherals section is now alphabetically sorted#2905
kilograham wants to merge 3 commits intodevelopfrom
hardware-header-updates

Conversation

@kilograham
Copy link
Copy Markdown
Contributor

@kilograham kilograham commented Apr 18, 2026

the ordering in the SVD is not meaningful and was random before - it will at least now be stable

I also included all the hardware_structs into kitchen_sink.c to make sure they are all good (not all are included by other libraries)

@kilograham kilograham requested review from lurch and matiasilva April 18, 2026 20:40
@kilograham kilograham added this to the 2.2.1 milestone Apr 18, 2026
Comment thread src/rp2040/hardware_regs/include/hardware/regs/dma.h
Comment thread src/rp2040/hardware_regs/include/hardware/regs/dma.h
Comment thread src/rp2040/hardware_structs/include/hardware/structs/sysinfo.h
Comment thread src/rp2350/hardware_regs/include/hardware/regs/accessctrl.h
Comment thread src/rp2350/hardware_regs/include/hardware/regs/powman.h
#define PWM_CH0_CSR_PH_ADV_MSB _u(7)
#define PWM_CH0_CSR_PH_ADV_LSB _u(7)
#define PWM_CH0_CSR_PH_ADV_ACCESS "SC"
#define PWM_CH0_CSR_PH_ADV_ACCESS "WC"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, description says "Self-clearing. Write a 1, and poll until low." - does that mean that the SC was more appropriate than WC?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh, interesting... The person in that issue is complaining that SC wasn't appropriate because the bit isn't "cleared on the next clock cycle".
But Appendix A in the RP2350 datasheet now describes SC as "Writing a 1 to a bit in an SC field will trigger an event, once the event is triggered the bit clears automatically" (it looks like this was updated in February 2025), and no longer says anything about "next clock cycle". In contrast, WC is described as "Writing a 1 to a bit in a WC field will write that bit to 0" which implies that the bit gets written to 0 immediately?

// -----------------------------------------------------------------------------
// Field : SYSINFO_CHIP_ID_MANUFACTURER
#define SYSINFO_CHIP_ID_MANUFACTURER_RESET "-"
#define SYSINFO_CHIP_ID_MANUFACTURER_RESET _u(0x493)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to see that this field now has a reset value listed 👍 But just out of curiosity, why does the SYSINFO_CHIP_ID_MANUFACTURER have a different value between RP2040 and RP2350?

Copy link
Copy Markdown
Contributor Author

@kilograham kilograham Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the bit field on RP2040 is actually wrong - it includes bit 0 - the RP2040 constant is doubly wrong though as bit 0 is actually 1 in practice here. Probably worth fixing the RP2040 version (cc @matiasilva )

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahhh, 0x926 >> 1 == 0x493. Looks like the RP2040 version is missing the SYSINFO_CHIP_ID_STOP_BIT.

// 0x00000004 [2] SU (1) If 1, and SP is also set, ADC can be accessed from a...
// 0x00000002 [1] NSP (0) If 1, ADC can be accessed from a Non-secure, Privileged context
// 0x00000001 [0] NSU (0) If 1, and NSP is also set, ADC can be accessed from a...
io_rw_32 adc;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this change mean that https://github.com/raspberrypi/pico-sdk/blob/develop/src/rp2_common/cmsis/stub/CMSIS/Device/RP2350/Include/RP2350.h#L1723 also ought to be updated from ADC0 to ADC, for consistency?
(Oh, looks like that file is auto-generated from RP2350.svd (which is itself autogenerated), so maybe this PR ought to be updating the CMSIS headers too? 🤔 )

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good point - i will update those

Comment thread src/rp2350/hardware_structs/include/hardware/structs/scb.h

uint32_t _pad1;

// (Description copied from array index 0 register M33_ID_MMFR2 applies similarly to other array indexes)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whilst this is true for e.g. the GPIO registers, it isn't actually true for the MMFR registers:
Screenshot from 2026-04-22 10-24-20

However this is such an edge-case that it's probably not worth fixing?

@@ -25,97 +25,97 @@

typedef struct {
_REG_(TIMER_TIMEHW_OFFSET) // TIMER_TIMEHW
// Write to bits 63:32 of time always write timelw before timehw
// 0xffffffff [31:0] TIMEHW (0x00000000)
// Write to bits 63:32 of time +
Copy link
Copy Markdown
Contributor

@lurch lurch Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, the + on the end of this line (and also on lines 33, 38 and 80) doesn't look right?

@lurch
Copy link
Copy Markdown
Contributor

lurch commented Apr 22, 2026

All the extra whitespace changes made it very hard to review the actual changes here; but apart from the things I've noted above it looks like this includes lots of nice little fix-ups 🙂

I also included all the hardware_structs into kitchen_sink.c

Did you forget to push those changes to this PR?

@lurch
Copy link
Copy Markdown
Contributor

lurch commented Apr 23, 2026

Looks like this fixes #2380 too 👍

@lurch
Copy link
Copy Markdown
Contributor

lurch commented Apr 23, 2026

the ordering in the SVD is not meaningful and was random before - it will at least now be stable

Nice 👍

$ git grep -A2 "<peripheral" "*.svd"
src/rp2040/hardware_regs/RP2040.svd:    <peripherals>
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>ADC</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4004c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>BUSCTRL</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40030000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>CLOCKS</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40008000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>DMA</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x50000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>I2C0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40044000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral derivedFrom="I2C0">
src/rp2040/hardware_regs/RP2040.svd-        <name>I2C1</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40048000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>IO_BANK0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40014000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>IO_QSPI</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40018000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PADS_BANK0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4001c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PADS_QSPI</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40020000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PIO0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x50200000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral derivedFrom="PIO0">
src/rp2040/hardware_regs/RP2040.svd-        <name>PIO1</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x50300000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PLL_SYS</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40028000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral derivedFrom="PLL_SYS">
src/rp2040/hardware_regs/RP2040.svd-        <name>PLL_USB</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4002c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PPB</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0xe0000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PSM</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40010000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>PWM</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40050000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>RESETS</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4000c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>ROSC</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40060000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>RTC</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4005c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>SIO</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0xd0000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>SPI0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4003c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral derivedFrom="SPI0">
src/rp2040/hardware_regs/RP2040.svd-        <name>SPI1</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40040000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>SSI</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x18000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>SYSCFG</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40004000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>SYSINFO</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>TBMAN</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x4006c000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>TIMER</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40054000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>UART0</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40034000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral derivedFrom="UART0">
src/rp2040/hardware_regs/RP2040.svd-        <name>UART1</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40038000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>USB</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x50110000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>USB_DEVICE_DPRAM</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x50100000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>VREG_AND_CHIP_RESET</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40064000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>WATCHDOG</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40058000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>XIP_CTRL</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x14000000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>XOSC</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x40024000</baseAddress>
--
src/rp2040/hardware_regs/RP2040.svd:    <peripheral>
src/rp2040/hardware_regs/RP2040.svd-        <name>VIRTUAL</name>
src/rp2040/hardware_regs/RP2040.svd-        <baseAddress>0x00000000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripherals>
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>ACCESSCTRL</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40060000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>ADC</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400a0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>BOOTRAM</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400e0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>BUSCTRL</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40068000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>CLOCKS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40010000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>CORESIGHT_TRACE</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50700000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>DMA</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50000000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>EPPB</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0xe0080000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>GLITCH_DETECTOR</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40158000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>HSTX_CTRL</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400c0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>HSTX_FIFO</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50600000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>I2C0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40090000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="I2C0">
src/rp2350/hardware_regs/RP2350.svd-        <name>I2C1</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40098000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>IO_BANK0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40028000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>IO_QSPI</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40030000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>OTP</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40120000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>OTP_DATA</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40130000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>OTP_DATA_RAW</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40134000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PADS_BANK0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40038000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PADS_QSPI</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40040000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PIO0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50200000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="PIO0">
src/rp2350/hardware_regs/RP2350.svd-        <name>PIO1</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50300000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="PIO0">
src/rp2350/hardware_regs/RP2350.svd-        <name>PIO2</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50400000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PLL_SYS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40050000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="PLL_SYS">
src/rp2350/hardware_regs/RP2350.svd-        <name>PLL_USB</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40058000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>POWMAN</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40100000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PPB</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0xe0000000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="PPB">
src/rp2350/hardware_regs/RP2350.svd-        <name>PPB_NS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0xe0020000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PSM</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40018000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>PWM</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400a8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>QMI</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400d0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>RESETS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40020000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>ROSC</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400e8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>SHA256</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400f8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>SIO</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0xd0000000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="SIO">
src/rp2350/hardware_regs/RP2350.svd-        <name>SIO_NS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0xd0020000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>SPI0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40080000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="SPI0">
src/rp2350/hardware_regs/RP2350.svd-        <name>SPI1</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40088000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>SYSCFG</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40008000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>SYSINFO</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40000000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>TBMAN</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40160000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>TICKS</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40108000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>TIMER0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400b0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="TIMER0">
src/rp2350/hardware_regs/RP2350.svd-        <name>TIMER1</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400b8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>TRNG</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400f0000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>UART0</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40070000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral derivedFrom="UART0">
src/rp2350/hardware_regs/RP2350.svd-        <name>UART1</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40078000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>USB</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50110000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>USB_DEVICE_DPRAM</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50100000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>WATCHDOG</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400d8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>XIP_AUX</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x50500000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>XIP_CTRL</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x400c8000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>XOSC</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x40048000</baseAddress>
--
src/rp2350/hardware_regs/RP2350.svd:    <peripheral>
src/rp2350/hardware_regs/RP2350.svd-        <name>VIRTUAL</name>
src/rp2350/hardware_regs/RP2350.svd-        <baseAddress>0x00000000</baseAddress>

@kilograham
Copy link
Copy Markdown
Contributor Author

kilograham commented Apr 24, 2026

All the extra whitespace changes made it very hard to review the actual changes here; but apart from the things I've noted above it looks like this includes lots of nice little fix-ups 🙂

I also included all the hardware_structs into kitchen_sink.c

Did you forget to push those changes to this PR?

apparently so; will fix

note - i recommend using a DIFF tool that supports ignoring whitespace!!

@matiasilva
Copy link
Copy Markdown
Contributor

All the extra whitespace changes made it very hard to review the actual changes here; but apart from the things I've noted above it looks like this includes lots of nice little fix-ups 🙂

The whitespace changes were fixes for the most part, so it had to be done. Unless there are any that I've missed that shouldn't be there?

@lurch
Copy link
Copy Markdown
Contributor

lurch commented Apr 24, 2026

All the extra whitespace changes made it very hard to review the actual changes here; but apart from the things I've noted above it looks like this includes lots of nice little fix-ups 🙂

The whitespace changes were fixes for the most part, so it had to be done. Unless there are any that I've missed that shouldn't be there?

Sorry for moaning - I realise that it's a necessary evil 😉

@lurch lurch linked an issue Apr 28, 2026 that may be closed by this pull request
@kilograham kilograham force-pushed the hardware-header-updates branch from 264d3a6 to fba5e0e Compare April 28, 2026 18:14
@kilograham kilograham force-pushed the hardware-header-updates branch from fba5e0e to e11df67 Compare April 28, 2026 18:49
#define PWM_CH0_CSR_PH_ADV_MSB _u(7)
#define PWM_CH0_CSR_PH_ADV_LSB _u(7)
#define PWM_CH0_CSR_PH_ADV_ACCESS "SC"
#define PWM_CH0_CSR_PH_ADV_ACCESS "WC"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still not convinced that it makes sense to change all these PWM fields from SC to WC? RP2350 datasheet says:
Screenshot from 2026-04-30 10-34-24

@lurch
Copy link
Copy Markdown
Contributor

lurch commented Apr 30, 2026

I also included all the hardware_structs into kitchen_sink.c

Did you forget to push those changes to this PR?

apparently so; will fix

Done in #2913 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

More IRQs missing from RP2350.svd

3 participants