# SPDX-License-Identifier: GPL-2.0-or-later

# Maxim Integrated MAX3263X OpenOCD target configuration file

# Set the reset pin configuration
reset_config none

# Set flash parameters
set FLASH_BASE 0x0
set FLASH_SIZE 0x200000
set FLC_BASE 0x40002000
set FLASH_SECTOR 0x2000
set FLASH_CLK 96
set FLASH_OPTIONS 0x00

# Setup the reserved TAP
set RSV_TAP 1

source [find target/max32xxx_common.cfg]

# Create custom reset sequence
$_CHIPNAME.cpu configure -event reset-init {

    # Reset the peripherals
    mww 0x40000848 0xFFFFFFFF
    mww 0x4000084C 0xFFFFFFFF

    sleep 10

    mww 0x40000848 0x0
    mww 0x4000084C 0x0

    # Reset the SP
    set SP_ADDR [mrw 0x0]
    reg sp $SP_ADDR

    # Reset the PC to the Reset_Handler
    set RESET_HANDLER_ADDR  [mrw 0x4]
    reg pc $RESET_HANDLER_ADDR
}
