coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
qspi_common.h File Reference
#include <types.h>
#include <soc/addressmap.h>
#include <spi-generic.h>
Include dependency graph for qspi_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  qcom_qspi_regs
 

Macros

#define TX_DATA_OE_DELAY_SHIFT   24
 
#define TX_DATA_OE_DELAY_MASK   (0x3 << TX_DATA_OE_DELAY_SHIFT)
 
#define TX_CS_N_DELAY_SHIFT   22
 
#define TX_CS_N_DELAY_MASK   (0x3 << TX_CS_N_DELAY_SHIFT)
 
#define TX_CLK_DELAY_SHIFT   20
 
#define TX_CLK_DELAY_MASK   (0x3 << TX_CLK_DELAY_SHIFT)
 
#define TX_DATA_DELAY_SHIFT   18
 
#define TX_DATA_DELAY_MASK   (0x3 << TX_DATA_DELAY_SHIFT)
 
#define LPA_BASE_SHIFT   14
 
#define LPA_BASE_MASK   (0xF << LPA_BASE_SHIFT)
 
#define SBL_EN   BIT(13)
 
#define CHIP_SELECT_NUM   BIT(12)
 
#define SPI_MODE_SHIFT   10
 
#define SPI_MODE_MASK   (0x3 << SPI_MODE_SHIFT)
 
#define BIG_ENDIAN_MODE   BIT(9)
 
#define DMA_ENABLE   BIT(8)
 
#define PIN_WPN   BIT(7)
 
#define PIN_HOLDN   BIT(6)
 
#define FB_CLK_EN   BIT(4)
 
#define FULL_CYCLE_MODE   BIT(3)
 
#define DMA_CHAIN_DONE   BIT(31)
 
#define TRANSACTION_DONE   BIT(16)
 
#define WRITE_FIFO_OVERRUN   BIT(11)
 
#define WRITE_FIFO_FULL   BIT(10)
 
#define HRESP_FROM_NOC_ERR   BIT(3)
 
#define RESP_FIFO_RDY   BIT(2)
 
#define RESP_FIFO_NOT_EMPTY   BIT(1)
 
#define RESP_FIFO_UNDERRUN   BIT(0)
 
#define TRANSFER_FRAGMENT   BIT(8)
 
#define MULTI_IO_MODE_SHIFT   1
 
#define MULTI_IO_MODE_MASK   (0x7 << MULTI_IO_MODE_SHIFT)
 
#define TRANSFER_DIRECTION   BIT(0)
 
#define WR_FIFO_BYTES_SHIFT   16
 
#define WR_FIFO_BYTES_MASK   (0xFFFF << WR_FIFO_BYTES_SHIFT)
 
#define CONTINUOUS_MODE   BIT(0)
 
#define FIFO_EMPTY   BIT(11)
 
#define WR_CNTS_SHIFT   4
 
#define WR_CNTS_MASK   (0x7F << WR_CNTS_SHIFT)
 
#define RDY_64BYTE   BIT(3)
 
#define RDY_32BYTE   BIT(2)
 
#define RDY_16BYTE   BIT(1)
 
#define FIFO_RDY   BIT(0)
 
#define RESET_FIFO   BIT(0)
 
#define QSPI_MAX_PACKET_COUNT   0xFFC0
 

Functions

 check_member (qcom_qspi_regs, rd_fifo, 0x50)
 
void quadspi_init (uint32_t hz)
 
int qspi_claim_bus (const struct spi_slave *slave)
 
int qspi_setup_bus (const struct spi_slave *slave)
 
void qspi_release_bus (const struct spi_slave *slave)
 
int qspi_xfer (const struct spi_slave *slave, const void *dout, size_t out_bytes, void *din, size_t in_bytes)
 
int qspi_xfer_dual (const struct spi_slave *slave, const void *dout, size_t out_bytes, void *din, size_t in_bytes)
 

Variables

static struct qcom_qspi_regs *const qcom_qspi = (void *) QSPI_BASE
 

Macro Definition Documentation

◆ BIG_ENDIAN_MODE

#define BIG_ENDIAN_MODE   BIT(9)

Definition at line 50 of file qspi_common.h.

◆ CHIP_SELECT_NUM

