klipper/src/rp2040/Kconfig
Kevin O'Connor f6718291b7 rp2040: Add rp2350 bootrom based chipid and reboot to bootloader code
This adds the bootrom code needed to implement "reboot into
bootloader" and "chipid" capabilities.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:24:47 -05:00

166 lines
4.0 KiB
Plaintext

# Kconfig settings for RPxxxx processors
if MACH_RPXXXX
config RPXXXX_SELECT
bool
default y
select HAVE_GPIO
select HAVE_GPIO_ADC
select HAVE_GPIO_SPI
select HAVE_GPIO_I2C
select HAVE_STRICT_TIMING
select HAVE_CHIPID
select HAVE_GPIO_HARD_PWM
select HAVE_STEPPER_BOTH_EDGE
select HAVE_BOOTLOADER_REQUEST
config BOARD_DIRECTORY
string
default "rp2040"
######################################################################
# Chip selection
######################################################################
choice
prompt "Processor model"
config MACH_RP2040
bool "rp2040"
config MACH_RP2350
bool "rp2350"
endchoice
config MCU
string
default "rp2040" if MACH_RP2040
default "rp2350" if MACH_RP2350
config CLOCK_FREQ
int
default 12000000 if MACH_RP2040
default 150000000 if MACH_RP2350
config FLASH_SIZE
hex
default 0x200000
config FLASH_BOOT_ADDRESS
hex
default 0x10000100 if MACH_RP2040 # Stage2 binary starts at 0x10000000
default 0x10000000 if MACH_RP2350
config RAM_START
hex
default 0x20000000
config RAM_SIZE
hex
default 0x42000 if MACH_RP2040
default 0x82000 if MACH_RP2350
config STACK_SIZE
int
default 512
######################################################################
# Bootloader options
######################################################################
config RP2040_HAVE_STAGE2
bool
config RPXXXX_HAVE_BOOTLOADER
bool
choice
prompt "Bootloader offset"
config RPXXXX_FLASH_START_0000
bool "No bootloader"
depends on MACH_RP2350
config RPXXXX_FLASH_START_0100
bool "No bootloader"
depends on MACH_RP2040
select RP2040_HAVE_STAGE2
config RPXXXX_FLASH_START_4000
bool "16KiB bootloader"
select RPXXXX_HAVE_BOOTLOADER
endchoice
config FLASH_APPLICATION_ADDRESS
hex
default 0x10004000 if RPXXXX_FLASH_START_4000
default 0x10000100 if RPXXXX_FLASH_START_0100
default 0x10000000 if RPXXXX_FLASH_START_0000
choice
prompt "Flash chip" if LOW_LEVEL_OPTIONS && RP2040_HAVE_STAGE2
config RP2040_FLASH_W25Q080
bool "W25Q080 with CLKDIV 2"
config RP2040_FLASH_GENERIC_03
bool "GENERIC_03H with CLKDIV 4"
endchoice
config RP2040_STAGE2_FILE
string
default "boot2_generic_03h.S" if RP2040_FLASH_GENERIC_03
default "boot2_w25q080.S"
config RP2040_STAGE2_CLKDIV
int
default 4 if RP2040_FLASH_GENERIC_03
default 2
######################################################################
# Communication inteface
######################################################################
choice
prompt "Communication Interface"
config RPXXXX_USB
bool "USBSERIAL"
select USBSERIAL
config RPXXXX_SERIAL_UART0_PINS_0_1
bool "UART0 on GPIO0/GPIO1"
select SERIAL
config RPXXXX_SERIAL_UART0_PINS_12_13
bool "UART0 on GPIO12/GPIO13" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART0_PINS_16_17
bool "UART0 on GPIO16/GPIO17" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART0_PINS_28_29
bool "UART0 on GPIO28/GPIO29" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART1_PINS_4_5
bool "UART1 on GPIO4/GPIO5" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART1_PINS_8_9
bool "UART1 on GPIO8/GPIO9" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART1_PINS_20_21
bool "UART1 on GPIO20/GPIO21" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_SERIAL_UART1_PINS_24_25
bool "UART1 on GPIO24/GPIO25" if LOW_LEVEL_OPTIONS
select SERIAL
config RPXXXX_CANBUS
bool "CAN bus"
select CANSERIAL
config RPXXXX_USBCANBUS
bool "USB to CAN bus bridge"
select USBCANBUS
endchoice
config RPXXXX_CANBUS_GPIO_RX
int "CAN RX gpio number" if CANBUS
default 4
range 0 29
config RPXXXX_CANBUS_GPIO_TX
int "CAN TX gpio number" if CANBUS
default 5
range 0 29
endif