coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
spi.h File Reference
#include <spi-generic.h>
#include <stddef.h>
Include dependency graph for spi.h:

Go to the source code of this file.

Data Structures

struct  rockchip_spi
 

Macros

#define SF_READ_DATA_CMD   0x3
 
#define SPI_DFS_OFFSET   0 /* Data Frame Size */
 
#define SPI_DFS_MASK   0x3
 
#define SPI_DFS_4BIT   0x00
 
#define SPI_DFS_8BIT   0x01
 
#define SPI_DFS_16BIT   0x02
 
#define SPI_DFS_RESV   0x03
 
#define SPI_CFS_OFFSET   2
 
#define SPI_CFS_MASK   0xF
 
#define SPI_SCPH_OFFSET   6
 
#define SPI_SCPH_MASK   0x1
 
#define SPI_SCPH_TOGMID   0
 
#define SPI_SCPH_TOGSTA   1
 
#define SPI_SCOL_OFFSET   7
 
#define SPI_SCOL_MASK   0x1
 
#define SPI_SCOL_LOW   0
 
#define SPI_SCOL_HIGH   1
 
#define SPI_CSM_OFFSET   8
 
#define SPI_CSM_MASK   0x3
 
#define SPI_CSM_KEEP   0x00
 
#define SPI_CSM_HALF   0x01
 
#define SPI_CSM_ONE   0x02
 
#define SPI_CSM_RESV   0x03
 
#define SPI_SSN_DELAY_OFFSET   10
 
#define SPI_SSN_DELAY_MASK   0x1
 
#define SPI_SSN_DELAY_HALF   0x00
 
#define SPI_SSN_DELAY_ONE   0x01
 
#define SPI_SEM_OFFSET   11
 
#define SPI_SEM_MASK   0x1
 
#define SPI_SEM_LITTLE   0x00
 
#define SPI_SEM_BIG   0x01
 
#define SPI_FBM_OFFSET   12
 
#define SPI_FBM_MASK   0x1
 
#define SPI_FBM_MSB   0x00
 
#define SPI_FBM_LSB   0x01
 
#define SPI_HALF_WORLD_TX_OFFSET   13
 
#define SPI_HALF_WORLD_MASK   0x1
 
#define SPI_APB_16BIT   0x00
 
#define SPI_APB_8BIT   0x01
 
#define SPI_RXDSD_OFFSET   14
 
#define SPI_RXDSD_MASK   0x3
 
#define SPI_FRF_OFFSET   16
 
#define SPI_FRF_MASK   0x3
 
#define SPI_FRF_SPI   0x00
 
#define SPI_FRF_SSP   0x01
 
#define SPI_FRF_MICROWIRE   0x02
 
#define SPI_FRF_RESV   0x03
 
#define SPI_TMOD_OFFSET   18
 
#define SPI_TMOD_MASK   0x3
 
#define SPI_TMOD_TR   0x00
 
#define SPI_TMOD_TO   0x01
 
#define SPI_TMOD_RO   0x02
 
#define SPI_TMOD_RESV   0x03
 
#define SPI_OMOD_OFFSET   20
 
#define SPI_OMOD_MASK   0x1
 
#define SPI_OMOD_MASTER   0x00
 
#define SPI_OMOD_SLAVE   0x01
 
#define TXFLR_LEVEL_MASK   0x3f
 
#define RXFLR_LEVEL_MASK   0x3f
 
#define SR_MASK   0x7f
 
#define SR_BUSY   (1 << 0)
 
#define SR_TF_FULL   (1 << 1)
 
#define SR_TF_EMPT   (1 << 2)
 
#define SR_RF_EMPT   (1 << 3)
 
#define SR_RF_FULL   (1 << 4)
 
#define SPI_INT_TXEI   (1 << 0)
 
#define SPI_INT_TXOI   (1 << 1)
 
#define SPI_INT_RXUI   (1 << 2)
 
