This is an automated email from the ASF dual-hosted git repository. archer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 806c0632236ccacde28735cfbabafa0ba9b43c45 Author: Ian Douglas Scott <i...@iandouglasscott.com> AuthorDate: Fri Jan 17 21:11:46 2025 -0800 arm/rp2040,rp2350: Allow configuring XOSC startup delay This follows the formula in the "Startup Delay" section of the datasheets, where `BOARD_XOSC_STARTUPDELAY` is the time in milliseconds, which is then multiplied by the clock fequency in kHz, divided by 256 cycles, and rounded up. This differs from `pico-sdk`, which just multiplied the value of the expression it previously used by a `PICO_XOSC_STARTUP_DELAY_MULTIPLIER`. This seems less correct, though it should be essentially the same except rounding. (`BOARD_XOSC_STARTUPDELAY_MULTIPLIER` also wouldn't fit nicely the way the `#define`s are aligned.) This sets `BOARD_XOSC_STARTUPDELAY` to `1` for all boards, so this will produce the same output and not change behavior. Signed-off-by: Ian Douglas Scott <i...@iandouglasscott.com> --- arch/arm/src/rp2040/rp2040_xosc.c | 4 +++- arch/arm/src/rp23xx/rp23xx_xosc.c | 4 +++- boards/arm/rp2040/adafruit-feather-rp2040/include/board.h | 1 + boards/arm/rp2040/adafruit-kb2040/include/board.h | 1 + boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h | 1 + boards/arm/rp2040/pimoroni-tiny2040/include/board.h | 1 + boards/arm/rp2040/raspberrypi-pico-w/include/board.h | 1 + boards/arm/rp2040/raspberrypi-pico/include/board.h | 1 + boards/arm/rp2040/seeed-xiao-rp2040/include/board.h | 1 + boards/arm/rp2040/w5500-evb-pico/include/board.h | 1 + boards/arm/rp2040/waveshare-rp2040-lcd-1.28/include/board.h | 1 + boards/arm/rp2040/waveshare-rp2040-zero/include/board.h | 1 + boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h | 1 + boards/arm/rp23xx/raspberrypi-pico-2/include/board.h | 1 + 14 files changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/rp2040/rp2040_xosc.c b/arch/arm/src/rp2040/rp2040_xosc.c index 6f8e24e531..2cabaf83ba 100644 --- a/arch/arm/src/rp2040/rp2040_xosc.c +++ b/arch/arm/src/rp2040/rp2040_xosc.c @@ -80,7 +80,9 @@ void rp2040_xosc_init(void) /* Set xosc startup delay */ - uint32_t startup_delay = ((BOARD_XOSC_FREQ / 1000) + 128) / 256; + uint32_t startup_delay = ((BOARD_XOSC_FREQ / 1000) * + BOARD_XOSC_STARTUPDELAY + 255) / 256; + ASSERT(startup_delay < 1 << 13); putreg32(startup_delay, RP2040_XOSC_STARTUP); /* Set the enable bit now that we have set freq range and startup delay */ diff --git a/arch/arm/src/rp23xx/rp23xx_xosc.c b/arch/arm/src/rp23xx/rp23xx_xosc.c index 7bd7b3a8f0..adeba6bd09 100644 --- a/arch/arm/src/rp23xx/rp23xx_xosc.c +++ b/arch/arm/src/rp23xx/rp23xx_xosc.c @@ -78,7 +78,9 @@ void rp23xx_xosc_init(void) /* Set xosc startup delay */ - uint32_t startup_delay = ((BOARD_XOSC_FREQ / 1000) + 128) / 256; + uint32_t startup_delay = ((BOARD_XOSC_FREQ / 1000) * + BOARD_XOSC_STARTUPDELAY + 255) / 256; + ASSERT(startup_delay < 1 << 13); putreg32(startup_delay, RP23XX_XOSC_STARTUP); /* Set the enable bit now that we have set freq range and startup delay */ diff --git a/boards/arm/rp2040/adafruit-feather-rp2040/include/board.h b/boards/arm/rp2040/adafruit-feather-rp2040/include/board.h index e6680e9e0f..19c7e72ce0 100644 --- a/boards/arm/rp2040/adafruit-feather-rp2040/include/board.h +++ b/boards/arm/rp2040/adafruit-feather-rp2040/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/adafruit-kb2040/include/board.h b/boards/arm/rp2040/adafruit-kb2040/include/board.h index 6d7d1279ba..965ab389c2 100644 --- a/boards/arm/rp2040/adafruit-kb2040/include/board.h +++ b/boards/arm/rp2040/adafruit-kb2040/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h b/boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h index 952b024a93..ef22c36bda 100644 --- a/boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h +++ b/boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/pimoroni-tiny2040/include/board.h b/boards/arm/rp2040/pimoroni-tiny2040/include/board.h index 115cd1fbd8..4903ec3058 100644 --- a/boards/arm/rp2040/pimoroni-tiny2040/include/board.h +++ b/boards/arm/rp2040/pimoroni-tiny2040/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/raspberrypi-pico-w/include/board.h b/boards/arm/rp2040/raspberrypi-pico-w/include/board.h index 3a24cc3eba..8209624d0e 100644 --- a/boards/arm/rp2040/raspberrypi-pico-w/include/board.h +++ b/boards/arm/rp2040/raspberrypi-pico-w/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/raspberrypi-pico/include/board.h b/boards/arm/rp2040/raspberrypi-pico/include/board.h index 68e7701384..89970505eb 100644 --- a/boards/arm/rp2040/raspberrypi-pico/include/board.h +++ b/boards/arm/rp2040/raspberrypi-pico/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/seeed-xiao-rp2040/include/board.h b/boards/arm/rp2040/seeed-xiao-rp2040/include/board.h index 4a88838746..03981d4d3e 100644 --- a/boards/arm/rp2040/seeed-xiao-rp2040/include/board.h +++ b/boards/arm/rp2040/seeed-xiao-rp2040/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/w5500-evb-pico/include/board.h b/boards/arm/rp2040/w5500-evb-pico/include/board.h index 5da8cd15ed..4f1ecc318b 100644 --- a/boards/arm/rp2040/w5500-evb-pico/include/board.h +++ b/boards/arm/rp2040/w5500-evb-pico/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/waveshare-rp2040-lcd-1.28/include/board.h b/boards/arm/rp2040/waveshare-rp2040-lcd-1.28/include/board.h index 21d038640c..ad693517a0 100644 --- a/boards/arm/rp2040/waveshare-rp2040-lcd-1.28/include/board.h +++ b/boards/arm/rp2040/waveshare-rp2040-lcd-1.28/include/board.h @@ -48,6 +48,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp2040/waveshare-rp2040-zero/include/board.h b/boards/arm/rp2040/waveshare-rp2040-zero/include/board.h index 4435c37233..ddb58675e0 100644 --- a/boards/arm/rp2040/waveshare-rp2040-zero/include/board.h +++ b/boards/arm/rp2040/waveshare-rp2040-zero/include/board.h @@ -46,6 +46,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (125 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h b/boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h index 6327185a15..687fc6f602 100644 --- a/boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h +++ b/boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h @@ -44,6 +44,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (150 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ) diff --git a/boards/arm/rp23xx/raspberrypi-pico-2/include/board.h b/boards/arm/rp23xx/raspberrypi-pico-2/include/board.h index 0b5ca2b0b3..5a5dba2d7e 100644 --- a/boards/arm/rp23xx/raspberrypi-pico-2/include/board.h +++ b/boards/arm/rp23xx/raspberrypi-pico-2/include/board.h @@ -45,6 +45,7 @@ #define MHZ 1000000 #define BOARD_XOSC_FREQ (12 * MHZ) +#define BOARD_XOSC_STARTUPDELAY 1 #define BOARD_PLL_SYS_FREQ (150 * MHZ) #define BOARD_PLL_USB_FREQ (48 * MHZ)