/**
 * Copyright (c) 2021 Raspberry Pi (Trading) 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_DEFINED
#define HARDWARE_REGS_XIP_DEFINED
// =============================================================================
// Register    : XIP_CTRL
// Description : Cache control
#define XIP_CTRL_OFFSET 0x00000000
#define XIP_CTRL_BITS   0x0000000b
#define XIP_CTRL_RESET  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  0x0
#define XIP_CTRL_POWER_DOWN_BITS   0x00000008
#define XIP_CTRL_POWER_DOWN_MSB    3
#define XIP_CTRL_POWER_DOWN_LSB    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  0x1
#define XIP_CTRL_ERR_BADWRITE_BITS   0x00000002
#define XIP_CTRL_ERR_BADWRITE_MSB    1
#define XIP_CTRL_ERR_BADWRITE_LSB    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  0x1
#define XIP_CTRL_EN_BITS   0x00000001
#define XIP_CTRL_EN_MSB    0
#define XIP_CTRL_EN_LSB    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 0x00000004
#define XIP_FLUSH_BITS   0x00000001
#define XIP_FLUSH_RESET  0x00000000
#define XIP_FLUSH_MSB    0
#define XIP_FLUSH_LSB    0
#define XIP_FLUSH_ACCESS "SC"
// =============================================================================
// Register    : XIP_STAT
// Description : Cache Status
#define XIP_STAT_OFFSET 0x00000008
#define XIP_STAT_BITS   0x00000007
#define XIP_STAT_RESET  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  0x0
#define XIP_STAT_FIFO_FULL_BITS   0x00000004
#define XIP_STAT_FIFO_FULL_MSB    2
#define XIP_STAT_FIFO_FULL_LSB    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  0x1
#define XIP_STAT_FIFO_EMPTY_BITS   0x00000002
#define XIP_STAT_FIFO_EMPTY_MSB    1
#define XIP_STAT_FIFO_EMPTY_LSB    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  0x0
#define XIP_STAT_FLUSH_READY_BITS   0x00000001
#define XIP_STAT_FLUSH_READY_MSB    0
#define XIP_STAT_FLUSH_READY_LSB    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 0x0000000c
#define XIP_CTR_HIT_BITS   0xffffffff
#define XIP_CTR_HIT_RESET  0x00000000
#define XIP_CTR_HIT_MSB    31
#define XIP_CTR_HIT_LSB    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 0x00000010
#define XIP_CTR_ACC_BITS   0xffffffff
#define XIP_CTR_ACC_RESET  0x00000000
#define XIP_CTR_ACC_MSB    31
#define XIP_CTR_ACC_LSB    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 0x00000014
#define XIP_STREAM_ADDR_BITS   0xfffffffc
#define XIP_STREAM_ADDR_RESET  0x00000000
#define XIP_STREAM_ADDR_MSB    31
#define XIP_STREAM_ADDR_LSB    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 0x00000018
#define XIP_STREAM_CTR_BITS   0x003fffff
#define XIP_STREAM_CTR_RESET  0x00000000
#define XIP_STREAM_CTR_MSB    21
#define XIP_STREAM_CTR_LSB    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 0x0000001c
#define XIP_STREAM_FIFO_BITS   0xffffffff
#define XIP_STREAM_FIFO_RESET  0x00000000
#define XIP_STREAM_FIFO_MSB    31
#define XIP_STREAM_FIFO_LSB    0
#define XIP_STREAM_FIFO_ACCESS "RF"
// =============================================================================
#endif // HARDWARE_REGS_XIP_DEFINED
