diff --git a/port/raspberrypi/rp2xxx/src/boards/adafruit_feather_rp2350.zig b/port/raspberrypi/rp2xxx/src/boards/adafruit_feather_rp2350.zig index fc7562e3e..d99dd06bd 100644 --- a/port/raspberrypi/rp2xxx/src/boards/adafruit_feather_rp2350.zig +++ b/port/raspberrypi/rp2xxx/src/boards/adafruit_feather_rp2350.zig @@ -1,4 +1,5 @@ pub const xosc_freq = 12_000_000; +pub const xosc_startup_delay_multiplier = 64; const microzig = @import("microzig"); const hal = microzig.hal; diff --git a/port/raspberrypi/rp2xxx/src/boards/adafruit_metro_rp2350.zig b/port/raspberrypi/rp2xxx/src/boards/adafruit_metro_rp2350.zig index 8088ea119..1a624e224 100644 --- a/port/raspberrypi/rp2xxx/src/boards/adafruit_metro_rp2350.zig +++ b/port/raspberrypi/rp2xxx/src/boards/adafruit_metro_rp2350.zig @@ -1,4 +1,5 @@ pub const xosc_freq = 12_000_000; +pub const xosc_startup_delay_multiplier = 64; pub const has_rp2350b = true; // Uses RP2350B chip with extra I/O pins diff --git a/port/raspberrypi/rp2xxx/src/hal/clocks/common.zig b/port/raspberrypi/rp2xxx/src/hal/clocks/common.zig index 00b6e3219..00ab5eb67 100644 --- a/port/raspberrypi/rp2xxx/src/hal/clocks/common.zig +++ b/port/raspberrypi/rp2xxx/src/hal/clocks/common.zig @@ -16,9 +16,13 @@ pub const xosc_freq = microzig.board.xosc_freq; pub const rosc_freq = 6_500_000; pub const xosc = struct { + const startup_delay_multiplier: comptime_int = if (@hasDecl(microzig.board, "xosc_startup_delay_multiplier")) + microzig.board.xosc_startup_delay_multiplier + else + 1; const startup_delay_ms = 1; - const startup_delay_value = xosc_freq * startup_delay_ms / 1000 / 256; + const startup_delay_value = xosc_freq * startup_delay_ms / 1000 / 256 * startup_delay_multiplier; comptime { assert(startup_delay_value < (1 << 13)); }