![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <assert.h>
#include <lib.h>
#include <soc/clock.h>
#include <soc/gpio.h>
#include <soc/qcom_qup_se.h>
#include <soc/qup_se_handlers_common.h>
#include <soc/qupv3_config_common.h>
#include <soc/qupv3_spi_common.h>
#include <types.h>
Go to the source code of this file.
Macros | |
#define | LOOPBACK_ENABLE 0x1 |
#define | WORD_LEN_MSK QC_GENMASK(9, 0) |
#define | MIN_WORD_LEN 4 |
#define | TRANS_LEN_MSK QC_GENMASK(23, 0) |
#define | SPI_TX_ONLY 1 |
#define | SPI_RX_ONLY 2 |
#define | SPI_FULL_DUPLEX 3 |
#define | SPI_TX_RX 7 |
#define | SPI_CS_ASSERT 8 |
#define | SPI_CS_DEASSERT 9 |
#define | SPI_SCK_ONLY 10 |
#define | M_CMD_FRAGMENTATION BIT(2) |
#define | BITS_PER_BYTE 8 |
#define | BITS_PER_WORD 8 |
#define | TX_WATERMARK 1 |
#define | IRQ_TRIGGER |
Functions | |
static void | setup_fifo_params (const struct spi_slave *slave) |
static void | qup_setup_m_cmd (unsigned int se_bus, u32 cmd, u32 params) |
int | qup_spi_xfer (const struct spi_slave *slave, const void *dout, size_t bytes_out, void *din, size_t bytes_in) |
static int | spi_qup_set_cs (const struct spi_slave *slave, bool enable) |
void | qup_spi_init (unsigned int bus, unsigned int speed_hz) |
int | qup_spi_claim_bus (const struct spi_slave *slave) |
void | qup_spi_release_bus (const struct spi_slave *slave) |
#define BITS_PER_BYTE 8 |
Definition at line 36 of file qupv3_spi.c.
#define BITS_PER_WORD 8 |
Definition at line 37 of file qupv3_spi.c.
#define IRQ_TRIGGER |
Definition at line 40 of file qupv3_spi.c.
#define LOOPBACK_ENABLE 0x1 |
Definition at line 14 of file qupv3_spi.c.
#define M_CMD_FRAGMENTATION BIT(2) |
Definition at line 34 of file qupv3_spi.c.
#define MIN_WORD_LEN 4 |
Definition at line 18 of file qupv3_spi.c.
#define SPI_CS_ASSERT 8 |
Definition at line 28 of file qupv3_spi.c.
#define SPI_CS_DEASSERT 9 |
Definition at line 29 of file qupv3_spi.c.
#define SPI_FULL_DUPLEX 3 |
Definition at line 26 of file qupv3_spi.c.
#define SPI_RX_ONLY 2 |
Definition at line 25 of file qupv3_spi.c.
#define SPI_SCK_ONLY 10 |
Definition at line 30 of file qupv3_spi.c.
#define SPI_TX_ONLY 1 |
Definition at line 24 of file qupv3_spi.c.
#define SPI_TX_RX 7 |
Definition at line 27 of file qupv3_spi.c.
#define TRANS_LEN_MSK QC_GENMASK(23, 0) |
Definition at line 21 of file qupv3_spi.c.
#define TX_WATERMARK 1 |
Definition at line 38 of file qupv3_spi.c.
#define WORD_LEN_MSK QC_GENMASK(9, 0) |
Definition at line 17 of file qupv3_spi.c.
Definition at line 69 of file qupv3_spi.c.
References M_OPCODE_SHFT, M_PARAMS_MSK, params, qup::regs, and write32().
Referenced by qup_spi_xfer(), and spi_qup_set_cs().
int qup_spi_claim_bus | ( | const struct spi_slave * | slave | ) |
Definition at line 213 of file qupv3_spi.c.
References slave, and spi_qup_set_cs().
Definition at line 157 of file qupv3_spi.c.
References AHB_SEC_SLV_CLK_CGC_ON, assert, CLK_DIV_SHFT, clock_enable_qup(), clrbits32, DEFAULT_CGC_EN, DEFAULT_IO_OUTPUT_CTRL_MSK, DEFAULT_SE_CLK, DMA_AHB_SLV_CFG_ON, DMA_RX_CLK_CGC_ON, DMA_RX_IRQ_EN, DMA_TX_CLK_CGC_ON, DMA_TX_IRQ_EN, FIFO_DEPTH, FORCE_DEFAULT, GENI_DMA_MODE_EN, GENI_M_IRQ_EN, GENI_S_IRQ_EN, GPIO_6MA, gpio_configure(), GPIO_INPUT, GPIO_NO_PULL, GPIO_OUTPUT, KHz, M_CMD_DONE_EN, M_COMMON_GENI_M_IRQ_EN, M_RX_FIFO_LAST_EN, M_RX_FIFO_WATERMARK_EN, M_TX_FIFO_WATERMARK_EN, MIXED, qupv3_se_fw_load_and_init(), qup::regs, S_CMD_DONE_EN, S_COMMON_GENI_S_IRQ_EN, SE_PROTOCOL_SPI, SER_CLK_EN, and write32().
Referenced by bootblock_mainboard_init().
Definition at line 218 of file qupv3_spi.c.
References slave, and spi_qup_set_cs().
int qup_spi_xfer | ( | const struct spi_slave * | slave, |
const void * | dout, | ||
size_t | bytes_out, | ||
void * | din, | ||
size_t | bytes_in | ||
) |
Definition at line 78 of file qupv3_spi.c.
References assert, spi_slave::bus, M_CMD_FRAGMENTATION, MAX, MIN, NULL, qup_handle_transfer(), qup_setup_m_cmd(), qup_spi_xfer(), qup::regs, setup_fifo_params(), slave, SPI_FULL_DUPLEX, SPI_RX_ONLY, SPI_TX_ONLY, stopwatch_init_msecs_expire(), TRANS_LEN_MSK, TX_WATERMARK, and write32().
Referenced by qup_spi_xfer().
Definition at line 44 of file qupv3_spi.c.
References BITS_PER_WORD, spi_slave::bus, spi_slave::cs, log2(), MIN_WORD_LEN, PACK_VECTOR0, PACK_VECTOR1, PACK_VECTOR2, PACK_VECTOR3, qup::regs, slave, WORD_LEN_MSK, and write32().
Referenced by qup_spi_xfer().
Definition at line 128 of file qupv3_spi.c.
References BIOS_INFO, spi_slave::bus, M_CMD_DONE_EN, printk, qup_m_cancel_and_abort(), qup_setup_m_cmd(), qup_wait_for_m_irq(), slave, SPI_CS_ASSERT, SPI_CS_DEASSERT, stopwatch_expired(), stopwatch_init_usecs_expire(), and write32().
Referenced by qup_spi_claim_bus(), and qup_spi_release_bus().