#define CHIP_SELECT_NUM   BIT(12)

Definition at line 47 of file qspi_common.h.

◆ CONTINUOUS_MODE

#define CONTINUOUS_MODE   BIT(0)

Definition at line 82 of file qspi_common.h.

◆ DMA_CHAIN_DONE

#define DMA_CHAIN_DONE   BIT(31)

Definition at line 59 of file qspi_common.h.

◆ DMA_ENABLE

#define DMA_ENABLE   BIT(8)

Definition at line 51 of file qspi_common.h.

◆ FB_CLK_EN

#define FB_CLK_EN   BIT(4)

Definition at line 54 of file qspi_common.h.

◆ FIFO_EMPTY

#define FIFO_EMPTY   BIT(11)

Definition at line 86 of file qspi_common.h.

◆ FIFO_RDY

#define FIFO_RDY   BIT(0)

Definition at line 92 of file qspi_common.h.

◆ FULL_CYCLE_MODE

#define FULL_CYCLE_MODE   BIT(3)

Definition at line 55 of file qspi_common.h.

◆ HRESP_FROM_NOC_ERR

#define HRESP_FROM_NOC_ERR   BIT(3)

Definition at line 63 of file qspi_common.h.

◆ LPA_BASE_MASK

#define LPA_BASE_MASK   (0xF << LPA_BASE_SHIFT)

Definition at line 45 of file qspi_common.h.

◆ LPA_BASE_SHIFT

#define LPA_BASE_SHIFT   14

Definition at line 44 of file qspi_common.h.

◆ MULTI_IO_MODE_MASK

#define MULTI_IO_MODE_MASK   (0x7 << MULTI_IO_MODE_SHIFT)

Definition at line 72 of file qspi_common.h.

◆ MULTI_IO_MODE_SHIFT

#define MULTI_IO_MODE_SHIFT   1

Definition at line 71 of file qspi_common.h.

◆ PIN_HOLDN

#define PIN_HOLDN   BIT(6)

Definition at line 53 of file qspi_common.h.

◆ PIN_WPN

#define PIN_WPN   BIT(7)

Definition at line 52 of file qspi_common.h.

◆ QSPI_MAX_PACKET_COUNT

#define QSPI_MAX_PACKET_COUNT   0xFFC0

Definition at line 98 of file qspi_common.h.

◆ RDY_16BYTE

#define RDY_16BYTE   BIT(1)

Definition at line 91 of file qspi_common.h.

◆ RDY_32BYTE

#define RDY_32BYTE   BIT(2)

Definition at line 90 of file qspi_common.h.

◆ RDY_64BYTE

#define RDY_64BYTE   BIT(3)

Definition at line 89 of file qspi_common.h.

◆ RESET_FIFO

#define RESET_FIFO   BIT(0)

Definition at line 96 of file qspi_common.h.

◆ RESP_FIFO_NOT_EMPTY

#define RESP_FIFO_NOT_EMPTY   BIT(1)

Definition at line 65 of file qspi_common.h.

◆ RESP_FIFO_RDY

#define RESP_FIFO_RDY   BIT(2)

Definition at line 64 of file qspi_common.h.

◆ RESP_FIFO_UNDERRUN

#define RESP_FIFO_UNDERRUN   BIT(0)

Definition at line 66 of file qspi_common.h.

◆ SBL_EN

#define SBL_EN   BIT(13)

Definition at line 46 of file qspi_common.h.

◆ SPI_MODE_MASK

#define SPI_MODE_MASK   (0x3 << SPI_MODE_SHIFT)

Definition at line 49 of file qspi_common.h.

◆ SPI_MODE_SHIFT

#define SPI_MODE_SHIFT   10

Definition at line 48 of file qspi_common.h.

◆ TRANSACTION_DONE

#define TRANSACTION_DONE   BIT(16)

Definition at line 60 of file qspi_common.h.

◆ TRANSFER_DIRECTION

#define TRANSFER_DIRECTION   BIT(0)

Definition at line 73 of file qspi_common.h.

◆ TRANSFER_FRAGMENT

#define TRANSFER_FRAGMENT   BIT(8)

Definition at line 70 of file qspi_common.h.

◆ TX_CLK_DELAY_MASK