#define SPI_INT_RXOI   (1 << 3)
 
#define SPI_INT_RXFI   (1 << 4)
 
#define SPI_DMACR_TX_ENABLE   (1 << 1)
 
#define SPI_DMACR_RX_ENABLE   (1 << 0)
 
#define SPI_CLEAR_INT_ALL   (1 << 0)
 
#define SPI_CLEAR_INT_RXUI   (1 << 1)
 
#define SPI_CLEAR_INT_RXOI   (1 << 2)
 
#define SPI_CLEAR_INT_TXOI   (1 << 3)
 

Functions

 check_member (rockchip_spi, rxdr, 0x800)
 
void rockchip_spi_init (unsigned int bus, unsigned int speed_hz)
 
void rockchip_spi_set_sample_delay (unsigned int bus, unsigned int delay_ns)
 

Macro Definition Documentation

◆ RXFLR_LEVEL_MASK

#define RXFLR_LEVEL_MASK   0x3f

Definition at line 159 of file spi.h.

◆ SF_READ_DATA_CMD

#define SF_READ_DATA_CMD   0x3

Definition at line 35 of file spi.h.

◆ SPI_APB_16BIT

#define SPI_APB_16BIT   0x00

Definition at line 115 of file spi.h.

◆ SPI_APB_8BIT

#define SPI_APB_8BIT   0x01

Definition at line 117 of file spi.h.

◆ SPI_CFS_MASK

#define SPI_CFS_MASK   0xF

Definition at line 48 of file spi.h.

◆ SPI_CFS_OFFSET

#define SPI_CFS_OFFSET   2

Definition at line 47 of file spi.h.

◆ SPI_CLEAR_INT_ALL

#define SPI_CLEAR_INT_ALL   (1 << 0)

Definition at line 181 of file spi.h.

◆ SPI_CLEAR_INT_RXOI

#define SPI_CLEAR_INT_RXOI   (1 << 2)

Definition at line 183 of file spi.h.

◆ SPI_CLEAR_INT_RXUI

#define SPI_CLEAR_INT_RXUI   (1 << 1)

Definition at line 182 of file spi.h.

◆ SPI_CLEAR_INT_TXOI

#define SPI_CLEAR_INT_TXOI   (1 << 3)

Definition at line 184 of file spi.h.

◆ SPI_CSM_HALF

#define SPI_CSM_HALF   0x01

Definition at line 81 of file spi.h.

◆ SPI_CSM_KEEP

#define SPI_CSM_KEEP   0x00

Definition at line 75 of file spi.h.

◆ SPI_CSM_MASK

#define SPI_CSM_MASK   0x3

Definition at line 72 of file spi.h.

◆ SPI_CSM_OFFSET

#define SPI_CSM_OFFSET   8

Definition at line 71 of file spi.h.

◆ SPI_CSM_ONE

#define SPI_CSM_ONE   0x02

Definition at line 84 of file spi.h.

◆ SPI_CSM_RESV

#define SPI_CSM_RESV   0x03

Definition at line 85 of file spi.h.

◆ SPI_DFS_16BIT

#define SPI_DFS_16BIT   0x02

Definition at line 43 of file spi.h.

◆ SPI_DFS_4BIT

#define SPI_DFS_4BIT   0x00

Definition at line 41 of file spi.h.

◆ SPI_DFS_8BIT

#define SPI_DFS_8BIT   0x01

Definition at line 42 of file spi.h.

◆ SPI_DFS_MASK

#define SPI_DFS_MASK   0x3

Definition at line 40 of file spi.h.

◆ SPI_DFS_OFFSET

#define SPI_DFS_OFFSET   0 /* Data Frame Size */

Definition at line 39 of file spi.h.

◆ SPI_DFS_RESV

#define SPI_DFS_RESV   0x03

Definition at line 44 of file spi.h.

◆ SPI_DMACR_RX_ENABLE

