/* * Copyright (c) 2024 Raspberry Pi Ltd. * * SPDX-License-Identifier: BSD-3-Clause *//* ... */#ifndef_HARDWARE_PLATFORM_DEFS_H#define_HARDWARE_PLATFORM_DEFS_H// This header is included from C and assembler - intended mostly for #defines; guard other stuff with #ifdef __ASSEMBLER__#ifndef_u#ifdef__ASSEMBLER__#define_u(x)x#else#define_u(x)x##u#endif/* ... */#endif#defineNUM_CORES_u(2)#defineNUM_DMA_CHANNELS_u(16)#defineNUM_DMA_TIMERS_u(4)#defineNUM_DMA_MPU_REGIONS_u(8)#defineNUM_DMA_IRQS_u(4)#defineNUM_IRQS_u(52)#defineNUM_USER_IRQS_u(6)#defineNUM_PIOS_u(3)#defineNUM_PIO_STATE_MACHINES_u(4)#defineNUM_PIO_IRQS_u(2)#defineNUM_PWM_SLICES_u(12)#defineNUM_PWM_IRQS_u(2)#defineNUM_SPIN_LOCKS_u(32)#defineNUM_UARTS_u(2)#defineNUM_I2CS_u(2)#defineNUM_SPIS_u(2)#defineNUM_GENERIC_TIMERS_u(2)#defineNUM_ALARMS_u(4)18 defines#ifPICO_RP2350A#defineNUM_ADC_CHANNELS_u(5)#defineADC_BASE_PIN_u(26)/* ... */#else#defineNUM_ADC_CHANNELS_u(9)#defineADC_BASE_PIN_u(40)/* ... */#endif#defineNUM_RESETS_u(28)#defineNUM_DOORBELLS_u(8)#ifPICO_RP2350A#defineNUM_BANK0_GPIOS_u(30)#else#defineNUM_BANK0_GPIOS_u(48)#endif#defineNUM_QSPI_GPIOS_u(6)#defineNUM_OTP_PAGES_u(64)#defineNUM_OTP_PAGE_ROWS_u(64)#defineNUM_OTP_ROWS(NUM_OTP_PAGES*NUM_OTP_PAGE_ROWS)#definePIO_INSTRUCTION_COUNT_u(32)#defineNUM_MPU_REGIONS_u(8)#defineNUM_SAU_REGIONS_u(8)#defineNUM_BOOT_LOCKS_u(8)#defineBOOTRAM_SIZE_u(0x400)#defineUSBCTRL_DPRAM_SIZE_u(4096)10 defines#ifndef__riscv#defineHAS_GPIO_COPROCESSOR1#defineHAS_DOUBLE_COPROCESSOR1#defineHAS_REDUNDANCY_COPROCESSOR1/* ... */#endif#defineHAS_POWMAN_TIMER1#defineHAS_RP2350_TRNG1#defineHAS_HSTX1// PICO_CONFIG: XOSC_HZ, The crystal oscillator frequency in Hz, type=int, default=12000000, advanced=true, group=hardware_base// NOTE: The system and USB clocks are generated from the frequency using two PLLs.// If you override this define, or SYS_CLK_HZ/USB_CLK_HZ below, you will *also* need to add your own adjusted PLL set-up defines to// override the defaults which live in src/rp2_common/hardware_clocks/include/hardware/clocks.h// Please see the comments there about calculating the new PLL setting values.#ifndefXOSC_HZ#ifdefXOSC_KHZ#defineXOSC_HZ((XOSC_KHZ)*_u(1000))#elifdefined(XOSC_MHZ)#defineXOSC_HZ((XOSC_MHZ)*_u(1000000))#else#defineXOSC_HZ_u(12000000)#endif/* ... */#endif// PICO_CONFIG: SYS_CLK_HZ, The system operating frequency in Hz, type=int, default=150000000, advanced=true, group=hardware_base#ifndefSYS_CLK_HZ#ifdefSYS_CLK_KHZ#defineSYS_CLK_HZ((SYS_CLK_KHZ)*_u(1000))#elifdefined(SYS_CLK_MHZ)#defineSYS_CLK_HZ((SYS_CLK_MHZ)*_u(1000000))#else#defineSYS_CLK_HZ_u(150000000)#endif/* ... */#endif// PICO_CONFIG: USB_CLK_HZ, USB clock frequency. Must be 48MHz for the USB interface to operate correctly, type=int, default=48000000, advanced=true, group=hardware_base#ifndefUSB_CLK_HZ#ifdefUSB_CLK_KHZ#defineUSB_CLK_HZ((USB_CLK_KHZ)*_u(1000))#elifdefined(USB_CLK_MHZ)#defineUSB_CLK_HZ((USB_CLK_MHZ)*_u(1000000))#else#defineUSB_CLK_HZ_u(48000000)#endif/* ... */#endif// For backwards compatibility define XOSC_KHZ if the frequency is indeed an integer number of Khz.#ifdefined(XOSC_HZ)&&!defined(XOSC_KHZ)&&(XOSC_HZ%1000==0)#defineXOSC_KHZ(XOSC_HZ/1000)#endif// For backwards compatibility define XOSC_MHZ if the frequency is indeed an integer number of Mhz.#ifdefined(XOSC_KHZ)&&!defined(XOSC_MHZ)&&(XOSC_KHZ%1000==0)#defineXOSC_MHZ(XOSC_KHZ/1000)#endif// For backwards compatibility define SYS_CLK_KHZ if the frequency is indeed an integer number of Khz.#ifdefined(SYS_CLK_HZ)&&!defined(SYS_CLK_KHZ)&&(SYS_CLK_HZ%1000==0)#defineSYS_CLK_KHZ(SYS_CLK_HZ/1000)#endif// For backwards compatibility define SYS_CLK_MHZ if the frequency is indeed an integer number of Mhz.#ifdefined(SYS_CLK_KHZ)&&!defined(SYS_CLK_MHZ)&&(SYS_CLK_KHZ%1000==0)#defineSYS_CLK_MHZ(SYS_CLK_KHZ/1000)#endif// For backwards compatibility define USB_CLK_KHZ if the frequency is indeed an integer number of Khz.#ifdefined(USB_CLK_HZ)&&!defined(USB_CLK_KHZ)&&(USB_CLK_HZ%1000==0)#defineUSB_CLK_KHZ(USB_CLK_HZ/1000)#endif// For backwards compatibility define USB_CLK_MHZ if the frequency is indeed an integer number of Mhz.#ifdefined(USB_CLK_KHZ)&&!defined(USB_CLK_MHZ)&&(USB_CLK_KHZ%1000==0)#defineUSB_CLK_MHZ(USB_CLK_KHZ/1000)#endif#defineACCESSCTRL_PASSWORD_BITS_u(0xacce0000)#definePOWMAN_PASSWORD_BITS_u(0x5afe0000)#ifdef__riscv// Note the soft-table dispatch code is between the hard and soft vector// tables, as it's inlined into the last slot of the hard table:#ifdefined(__riscv_c)||defined(__riscv_zca)// RISC-V with compressed instructions: NOTE that this is dependent on the size of the code in crt0_riscv.S#defineVTABLE_FIRST_IRQ0x34/* ... */#else// RISC-V without compressed instructions:#defineVTABLE_FIRST_IRQ0x48/* ... */#endif/* ... */#else// Armv8-M:#defineVTABLE_FIRST_IRQ16/* ... */#endif#defineFIRST_USER_IRQ(NUM_IRQS-NUM_USER_IRQS)/* ... */#endif
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.