diff --git a/arch/arm/src/rp2040/rp2040_xosc.c b/arch/arm/src/rp2040/rp2040_xosc.c index a2492a2dfea5d..2cabaf83ba60b 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 = (((12 * MHZ) / 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 0da0876e8b54f..adeba6bd09fd7 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 = (((12 * MHZ) / 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 e6680e9e0fe2a..d5cd38d851c39 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 64 #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 6d7d1279baf1b..d29bc4fbc9ce6 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 64 #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 952b024a93ac5..e7aeba7800a9d 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 64 #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 115cd1fbd8a29..4903ec3058596 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 3a24cc3ebac42..8209624d0e6bd 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 68e77013848c7..89970505eb00a 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 4a888387461d5..6b8a1d8b050df 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 64 #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 5da8cd15ed309..4f1ecc318b2b2 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 21d038640c896..ad693517a078d 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 4435c37233061..ddb58675e02f2 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 6327185a15f70..687fc6f602b0e 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 0b5ca2b0b3ecf..5a5dba2d7eaa6 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)