11 #define TIMEOUT_CNT 100
13 #define QUP_ADDR(id, reg) (blsp_qup_base(id) + (reg))
17 #define QUPDBG BIOS_ERR, "\t-> "
20 #define qup_write32(a, v) do { \
22 printk(QUPDBG "%s(%d): write32(%p, 0x%x)\n", \
23 __func__, __LINE__, a, v); \
26 #define qup_write32 write32
60 mstr_clk_ctl = ((
ht_div & 0xff) << 16) | (
fs_div & 0xff);
204 unsigned int data_len = p_tx_obj->
p.
iic.data_len;
205 unsigned int idx = 0;
229 tag = ((tag << 16) & 0xffff0000) |
246 data_len == 1 && stop_seq,
247 data_ptr[idx]) << 16;
294 int max = (len > 2) ? 2 : len;
296 for (i = 0; i < max; i++) {
323 unsigned int data_len = p_tx_obj->
p.
iic.data_len;
324 unsigned int idx = 0;
383 p_tx_obj->
p.
iic.data_len = idx;
456 switch (config_ptr->
mode) {
518 id, p_tx_obj->
p.
iic.addr);
519 for (i = 0; i < p_tx_obj->
p.
iic.data_len; i++)
557 id, p_rx_obj->
p.
iic.addr);
558 for (i = 0; i < p_rx_obj->
p.
iic.data_len; i++)
static uint32_t read32(const void *addr)
#define printk(level,...)
void mdelay(unsigned int msecs)
static int stopwatch_expired(struct stopwatch *sw)
static void stopwatch_init_usecs_expire(struct stopwatch *sw, long us)
#define QUP_I2C_INVALID_READ_ADDR
#define QUP_I2C_MISTOP_SEQ
#define QUP_MX_INPUT_COUNT
#define QUP_MINI_CORE_PROTO_MASK
#define QUP_I2C_BUS_ERROR
#define QUP_I2C_FAILED_MASK
#define QUP_ERROR_FLAGS_EN
#define OUTPUT_SERVICE_FLAG
#define QUP_I2C_MIDATA_SEQ
#define QUP_I2C_INVALID_TAG
#define QUP_MINI_CORE_PROTO_SHFT
#define QUP_CORE_CLK_ON_EN
#define QUP_I2C_SLAVE_READ
#define QUP_I2C_MASTER_CLK_CTL
@ QUP_MINICORE_I2C_MASTER
#define QUP_STATE_VALID_MASK
#define QUP_APP_CLK_ON_EN
#define QUP_I2C_MASTER_STATUS
#define QUP_I2C_PACKET_NACK
@ QUP_ERR_I2C_INVALID_SLAVE_ADDR
@ QUP_ERR_I2C_INVALID_WRITE
@ QUP_ERR_I2C_INVALID_TAG
#define QUP_MX_READ_COUNT
#define QUP_MX_OUTPUT_COUNT
#define QUP_I2C_MASTER_CONFIG
#define QUP_I2C_MI_TAG(x)
#define INPUT_SERVICE_FLAG
#define QUP_OUTPUT_MODE_SHFT
#define QUP_INPUT_MODE_SHFT
#define QUP_I2C_INVALID_WRITE
#define OUTPUT_FIFO_NOT_EMPTY
#define QUP_I2C_START_SEQ
qup_return_t qup_recv_data(blsp_qup_id_t id, qup_data_t *p_rx_obj)
qup_return_t qup_set_state(blsp_qup_id_t id, uint32_t state)
qup_return_t qup_send_data(blsp_qup_id_t id, qup_data_t *p_tx_obj, uint8_t stop_seq)
qup_return_t qup_reset_i2c_master_status(blsp_qup_id_t id)
qup_return_t qup_init(blsp_qup_id_t id, const qup_config_t *config_ptr)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
static uint32_t qup_i2c_create_output_tag(int stop, u8 data)
static struct i2c_clk_div_fld i2c_clk_div_map[]
static qup_return_t qup_i2c_master_status(blsp_qup_id_t id)
static qup_return_t qup_wait_for_state(blsp_qup_id_t id, unsigned int wait_for)
static qup_return_t qup_i2c_write(blsp_qup_id_t id, uint8_t mode, qup_data_t *p_tx_obj, uint8_t stop_seq)
static qup_return_t qup_i2c_write_fifo_flush(blsp_qup_id_t id, struct stopwatch *timeout)
static int qup_i2c_parse_tag(uint32_t data, uint8_t *data_ptr, uint32_t len)
static void i2c_set_mstr_clk_ctl(unsigned int id, unsigned int hz)
#define QUP_ADDR(id, reg)
static qup_return_t qup_i2c_read_fifo(blsp_qup_id_t id, qup_data_t *p_tx_obj)
static qup_return_t qup_i2c_send_data(blsp_qup_id_t id, qup_data_t *p_tx_obj, uint8_t stop_seq)
static qup_return_t qup_i2c_recv_data(blsp_qup_id_t id, qup_data_t *p_rx_obj)
static qup_return_t qup_fifo_wait_for(blsp_qup_id_t id, uint32_t status, struct stopwatch *timeout)
static qup_return_t qup_fifo_wait_while(blsp_qup_id_t id, uint32_t status, struct stopwatch *timeout)
static int check_bit_state(uint32_t *reg, int wait_for)
static qup_return_t qup_i2c_read(blsp_qup_id_t id, uint8_t mode, qup_data_t *p_tx_obj)
static qup_return_t qup_reset_master_status(blsp_qup_id_t id)
static qup_return_t qup_i2c_write_fifo(blsp_qup_id_t id, qup_data_t *p_tx_obj, uint8_t stop_seq)
struct qup_data_t::@1401::@1402 iic
union qup_data_t::@1401 p