mirror of
https://github.com/andreili/katapult.git
synced 2025-08-23 19:34:06 +02:00
Synchronize with the latest Klipper code. This pulls in the latest lib/ files (needed to use the pico-sdk v2.0.0 version). It updates to latest can2040 code (needed for pico-sdk v2.0.0 support). It implements USB double buffering (as is now done in Klipper). It adds in support for additional UART pins (as is now done in Klipper). It adds support for rp2350 chips. This replaces the execute in ram code previously implemented in Katapult with the execute in ram code that is now standard in Klipper. The CONFIG_RP2040_ADD_BOOT_SIGNATURE kconfig symbol was removed and the build now always produces a katapult.withclear.uf2 file. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
191 lines
9.0 KiB
C
191 lines
9.0 KiB
C
// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT
|
|
|
|
/**
|
|
* Copyright (c) 2024 Raspberry Pi Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
// =============================================================================
|
|
// Register block : XIP
|
|
// Version : 1
|
|
// Bus type : ahb
|
|
// Description : QSPI flash execute-in-place block
|
|
// =============================================================================
|
|
#ifndef _HARDWARE_REGS_XIP_H
|
|
#define _HARDWARE_REGS_XIP_H
|
|
// =============================================================================
|
|
// Register : XIP_CTRL
|
|
// Description : Cache control
|
|
#define XIP_CTRL_OFFSET _u(0x00000000)
|
|
#define XIP_CTRL_BITS _u(0x0000000b)
|
|
#define XIP_CTRL_RESET _u(0x00000003)
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_CTRL_POWER_DOWN
|
|
// Description : When 1, the cache memories are powered down. They retain state,
|
|
// but can not be accessed. This reduces static power dissipation.
|
|
// Writing 1 to this bit forces CTRL_EN to 0, i.e. the cache
|
|
// cannot
|
|
// be enabled when powered down.
|
|
// Cache-as-SRAM accesses will produce a bus error response when
|
|
// the cache is powered down.
|
|
#define XIP_CTRL_POWER_DOWN_RESET _u(0x0)
|
|
#define XIP_CTRL_POWER_DOWN_BITS _u(0x00000008)
|
|
#define XIP_CTRL_POWER_DOWN_MSB _u(3)
|
|
#define XIP_CTRL_POWER_DOWN_LSB _u(3)
|
|
#define XIP_CTRL_POWER_DOWN_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_CTRL_ERR_BADWRITE
|
|
// Description : When 1, writes to any alias other than 0x0 (caching,
|
|
// allocating)
|
|
// will produce a bus fault. When 0, these writes are silently
|
|
// ignored.
|
|
// In either case, writes to the 0x0 alias will deallocate on tag
|
|
// match,
|
|
// as usual.
|
|
#define XIP_CTRL_ERR_BADWRITE_RESET _u(0x1)
|
|
#define XIP_CTRL_ERR_BADWRITE_BITS _u(0x00000002)
|
|
#define XIP_CTRL_ERR_BADWRITE_MSB _u(1)
|
|
#define XIP_CTRL_ERR_BADWRITE_LSB _u(1)
|
|
#define XIP_CTRL_ERR_BADWRITE_ACCESS "RW"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_CTRL_EN
|
|
// Description : When 1, enable the cache. When the cache is disabled, all XIP
|
|
// accesses
|
|
// will go straight to the flash, without querying the cache. When
|
|
// enabled,
|
|
// cacheable XIP accesses will query the cache, and the flash will
|
|
// not be accessed if the tag matches and the valid bit is set.
|
|
//
|
|
// If the cache is enabled, cache-as-SRAM accesses have no effect
|
|
// on the
|
|
// cache data RAM, and will produce a bus error response.
|
|
#define XIP_CTRL_EN_RESET _u(0x1)
|
|
#define XIP_CTRL_EN_BITS _u(0x00000001)
|
|
#define XIP_CTRL_EN_MSB _u(0)
|
|
#define XIP_CTRL_EN_LSB _u(0)
|
|
#define XIP_CTRL_EN_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : XIP_FLUSH
|
|
// Description : Cache Flush control
|
|
// Write 1 to flush the cache. This clears the tag memory, but
|
|
// the data memory retains its contents. (This means cache-as-SRAM
|
|
// contents is not affected by flush or reset.)
|
|
// Reading will hold the bus (stall the processor) until the flush
|
|
// completes. Alternatively STAT can be polled until completion.
|
|
#define XIP_FLUSH_OFFSET _u(0x00000004)
|
|
#define XIP_FLUSH_BITS _u(0x00000001)
|
|
#define XIP_FLUSH_RESET _u(0x00000000)
|
|
#define XIP_FLUSH_MSB _u(0)
|
|
#define XIP_FLUSH_LSB _u(0)
|
|
#define XIP_FLUSH_ACCESS "SC"
|
|
// =============================================================================
|
|
// Register : XIP_STAT
|
|
// Description : Cache Status
|
|
#define XIP_STAT_OFFSET _u(0x00000008)
|
|
#define XIP_STAT_BITS _u(0x00000007)
|
|
#define XIP_STAT_RESET _u(0x00000002)
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_STAT_FIFO_FULL
|
|
// Description : When 1, indicates the XIP streaming FIFO is completely full.
|
|
// The streaming FIFO is 2 entries deep, so the full and empty
|
|
// flag allow its level to be ascertained.
|
|
#define XIP_STAT_FIFO_FULL_RESET _u(0x0)
|
|
#define XIP_STAT_FIFO_FULL_BITS _u(0x00000004)
|
|
#define XIP_STAT_FIFO_FULL_MSB _u(2)
|
|
#define XIP_STAT_FIFO_FULL_LSB _u(2)
|
|
#define XIP_STAT_FIFO_FULL_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_STAT_FIFO_EMPTY
|
|
// Description : When 1, indicates the XIP streaming FIFO is completely empty.
|
|
#define XIP_STAT_FIFO_EMPTY_RESET _u(0x1)
|
|
#define XIP_STAT_FIFO_EMPTY_BITS _u(0x00000002)
|
|
#define XIP_STAT_FIFO_EMPTY_MSB _u(1)
|
|
#define XIP_STAT_FIFO_EMPTY_LSB _u(1)
|
|
#define XIP_STAT_FIFO_EMPTY_ACCESS "RO"
|
|
// -----------------------------------------------------------------------------
|
|
// Field : XIP_STAT_FLUSH_READY
|
|
// Description : Reads as 0 while a cache flush is in progress, and 1 otherwise.
|
|
// The cache is flushed whenever the XIP block is reset, and also
|
|
// when requested via the FLUSH register.
|
|
#define XIP_STAT_FLUSH_READY_RESET _u(0x0)
|
|
#define XIP_STAT_FLUSH_READY_BITS _u(0x00000001)
|
|
#define XIP_STAT_FLUSH_READY_MSB _u(0)
|
|
#define XIP_STAT_FLUSH_READY_LSB _u(0)
|
|
#define XIP_STAT_FLUSH_READY_ACCESS "RO"
|
|
// =============================================================================
|
|
// Register : XIP_CTR_HIT
|
|
// Description : Cache Hit counter
|
|
// A 32 bit saturating counter that increments upon each cache
|
|
// hit,
|
|
// i.e. when an XIP access is serviced directly from cached data.
|
|
// Write any value to clear.
|
|
#define XIP_CTR_HIT_OFFSET _u(0x0000000c)
|
|
#define XIP_CTR_HIT_BITS _u(0xffffffff)
|
|
#define XIP_CTR_HIT_RESET _u(0x00000000)
|
|
#define XIP_CTR_HIT_MSB _u(31)
|
|
#define XIP_CTR_HIT_LSB _u(0)
|
|
#define XIP_CTR_HIT_ACCESS "WC"
|
|
// =============================================================================
|
|
// Register : XIP_CTR_ACC
|
|
// Description : Cache Access counter
|
|
// A 32 bit saturating counter that increments upon each XIP
|
|
// access,
|
|
// whether the cache is hit or not. This includes noncacheable
|
|
// accesses.
|
|
// Write any value to clear.
|
|
#define XIP_CTR_ACC_OFFSET _u(0x00000010)
|
|
#define XIP_CTR_ACC_BITS _u(0xffffffff)
|
|
#define XIP_CTR_ACC_RESET _u(0x00000000)
|
|
#define XIP_CTR_ACC_MSB _u(31)
|
|
#define XIP_CTR_ACC_LSB _u(0)
|
|
#define XIP_CTR_ACC_ACCESS "WC"
|
|
// =============================================================================
|
|
// Register : XIP_STREAM_ADDR
|
|
// Description : FIFO stream address
|
|
// The address of the next word to be streamed from flash to the
|
|
// streaming FIFO.
|
|
// Increments automatically after each flash access.
|
|
// Write the initial access address here before starting a
|
|
// streaming read.
|
|
#define XIP_STREAM_ADDR_OFFSET _u(0x00000014)
|
|
#define XIP_STREAM_ADDR_BITS _u(0xfffffffc)
|
|
#define XIP_STREAM_ADDR_RESET _u(0x00000000)
|
|
#define XIP_STREAM_ADDR_MSB _u(31)
|
|
#define XIP_STREAM_ADDR_LSB _u(2)
|
|
#define XIP_STREAM_ADDR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : XIP_STREAM_CTR
|
|
// Description : FIFO stream control
|
|
// Write a nonzero value to start a streaming read. This will then
|
|
// progress in the background, using flash idle cycles to transfer
|
|
// a linear data block from flash to the streaming FIFO.
|
|
// Decrements automatically (1 at a time) as the stream
|
|
// progresses, and halts on reaching 0.
|
|
// Write 0 to halt an in-progress stream, and discard any in-
|
|
// flight
|
|
// read, so that a new stream can immediately be started (after
|
|
// draining the FIFO and reinitialising STREAM_ADDR)
|
|
#define XIP_STREAM_CTR_OFFSET _u(0x00000018)
|
|
#define XIP_STREAM_CTR_BITS _u(0x003fffff)
|
|
#define XIP_STREAM_CTR_RESET _u(0x00000000)
|
|
#define XIP_STREAM_CTR_MSB _u(21)
|
|
#define XIP_STREAM_CTR_LSB _u(0)
|
|
#define XIP_STREAM_CTR_ACCESS "RW"
|
|
// =============================================================================
|
|
// Register : XIP_STREAM_FIFO
|
|
// Description : FIFO stream data
|
|
// Streamed data is buffered here, for retrieval by the system
|
|
// DMA.
|
|
// This FIFO can also be accessed via the XIP_AUX slave, to avoid
|
|
// exposing
|
|
// the DMA to bus stalls caused by other XIP traffic.
|
|
#define XIP_STREAM_FIFO_OFFSET _u(0x0000001c)
|
|
#define XIP_STREAM_FIFO_BITS _u(0xffffffff)
|
|
#define XIP_STREAM_FIFO_RESET _u(0x00000000)
|
|
#define XIP_STREAM_FIFO_MSB _u(31)
|
|
#define XIP_STREAM_FIFO_LSB _u(0)
|
|
#define XIP_STREAM_FIFO_ACCESS "RF"
|
|
// =============================================================================
|
|
#endif // _HARDWARE_REGS_XIP_H
|
|
|