7 #include <soc/qcom_qup_se.h>
14 #define LOOPBACK_ENABLE 0x1
17 #define WORD_LEN_MSK QC_GENMASK(9, 0)
18 #define MIN_WORD_LEN 4
21 #define TRANS_LEN_MSK QC_GENMASK(23, 0)
26 #define SPI_FULL_DUPLEX 3
28 #define SPI_CS_ASSERT 8
29 #define SPI_CS_DEASSERT 9
30 #define SPI_SCK_ONLY 10
34 #define M_CMD_FRAGMENTATION BIT(2)
36 #define BITS_PER_BYTE 8
37 #define BITS_PER_WORD 8
38 #define TX_WATERMARK 1
40 #define IRQ_TRIGGER (M_RX_FIFO_WATERMARK_EN | M_RX_FIFO_LAST_EN | \
41 M_TX_FIFO_WATERMARK_EN | M_CMD_DONE_EN | \
42 M_CMD_CANCEL_EN | M_CMD_ABORT_EN)
79 size_t bytes_out,
void *din,
size_t bytes_in)
88 if ((bytes_in == 0) && (bytes_out == 0))
97 }
else if (!bytes_in) {
102 size =
MIN(bytes_in, bytes_out);
123 din + size,
MAX((
int)bytes_in - size, 0));
150 (enable) ?
"Assert" :
"Deassert");
static void write32(void *addr, uint32_t val)
#define assert(statement)
static struct sdram_info params
#define printk(level,...)
#define clrbits32(addr, clear)
static int stopwatch_expired(struct stopwatch *sw)
static void stopwatch_init_msecs_expire(struct stopwatch *sw, long ms)
static void stopwatch_init_usecs_expire(struct stopwatch *sw, long us)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define M_TX_FIFO_WATERMARK_EN
#define AHB_SEC_SLV_CLK_CGC_ON
#define DMA_AHB_SLV_CFG_ON
#define DMA_TX_CLK_CGC_ON
void qup_m_cancel_and_abort(unsigned int bus)
#define S_COMMON_GENI_S_IRQ_EN
#define DMA_RX_CLK_CGC_ON
#define M_RX_FIFO_WATERMARK_EN
#define M_COMMON_GENI_M_IRQ_EN
#define M_RX_FIFO_LAST_EN
#define DEFAULT_IO_OUTPUT_CTRL_MSK
u32 qup_wait_for_m_irq(unsigned int bus)
int qup_handle_transfer(unsigned int bus, const void *dout, void *din, int size, struct stopwatch *timeout)
void qupv3_se_fw_load_and_init(unsigned int bus, unsigned int protocol, unsigned int mode)
void qup_spi_release_bus(const struct spi_slave *slave)
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_claim_bus(const struct spi_slave *slave)
int qup_spi_xfer(const struct spi_slave *slave, const void *dout, size_t bytes_out, void *din, size_t bytes_in)
void qup_spi_init(unsigned int bus, unsigned int speed_hz)
static int spi_qup_set_cs(const struct spi_slave *slave, bool enable)
#define M_CMD_FRAGMENTATION
void gpio_configure(gpio_t gpio, uint32_t func, uint32_t pull, uint32_t drive_str, uint32_t enable)
void clock_enable_qup(int qup)
static struct spi_slave slave