Skip to content

Commit

Permalink
arm/rp2040,rp2350: Allow configuring XOSC startup delay
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
ids1024 authored and anchao committed Jan 18, 2025
1 parent 4401036 commit 806c063
Show file tree
Hide file tree
Showing 14 changed files with 18 additions and 2 deletions.
4 changes: 3 additions & 1 deletion arch/arm/src/rp2040/rp2040_xosc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
4 changes: 3 additions & 1 deletion arch/arm/src/rp23xx/rp23xx_xosc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/adafruit-feather-rp2040/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/adafruit-kb2040/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/adafruit-qt-py-rp2040/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/pimoroni-tiny2040/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/raspberrypi-pico-w/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/raspberrypi-pico/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/seeed-xiao-rp2040/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/w5500-evb-pico/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp2040/waveshare-rp2040-zero/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp23xx/pimoroni-pico-2-plus/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions boards/arm/rp23xx/raspberrypi-pico-2/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down

0 comments on commit 806c063

Please sign in to comment.