mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-08 14:14:32 +00:00
fe3334d0a3
Import misc remaining header files from 2013 U-Boot. These will be used by the later added drivers to support PCIe and networking on the MIPS Octeon II / III platforms. Signed-off-by: Aaron Williams <awilliams@marvell.com> Signed-off-by: Stefan Roese <sr@denx.de> Cc: Aaron Williams <awilliams@marvell.com> Cc: Chandrakala Chavva <cchavva@marvell.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
113 lines
2.8 KiB
C
113 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2020 Marvell International Ltd.
|
|
*
|
|
* This file provides support for the processor local scratch memory.
|
|
* Scratch memory is byte addressable - all addresses are byte addresses.
|
|
*/
|
|
|
|
#ifndef __CVMX_SCRATCH_H__
|
|
#define __CVMX_SCRATCH_H__
|
|
|
|
/* Note: This define must be a long, not a long long in order to compile
|
|
without warnings for both 32bit and 64bit. */
|
|
#define CVMX_SCRATCH_BASE (-32768l) /* 0xffffffffffff8000 */
|
|
|
|
/* Scratch line for LMTST/LMTDMA on Octeon3 models */
|
|
#ifdef CVMX_CAVIUM_OCTEON3
|
|
#define CVMX_PKO_LMTLINE 2ull
|
|
#endif
|
|
|
|
/**
|
|
* Reads an 8 bit value from the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to read from
|
|
*
|
|
* @return value read
|
|
*/
|
|
static inline u8 cvmx_scratch_read8(u64 address)
|
|
{
|
|
return *CASTPTR(volatile u8, CVMX_SCRATCH_BASE + address);
|
|
}
|
|
|
|
/**
|
|
* Reads a 16 bit value from the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to read from
|
|
*
|
|
* @return value read
|
|
*/
|
|
static inline u16 cvmx_scratch_read16(u64 address)
|
|
{
|
|
return *CASTPTR(volatile u16, CVMX_SCRATCH_BASE + address);
|
|
}
|
|
|
|
/**
|
|
* Reads a 32 bit value from the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to read from
|
|
*
|
|
* @return value read
|
|
*/
|
|
static inline u32 cvmx_scratch_read32(u64 address)
|
|
{
|
|
return *CASTPTR(volatile u32, CVMX_SCRATCH_BASE + address);
|
|
}
|
|
|
|
/**
|
|
* Reads a 64 bit value from the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to read from
|
|
*
|
|
* @return value read
|
|
*/
|
|
static inline u64 cvmx_scratch_read64(u64 address)
|
|
{
|
|
return *CASTPTR(volatile u64, CVMX_SCRATCH_BASE + address);
|
|
}
|
|
|
|
/**
|
|
* Writes an 8 bit value to the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to write to
|
|
* @param value value to write
|
|
*/
|
|
static inline void cvmx_scratch_write8(u64 address, u64 value)
|
|
{
|
|
*CASTPTR(volatile u8, CVMX_SCRATCH_BASE + address) = (u8)value;
|
|
}
|
|
|
|
/**
|
|
* Writes a 32 bit value to the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to write to
|
|
* @param value value to write
|
|
*/
|
|
static inline void cvmx_scratch_write16(u64 address, u64 value)
|
|
{
|
|
*CASTPTR(volatile u16, CVMX_SCRATCH_BASE + address) = (u16)value;
|
|
}
|
|
|
|
/**
|
|
* Writes a 16 bit value to the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to write to
|
|
* @param value value to write
|
|
*/
|
|
static inline void cvmx_scratch_write32(u64 address, u64 value)
|
|
{
|
|
*CASTPTR(volatile u32, CVMX_SCRATCH_BASE + address) = (u32)value;
|
|
}
|
|
|
|
/**
|
|
* Writes a 64 bit value to the processor local scratchpad memory.
|
|
*
|
|
* @param address byte address to write to
|
|
* @param value value to write
|
|
*/
|
|
static inline void cvmx_scratch_write64(u64 address, u64 value)
|
|
{
|
|
*CASTPTR(volatile u64, CVMX_SCRATCH_BASE + address) = value;
|
|
}
|
|
|
|
#endif /* __CVMX_SCRATCH_H__ */
|