#define SPI_DMACR_RX_ENABLE   (1 << 0)

Definition at line 178 of file spi.h.

◆ SPI_DMACR_TX_ENABLE

#define SPI_DMACR_TX_ENABLE   (1 << 1)

Definition at line 177 of file spi.h.

◆ SPI_FBM_LSB

#define SPI_FBM_LSB   0x01

Definition at line 109 of file spi.h.

◆ SPI_FBM_MASK

#define SPI_FBM_MASK   0x1

Definition at line 105 of file spi.h.

◆ SPI_FBM_MSB

#define SPI_FBM_MSB   0x00

Definition at line 107 of file spi.h.

◆ SPI_FBM_OFFSET

#define SPI_FBM_OFFSET   12

Definition at line 104 of file spi.h.

◆ SPI_FRF_MASK

#define SPI_FRF_MASK   0x3

Definition at line 125 of file spi.h.

◆ SPI_FRF_MICROWIRE

#define SPI_FRF_MICROWIRE   0x02

Definition at line 131 of file spi.h.

◆ SPI_FRF_OFFSET

#define SPI_FRF_OFFSET   16

Definition at line 124 of file spi.h.

◆ SPI_FRF_RESV

#define SPI_FRF_RESV   0x03

Definition at line 132 of file spi.h.

◆ SPI_FRF_SPI

#define SPI_FRF_SPI   0x00

Definition at line 127 of file spi.h.

◆ SPI_FRF_SSP

#define SPI_FRF_SSP   0x01

Definition at line 129 of file spi.h.

◆ SPI_HALF_WORLD_MASK

#define SPI_HALF_WORLD_MASK   0x1

Definition at line 113 of file spi.h.

◆ SPI_HALF_WORLD_TX_OFFSET

#define SPI_HALF_WORLD_TX_OFFSET   13

Definition at line 112 of file spi.h.

◆ SPI_INT_RXFI

#define SPI_INT_RXFI   (1 << 4)

Definition at line 174 of file spi.h.

◆ SPI_INT_RXOI

#define SPI_INT_RXOI   (1 << 3)

Definition at line 173 of file spi.h.

◆ SPI_INT_RXUI

#define SPI_INT_RXUI   (1 << 2)

Definition at line 172 of file spi.h.

◆ SPI_INT_TXEI

#define SPI_INT_TXEI   (1 << 0)

Definition at line 170 of file spi.h.

◆ SPI_INT_TXOI

#define SPI_INT_TXOI   (1 << 1)

Definition at line 171 of file spi.h.

◆ SPI_OMOD_MASK

#define SPI_OMOD_MASK   0x1

Definition at line 147 of file spi.h.

◆ SPI_OMOD_MASTER

#define SPI_OMOD_MASTER   0x00

Definition at line 149 of file spi.h.

◆ SPI_OMOD_OFFSET

#define SPI_OMOD_OFFSET   20

Definition at line 146 of file spi.h.

◆ SPI_OMOD_SLAVE

#define SPI_OMOD_SLAVE   0x01

Definition at line 151 of file spi.h.

◆ SPI_RXDSD_MASK

#define SPI_RXDSD_MASK   0x3

Definition at line 121 of file spi.h.

◆ SPI_RXDSD_OFFSET

#define SPI_RXDSD_OFFSET   14

Definition at line 120 of file spi.h.

◆ SPI_SCOL_HIGH

#define SPI_SCOL_HIGH   1

Definition at line 68 of file spi.h.

◆ SPI_SCOL_LOW

#define SPI_SCOL_LOW   0

Definition at line 65 of file spi.h.

◆ SPI_SCOL_MASK

#define SPI_SCOL_MASK   0x1

Definition at line 62 of file spi.h.

◆ SPI_SCOL_OFFSET

#define SPI_SCOL_OFFSET   7

Definition at line 61 of file spi.h.

◆ SPI_SCPH_MASK

#define SPI_SCPH_MASK   0x1