#define TX_CLK_DELAY_MASK   (0x3 << TX_CLK_DELAY_SHIFT)

Definition at line 41 of file qspi_common.h.

◆ TX_CLK_DELAY_SHIFT

#define TX_CLK_DELAY_SHIFT   20

Definition at line 40 of file qspi_common.h.

◆ TX_CS_N_DELAY_MASK

#define TX_CS_N_DELAY_MASK   (0x3 << TX_CS_N_DELAY_SHIFT)

Definition at line 39 of file qspi_common.h.

◆ TX_CS_N_DELAY_SHIFT

#define TX_CS_N_DELAY_SHIFT   22

Definition at line 38 of file qspi_common.h.

◆ TX_DATA_DELAY_MASK

#define TX_DATA_DELAY_MASK   (0x3 << TX_DATA_DELAY_SHIFT)

Definition at line 43 of file qspi_common.h.

◆ TX_DATA_DELAY_SHIFT

#define TX_DATA_DELAY_SHIFT   18

Definition at line 42 of file qspi_common.h.

◆ TX_DATA_OE_DELAY_MASK

#define TX_DATA_OE_DELAY_MASK   (0x3 << TX_DATA_OE_DELAY_SHIFT)

Definition at line 37 of file qspi_common.h.

◆ TX_DATA_OE_DELAY_SHIFT

#define TX_DATA_OE_DELAY_SHIFT   24

Definition at line 36 of file qspi_common.h.

◆ WR_CNTS_MASK

#define WR_CNTS_MASK   (0x7F << WR_CNTS_SHIFT)

Definition at line 88 of file qspi_common.h.

◆ WR_CNTS_SHIFT

#define WR_CNTS_SHIFT   4

Definition at line 87 of file qspi_common.h.

◆ WR_FIFO_BYTES_MASK

#define WR_FIFO_BYTES_MASK   (0xFFFF << WR_FIFO_BYTES_SHIFT)

Definition at line 78 of file qspi_common.h.

◆ WR_FIFO_BYTES_SHIFT

#define WR_FIFO_BYTES_SHIFT   16

Definition at line 77 of file qspi_common.h.

◆ WRITE_FIFO_FULL

#define WRITE_FIFO_FULL   BIT(10)

Definition at line 62 of file qspi_common.h.

◆ WRITE_FIFO_OVERRUN

#define WRITE_FIFO_OVERRUN   BIT(11)

Definition at line 61 of file qspi_common.h.

Function Documentation

◆ check_member()

check_member ( qcom_qspi_regs  ,
rd_fifo  ,
0x50   
)

◆ qspi_claim_bus()

int qspi_claim_bus ( const struct spi_slave slave)

Definition at line 259 of file qspi.c.

References CS_ASSERT, and cs_change().

Here is the call graph for this function:

◆ qspi_release_bus()

void qspi_release_bus ( const struct spi_slave slave)

Definition at line 265 of file qspi.c.

References cs_change(), and CS_DEASSERT.

Here is the call graph for this function:

◆ qspi_setup_bus()

int qspi_setup_bus ( const struct spi_slave slave)

◆ qspi_xfer()

int qspi_xfer ( const struct spi_slave slave,
const void dout,
size_t  out_bytes,
void din,
size_t  in_bytes 
)

Definition at line 286 of file qspi.c.

References SDR_1BIT, and xfer().

Here is the call graph for this function:

◆ qspi_xfer_dual()

int qspi_xfer_dual ( const struct spi_slave slave,
const void dout,
size_t  out_bytes,
void din,
size_t  in_bytes 
)

Definition at line 292 of file qspi.c.

References SDR_2BIT, and xfer().

Here is the call graph for this function:

◆ quadspi_init()

void quadspi_init ( uint32_t  hz)

Definition at line 251 of file qspi.c.

References assert, CACHE_LINE_SIZE, clock_configure_qspi(), configure_gpios(), dcache_line_bytes(), and reg_init().

Referenced by bootblock_soc_init().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ qcom_qspi

struct qcom_qspi_regs* const qcom_qspi = (void *) QSPI_BASE
static

Definition at line 32 of file qspi_common.h.

Referenced by dma_transfer_chain(), and reg_init().