84 int val,
int us_delay)
148 unsigned int clk_idle_state;
149 unsigned int input_first_mode;
159 input_first_mode = 0;
167 input_first_mode = 0;
175 val |= input_first_mode;
334 "(Supported buses 0, 1, 2, 3, 4, 5)\n",
slave->
bus);
385 unsigned int status_flag;
395 }
while (!status_flag);
432 unsigned int fifo_count;
468 for (i = 0; i < fifo_count; i++) {
523 unsigned int write_len = bytes;
524 unsigned int read_len = bytes;
525 unsigned int fifo_count;
549 while (write_len || read_len) {
566 fifo_count = write_len;
568 for (i = 0; i < fifo_count; i++) {
587 fifo_count = read_len;
589 for (i = 0; i < fifo_count; i++) {
651 size_t out_bytes,
void *din,
size_t in_bytes)
654 u8 *txp = (
u8 *)dout;
695 "SPI error: unsupported bus %d or cs %d\n",
bus, cs);
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
#define assert(statement)
#define printk(level,...)
#define clrsetbits32(addr, clear, set)
static int stopwatch_expired(struct stopwatch *sw)
static void stopwatch_init_msecs_expire(struct stopwatch *sw, long ms)
#define OUTPUT_SERVICE_FLAG
#define QUP_STATE_VALID_MASK
#define INPUT_SERVICE_FLAG
#define INPUT_FIFO_NOT_EMPTY
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define MAX_INPUT_DONE_FLAG
#define MAX_OUTPUT_DONE_FLAG
const struct spi_ctrlr_buses spi_ctrlr_bus_map[]
const size_t spi_ctrlr_bus_map_count
void gpio_configure(gpio_t gpio, uint32_t func, uint32_t pull, uint32_t drive_str, uint32_t enable)
#define BLSP0_SPI_ERROR_FLAGS_EN_REG
#define SPI_CONFIG_LOOP_BACK_MSK
#define BLSP0_QUP_OUTPUT_FIFOc_REG(c)
#define QUP_IO_MODES_OUTPUT_MODE_MSK
#define BLSP0_QUP_MX_INPUT_COUNT_REG
#define SPI_INPUT_BLOCK_SIZE
#define BLSP0_SPI_DEASSERT_WAIT_REG
#define BLSP0_QUP_OPERATIONAL_REG
#define QUP_CONF_OUTPUT_MSK
#define SPI_CONFIG_INPUT_FIRST
#define SPI_IO_CTRL_CLK_ALWAYS_ON
#define QUP_CONF_OUTPUT_ENA
#define QUP_IO_MODES_OUTPUT_BIT_SHIFT_MSK
#define BLSP0_QUP_ERROR_FLAGS_EN_REG
#define BLSP0_QUP_ERROR_FLAGS_REG
#define BLSP0_QUP_OPERATIONAL_MASK
#define BLSP0_SPI_IO_CONTROL_REG
#define SPI_IO_CTRL_CLOCK_IDLE_HIGH
#define QUP_CONF_N_SPI_8_BIT_WORD
#define SPI_OUTPUT_BLOCK_SIZE
#define QUP_CONFIG_MINI_CORE_MSK
#define SPI_IO_CTRL_FORCE_CS_DIS
#define BLSP0_QUP_MX_OUTPUT_COUNT_REG
#define SPI_IO_CTRL_MX_CS_MODE
#define SPI_IO_CTRL_NO_TRI_STATE
#define QUP_IO_MODES_INPUT_MODE_MSK
#define QUP_CONF_NO_OUTPUT
#define BLSP0_SPI_ERROR_FLAGS_REG
#define BLSP0_QUP_STATE_REG
#define BLSP0_QUP_INPUT_FIFOc_REG(c)
#define SPI_IO_CTRL_FORCE_CS_MSK
#define SPI_CONFIG_NO_LOOP_BACK
#define QUP_IO_MODES_INPUT_BLOCK_MODE
#define QUP_CONF_NO_INPUT
#define QUP_CONF_INPUT_MSK
#define BLSP0_SPI_CONFIG_REG
#define QUP_IO_MODES_OUTPUT_BIT_SHIFT_EN
#define QUP_CONFIG_MINI_CORE_SPI
#define BLSP0_QUP_CONFIG_REG
#define QUP_CONF_INPUT_ENA
#define BLSP0_QUP_IO_MODES_REG
#define SPI_CONFIG_NO_SLAVE_OPER
#define SPI_IO_CTRL_FORCE_CS_EN
#define BLSP0_QUP_SW_RESET_REG
#define QUP_IO_MODES_OUTPUT_BLOCK_MODE
#define SPI_CONFIG_NO_SLAVE_OPER_MSK
void clock_configure_spi(int blsp, int qup, uint32_t hz)
void clock_enable_spi(int blsp, int qup)
#define BLSP4_QUP_STATE_REG
#define BLSP5_QUP_OPERATIONAL_MASK
#define BLSP4_QUP_IO_MODES_REG
#define BLSP5_QUP_STATE_REG
#define BLSP5_QUP_MX_OUTPUT_COUNT_REG
#define BLSP5_QUP_ERROR_FLAGS_EN_REG
#define BLSP5_QUP_ERROR_FLAGS_REG
#define BLSP5_QUP_SW_RESET_REG
#define BLSP5_QUP_IO_MODES_REG
#define BLSP5_SPI_ERROR_FLAGS_REG
#define BLSP4_QUP_SW_RESET_REG
#define BLSP5_QUP_OPERATIONAL_REG
#define BLSP5_SPI_CONFIG_REG
#define BLSP4_SPI_IO_CONTROL_REG
#define BLSP4_SPI_CONFIG_REG
#define BLSP4_SPI_ERROR_FLAGS_EN_REG
#define BLSP4_QUP_OUTPUT_FIFOc_REG(c)
#define BLSP5_QUP_MX_INPUT_COUNT_REG
#define BLSP5_QUP_CONFIG_REG
#define BLSP4_QUP_MX_INPUT_COUNT_REG
#define BLSP5_SPI_DEASSERT_WAIT_REG
#define BLSP4_QUP_ERROR_FLAGS_EN_REG
#define BLSP5_SPI_ERROR_FLAGS_EN_REG
#define BLSP4_SPI_DEASSERT_WAIT_REG
#define BLSP4_SPI_ERROR_FLAGS_REG
#define BLSP4_QUP_OPERATIONAL_MASK
#define BLSP4_QUP_CONFIG_REG
#define BLSP5_QUP_INPUT_FIFOc_REG(c)
#define BLSP4_QUP_MX_OUTPUT_COUNT_REG
#define BLSP4_QUP_OPERATIONAL_REG
#define BLSP5_QUP_OUTPUT_FIFOc_REG(c)
#define BLSP4_QUP_ERROR_FLAGS_REG
#define BLSP4_QUP_INPUT_FIFOc_REG(c)
#define BLSP5_SPI_IO_CONTROL_REG
static struct qcs_spi_slave * to_qcs_spi(const struct spi_slave *slave)
static void spi_reset(struct qcs_spi_slave *ds)
static void spi_ctrlr_release_bus(const struct spi_slave *slave)
static int xfer_vectors(const struct spi_slave *slave, struct spi_op vectors[], size_t count)
static int check_bit_state(void *reg_addr, int mask, int val, int us_delay)
static struct qcs_spi_slave spi_slave_pool[3]
static void spi_write_byte(struct qcs_spi_slave *ds, unsigned char data)
static int spi_hw_init(struct qcs_spi_slave *ds)
static unsigned char spi_read_byte(struct qcs_spi_slave *ds)
static int blsp_spi_write(struct qcs_spi_slave *ds, u8 *cmd_buffer, unsigned int bytes)
static int check_fifo_status(void *reg_addr)
static int config_spi_state(struct qcs_spi_slave *ds, unsigned int state)
static int blsp_spi_read(struct qcs_spi_slave *ds, u8 *data_buffer, unsigned int bytes)
static int __blsp_spi_read(struct qcs_spi_slave *ds, u8 *data_buffer, unsigned int bytes)
static void write_force_cs(const struct spi_slave *slave, int assert)
static int spi_ctrlr_claim_bus(const struct spi_slave *slave)
static int spi_ctrlr_xfer(const struct spi_slave *slave, const void *dout, size_t out_bytes, void *din, size_t in_bytes)
static void spi_set_mode(struct qcs_spi_slave *ds, unsigned int mode)
static void enable_io_config(struct qcs_spi_slave *ds, uint32_t write_cnt, uint32_t read_cnt)
static int __blsp_spi_write(struct qcs_spi_slave *ds, const u8 *cmd_buffer, unsigned int bytes)
static int spi_ctrlr_setup(const struct spi_slave *slave)
static const struct blsp_spi spi_reg[]
static int check_qup_state_valid(struct qcs_spi_slave *ds)
int spi_flash_vector_helper(const struct spi_slave *slave, struct spi_op vectors[], size_t count, int(*func)(const struct spi_slave *slave, const void *dout, size_t bytesout, void *din, size_t bytesin))
static struct spi_slave slave
void * qup_mx_output_count
void * qup_error_flags_en
void * qup_mx_input_count
const struct blsp_spi * regs
const struct spi_ctrlr * ctrlr
int(* setup)(const struct spi_slave *slave)
typedef void(X86APIP X86EMU_intrFuncs)(int num)