Definition at line 52 of file spi.h.

◆ SPI_SCPH_OFFSET

#define SPI_SCPH_OFFSET   6

Definition at line 51 of file spi.h.

◆ SPI_SCPH_TOGMID

#define SPI_SCPH_TOGMID   0

Definition at line 55 of file spi.h.

◆ SPI_SCPH_TOGSTA

#define SPI_SCPH_TOGSTA   1

Definition at line 58 of file spi.h.

◆ SPI_SEM_BIG

#define SPI_SEM_BIG   0x01

Definition at line 101 of file spi.h.

◆ SPI_SEM_LITTLE

#define SPI_SEM_LITTLE   0x00

Definition at line 99 of file spi.h.

◆ SPI_SEM_MASK

#define SPI_SEM_MASK   0x1

Definition at line 97 of file spi.h.

◆ SPI_SEM_OFFSET

#define SPI_SEM_OFFSET   11

Definition at line 96 of file spi.h.

◆ SPI_SSN_DELAY_HALF

#define SPI_SSN_DELAY_HALF   0x00

Definition at line 91 of file spi.h.

◆ SPI_SSN_DELAY_MASK

#define SPI_SSN_DELAY_MASK   0x1

Definition at line 89 of file spi.h.

◆ SPI_SSN_DELAY_OFFSET

#define SPI_SSN_DELAY_OFFSET   10

Definition at line 88 of file spi.h.

◆ SPI_SSN_DELAY_ONE

#define SPI_SSN_DELAY_ONE   0x01

Definition at line 93 of file spi.h.

◆ SPI_TMOD_MASK

#define SPI_TMOD_MASK   0x3

Definition at line 136 of file spi.h.

◆ SPI_TMOD_OFFSET

#define SPI_TMOD_OFFSET   18

Definition at line 135 of file spi.h.

◆ SPI_TMOD_RESV

#define SPI_TMOD_RESV   0x03

Definition at line 143 of file spi.h.

◆ SPI_TMOD_RO

#define SPI_TMOD_RO   0x02

Definition at line 142 of file spi.h.

◆ SPI_TMOD_TO

#define SPI_TMOD_TO   0x01

Definition at line 140 of file spi.h.

◆ SPI_TMOD_TR

#define SPI_TMOD_TR   0x00

Definition at line 138 of file spi.h.

◆ SR_BUSY

#define SR_BUSY   (1 << 0)

Definition at line 163 of file spi.h.

◆ SR_MASK

#define SR_MASK   0x7f

Definition at line 162 of file spi.h.

◆ SR_RF_EMPT

#define SR_RF_EMPT   (1 << 3)

Definition at line 166 of file spi.h.

◆ SR_RF_FULL

#define SR_RF_FULL   (1 << 4)

Definition at line 167 of file spi.h.

◆ SR_TF_EMPT

#define SR_TF_EMPT   (1 << 2)

Definition at line 165 of file spi.h.

◆ SR_TF_FULL

#define SR_TF_FULL   (1 << 1)

Definition at line 164 of file spi.h.

◆ TXFLR_LEVEL_MASK

#define TXFLR_LEVEL_MASK   0x3f

Definition at line 156 of file spi.h.

Function Documentation

◆ check_member()

check_member ( rockchip_spi  ,
rxdr  ,
0x800   
)

◆ rockchip_spi_init()

◆ rockchip_spi_set_sample_delay()

void rockchip_spi_set_sample_delay ( unsigned int  bus,
unsigned int  delay_ns 
)

Definition at line 122 of file spi.c.

References ARRAY_SIZE, assert, clrsetbits32, DIV_ROUND_CLOSEST, GHz, rockchip_spi_slave::regs, rockchip_spi_slaves, SPI_RXDSD_MASK, SPI_RXDSD_OFFSET, and SPI_SRCCLK_HZ.

Referenced by configure_spi_flash().

Here is the caller graph for this function: