coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
qup.c File Reference
#include <device/mmio.h>
#include <console/console.h>
#include <delay.h>
#include <timer.h>
#include <soc/iomap.h>
#include <soc/qup.h>
Include dependency graph for qup.c:

Go to the source code of this file.

Macros

#define TIMEOUT_CNT   100
 
#define QUP_ADDR(id, reg)   (blsp_qup_base(id) + (reg))
 
#define QUP_DEBUG   0
 
#define QUPDBG   BIOS_ERR, "\t-> "
 
#define qup_write32   write32
 

Functions

static qup_return_t qup_i2c_master_status (blsp_qup_id_t id)
 
static int check_bit_state (uint32_t *reg, int wait_for)
 
static qup_return_t qup_wait_for_state (blsp_qup_id_t id, unsigned int wait_for)
 
qup_return_t qup_reset_i2c_master_status (blsp_qup_id_t id)
 
static qup_return_t qup_reset_master_status (blsp_qup_id_t id)
 
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 uint32_t qup_i2c_create_output_tag (int stop, u8 data)
 
static qup_return_t qup_i2c_write_fifo_flush (blsp_qup_id_t id, struct stopwatch *timeout)
 
static qup_return_t qup_i2c_write_fifo (blsp_qup_id_t id, qup_data_t *p_tx_obj, uint8_t stop_seq)
 
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 int qup_i2c_parse_tag (uint32_t data, uint8_t *data_ptr, uint32_t len)
 
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_read (blsp_qup_id_t id, uint8_t mode, qup_data_t *p_tx_obj)
 
qup_return_t qup_init (blsp_qup_id_t id, const qup_config_t *config_ptr)
 
qup_return_t qup_set_state (blsp_qup_id_t id, uint32_t state)
 
static qup_return_t qup_i2c_send_data (blsp_qup_id_t id, qup_data_t *p_tx_obj, uint8_t stop_seq)
 
qup_return_t qup_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)
 
qup_return_t qup_recv_data (blsp_qup_id_t id, qup_data_t *p_rx_obj)
 

Macro Definition Documentation

◆ QUP_ADDR

#define QUP_ADDR (   id,
  reg 
)    (blsp_qup_base(id) + (reg))

Definition at line 12 of file qup.c.

◆ QUP_DEBUG

#define QUP_DEBUG   0

Definition at line 14 of file qup.c.

◆ qup_write32

#define qup_write32   write32

Definition at line 25 of file qup.c.

◆ QUPDBG

#define QUPDBG   BIOS_ERR, "\t-> "

Definition at line 16 of file qup.c.

◆ TIMEOUT_CNT

#define TIMEOUT_CNT   100

Definition at line 10 of file qup.c.

Function Documentation

◆ check_bit_state()

static int check_bit_state ( uint32_t reg,
int  wait_for 
)
static

Definition at line 57 of file qup.c.

References count, QUP_ERR_TIMEOUT, QUP_STATE_MASK, QUP_STATE_VALID, QUP_STATE_VALID_MASK, QUP_SUCCESS, read32(), and TIMEOUT_CNT.

Referenced by qup_wait_for_state().

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

◆ qup_fifo_wait_for()

static qup_return_t qup_fifo_wait_for ( blsp_qup_id_t  id,
uint32_t  status,
struct stopwatch timeout 
)
static

Definition at line 97 of file qup.c.

References QUP_ADDR, QUP_ERR_TIMEOUT, QUP_ERR_UNDEFINED, qup_i2c_master_status(), QUP_OPERATIONAL, QUP_SUCCESS, read32(), and stopwatch_expired().

Referenced by qup_i2c_read_fifo().

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

◆ qup_fifo_wait_while()

static qup_return_t qup_fifo_wait_while ( blsp_qup_id_t  id,
uint32_t  status,
struct stopwatch timeout 
)
static

Definition at line 113 of file qup.c.

References QUP_ADDR, QUP_ERR_TIMEOUT, QUP_ERR_UNDEFINED, qup_i2c_master_status(), QUP_OPERATIONAL, QUP_SUCCESS, read32(), and stopwatch_expired().

Referenced by qup_i2c_write_fifo_flush().

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

◆ qup_i2c_create_output_tag()

static uint32_t qup_i2c_create_output_tag ( int  stop,
u8  data 
)
inlinestatic

Definition at line 129 of file qup.c.

References QUP_I2C_DATA, QUP_I2C_DATA_SEQ, and QUP_I2C_STOP_SEQ.

Referenced by qup_i2c_write_fifo().

Here is the caller graph for this function:

◆ qup_i2c_master_status()

◆ qup_i2c_parse_tag()

static int qup_i2c_parse_tag ( uint32_t  data,
uint8_t data_ptr,
uint32_t  len 
)
static

Definition at line 255 of file qup.c.

References printk, QUP_I2C_DATA, QUP_I2C_MI_TAG, QUP_I2C_MIDATA_SEQ, QUP_I2C_MISTOP_SEQ, and QUPDBG.

