3 #ifndef AMD_BLOCK_SPI_H
4 #define AMD_BLOCK_SPI_H
9 #define SPI_CNTRL0 0x00
10 #define SPI_BUSY BIT(31)
26 #define SPI_READ_MODE_MASK (BIT(30) | BIT(29) | BIT(18))
27 #define SPI_READ_MODE_UPPER_BITS(x) ((((x) >> 1) & 0x3) << 29)
28 #define SPI_READ_MODE_LOWER_BITS(x) (((x) & 0x1) << 18)
29 #define SPI_READ_MODE(x) (SPI_READ_MODE_UPPER_BITS(x) | \
30 SPI_READ_MODE_LOWER_BITS(x))
31 #define SPI_ACCESS_MAC_ROM_EN BIT(22)
33 #define SPI100_ENABLE 0x20
34 #define SPI_USE_SPI100 BIT(0)
36 #define DECODE_SPI_MODE_BITS(x) ((x) & SPI_READ_MODE_MASK)
37 #define DECODE_SPI_MODE_UPPER_BITS(x) ((DECODE_SPI_MODE_BITS(x) >> 28) & 0x06)
38 #define DECODE_SPI_MODE_LOWER_BITS(x) ((DECODE_SPI_MODE_BITS(x) >> 18) & 0x01)
39 #define DECODE_SPI_READ_MODE(x) (DECODE_SPI_MODE_UPPER_BITS(x) | \
40 DECODE_SPI_MODE_LOWER_BITS(x))
43 #define SPI100_SPEED_CONFIG 0x22
53 #define SPI_SPEED_MASK 0xf
54 #define SPI_SPEED_MODE(x, shift) (((x) & SPI_SPEED_MASK) << shift)
55 #define SPI_NORM_SPEED(x) SPI_SPEED_MODE(x, 12)
56 #define SPI_FAST_SPEED(x) SPI_SPEED_MODE(x, 8)
57 #define SPI_ALT_SPEED(x) SPI_SPEED_MODE(x, 4)
58 #define SPI_TPM_SPEED(x) SPI_SPEED_MODE(x, 0)
60 #define SPI_SPEED_CFG(n, f, a, t) (SPI_NORM_SPEED(n) | SPI_FAST_SPEED(f) | \
61 SPI_ALT_SPEED(a) | SPI_TPM_SPEED(t))
63 #define DECODE_SPEED_MASK 0x07
64 #define DECODE_SPEED_MODE(x, shift) (((x) >> shift) & DECODE_SPEED_MASK)
65 #define DECODE_SPI_NORMAL_SPEED(x) DECODE_SPEED_MODE(x, 12)
66 #define DECODE_SPI_FAST_SPEED(x) DECODE_SPEED_MODE(x, 8)
67 #define DECODE_SPI_ALT_SPEED(x) DECODE_SPEED_MODE(x, 4)
68 #define DECODE_SPI_TPM_SPEED(x) DECODE_SPEED_MODE(x, 0)
70 #define SPI100_HOST_PREF_CONFIG 0x2c
71 #define SPI_RD4DW_EN_HOST BIT(15)
74 #define SPI_FIFO_LAST_BYTE 0xc6
75 #define SPI_FIFO_DEPTH (SPI_FIFO_LAST_BYTE - SPI_FIFO + 1)
void mainboard_spi_fast_speed_override(uint8_t *fast_speed)
void fch_spi_config_modes(void)
uint16_t spi_read16(uint8_t reg)
void spi_write32(uint8_t reg, uint32_t val)
void fch_spi_early_init(void)
void spi_set_base(void *base)
struct thread_mutex spi_hw_mutex
uint32_t spi_read32(uint8_t reg)
void spi_write8(uint8_t reg, uint8_t val)
void show_spi_speeds_and_modes(void)
uint8_t spi_read8(uint8_t reg)
void spi_write16(uint8_t reg, uint16_t val)
uintptr_t spi_get_bar(void)
@ SPI_READ_MODE_NORMAL33M
@ SPI_READ_MODE_NORMAL66M
@ SPI_READ_MODE_FAST_READ
enum spi100_speed tpm_speed
enum spi100_speed altio_speed
enum spi100_speed normal_speed
enum spi_read_mode read_mode
enum spi100_speed fast_speed