Referenced by qup_i2c_read_fifo().

Here is the caller graph for this function:

◆ qup_i2c_read()

static qup_return_t qup_i2c_read ( blsp_qup_id_t  id,
uint8_t  mode,
qup_data_t p_tx_obj 
)
static

Definition at line 356 of file qup.c.

References printk, QUP_ERR_UNDEFINED, QUP_ERR_UNSUPPORTED, qup_i2c_read_fifo(), QUP_MODE_BLOCK, QUP_MODE_FIFO, qup_set_state(), QUP_STATE_RESET, and QUPDBG.

Referenced by qup_i2c_recv_data().

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

◆ qup_i2c_read_fifo()

◆ qup_i2c_recv_data()

static qup_return_t qup_i2c_recv_data ( blsp_qup_id_t  id,
qup_data_t p_rx_obj 
)
static

Definition at line 513 of file qup.c.

References BIOS_DEBUG, qup_data_t::iic, qup_data_t::p, printk, QUP_ADDR, QUP_DEBUG, QUP_ERR_UNDEFINED, qup_i2c_read(), QUP_INPUT_MODE_SHFT, QUP_IO_MODES, QUP_MODE_MASK, and read32().

Referenced by qup_recv_data().

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

◆ qup_i2c_send_data()

static qup_return_t qup_i2c_send_data ( blsp_qup_id_t  id,
qup_data_t p_tx_obj,
uint8_t  stop_seq 
)
static

Definition at line 473 of file qup.c.

References BIOS_DEBUG, qup_data_t::iic, qup_data_t::p, printk, QUP_ADDR, QUP_DEBUG, QUP_ERR_UNDEFINED, qup_i2c_write(), QUP_IO_MODES, QUP_MODE_MASK, QUP_OUTPUT_MODE_SHFT, and read32().

Referenced by qup_send_data().

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

◆ qup_i2c_write()

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

Definition at line 233 of file qup.c.

References printk, QUP_ERR_UNDEFINED, QUP_ERR_UNSUPPORTED, qup_i2c_write_fifo(), QUP_MODE_BLOCK, QUP_MODE_FIFO, qup_set_state(), QUP_STATE_RESET, and QUPDBG.

Referenced by qup_i2c_send_data().

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

◆ qup_i2c_write_fifo()

static qup_return_t qup_i2c_write_fifo ( blsp_qup_id_t  id,
qup_data_t p_tx_obj,
uint8_t  stop_seq 
)
static

◆ qup_i2c_write_fifo_flush()

static qup_return_t qup_i2c_write_fifo_flush ( blsp_qup_id_t  id,
struct stopwatch timeout 
)
inlinestatic

Definition at line 141 of file qup.c.

References BIOS_DEBUG, mdelay(), OUTPUT_FIFO_NOT_EMPTY, OUTPUT_SERVICE_FLAG, printk, QUP_ADDR, QUP_ERR_UNDEFINED, qup_fifo_wait_while(), qup_i2c_master_status(), QUP_OPERATIONAL, and qup_write32.

Referenced by qup_i2c_read_fifo(), and qup_i2c_write_fifo().

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

◆ qup_init()

qup_return_t qup_init ( blsp_qup_id_t  id,
const qup_config_t config_ptr 
)

Definition at line 380 of file qup.c.

◆ qup_recv_data()

qup_return_t qup_recv_data ( blsp_qup_id_t  id,
qup_data_t p_rx_obj 
)

Definition at line 533 of file qup.c.

◆ qup_reset_i2c_master_status()

qup_return_t qup_reset_i2c_master_status ( blsp_qup_id_t  id)

Definition at line 79 of file qup.c.

Referenced by qup_reset_master_status().

Here is the caller graph for this function:

◆ qup_reset_master_status()

static qup_return_t qup_reset_master_status ( blsp_qup_id_t  id)
static

Definition at line 89 of file qup.c.

References QUP_ADDR, QUP_ERROR_FLAGS, QUP_ERROR_FLAGS_EN, qup_reset_i2c_master_status(), QUP_SUCCESS, and qup_write32.

Referenced by qup_i2c_read_fifo(), and qup_i2c_write_fifo().

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

◆ qup_send_data()

qup_return_t qup_send_data ( blsp_qup_id_t  id,
qup_data_t p_tx_obj,
uint8_t  stop_seq 
)

Definition at line 494 of file qup.c.

◆ qup_set_state()

qup_return_t qup_set_state ( blsp_qup_id_t  id,
uint32_t  state 
)

Definition at line 450 of file qup.c.

Referenced by qup_i2c_read(), qup_i2c_read_fifo(), qup_i2c_write(), qup_i2c_write_fifo(), and qup_init().

Here is the caller graph for this function:

◆ qup_wait_for_state()

static qup_return_t qup_wait_for_state ( blsp_qup_id_t  id,
unsigned int  wait_for 
)
static

Definition at line 74 of file qup.c.

References check_bit_state(), QUP_ADDR, and QUP_STATE.

Referenced by qup_init(), and qup_set_state().

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