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

Go to the source code of this file.

Data Structures

struct  qup_config_t
 
struct  qup_data_t
 

Macros

#define QUP_CONFIG   0x0
 
#define QUP_STATE   0x4
 
#define QUP_IO_MODES   0x8
 
#define QUP_SW_RESET   0xc
 
#define QUP_TIME_OUT   0x10
 
#define QUP_TIME_OUT_CURRENT   0x14
 
#define QUP_OPERATIONAL   0x18
 
#define QUP_ERROR_FLAGS   0x1c
 
#define QUP_ERROR_FLAGS_EN   0x20
 
#define QUP_TEST_CTRL   0x24
 
#define QUP_MX_OUTPUT_COUNT   0x100
 
#define QUP_MX_OUTPUT_CNT_CURRENT   0x104
 
#define QUP_OUTPUT_DEBUG   0x108
 
#define QUP_OUTPUT_FIFO_WORD_CNT   0x10c
 
#define QUP_OUTPUT_FIFO   0x110
 
#define QUP_MX_WRITE_COUNT   0x150
 
#define QUP_WRITE_CNT_CURRENT   0x154
 
#define QUP_MX_INPUT_COUNT   0x200
 
#define QUP_READ_COUNT   0x208
 
#define QUP_MX_READ_CNT_CURRENT   0x20c
 
#define QUP_INPUT_DEBUG   0x210
 
#define QUP_INPUT_FIFO_WORD_CNT   0x214
 
#define QUP_INPUT_FIFO   0x218
 
#define QUP_I2C_MASTER_CLK_CTL   0x400
 
#define QUP_I2C_MASTER_STATUS   0x404
 
#define OUTPUT_FIFO_FULL   (1<<6)
 
#define INPUT_FIFO_NOT_EMPTY   (1<<5)
 
#define OUTPUT_FIFO_NOT_EMPTY   (1<<4)
 
#define INPUT_SERVICE_FLAG   (1<<9)
 
#define OUTPUT_SERVICE_FLAG   (1<<8)
 
#define QUP_OUTPUT_BIT_SHIFT_EN   (1<<16)
 
#define QUP_MODE_MASK   (0x03)
 
#define QUP_OUTPUT_MODE_SHFT   (10)
 
#define QUP_INPUT_MODE_SHFT   (12)
 
#define QUP_FS_DIVIDER_MASK   (0xFF)
 
#define QUP_MINI_CORE_PROTO_SHFT   (8)
 
#define QUP_MINI_CORE_PROTO_MASK   (0x0F)
 
#define QUP_STATE_RESET   0x0
 
#define QUP_STATE_RUN   0x1
 
#define QUP_STATE_PAUSE   0x3
 
#define QUP_STATE_VALID   (1<<2)
 
#define QUP_STATE_MASK   0x3
 
#define QUP_STATE_VALID_MASK   (1<<2)
 
#define QUP_I2C_1CLK_NOOP_SEQ   0x1 /*MSB 8-bit NOP, LSB 8-bits 1 clk.*/
 
#define QUP_I2C_START_SEQ   (0x1 << 8)
 
#define QUP_I2C_DATA_SEQ   (0x2 << 8)
 
#define QUP_I2C_STOP_SEQ   (0x3 << 8)
 
#define QUP_I2C_RECV_SEQ   (0x4 << 8)
 
#define QUP_I2C_MIDATA_SEQ   (0x5 << 8)
 
#define QUP_I2C_MISTOP_SEQ   (0x6 << 8)
 
#define QUP_I2C_MINACK_SEQ   (0x7 << 8)
 
#define QUP_I2C_ADDR(x)   ((x & 0xFF) << 1)
 
#define QUP_I2C_DATA(x)   (x & 0xFF)
 
#define QUP_I2C_MI_TAG(x)   (x & 0xFF00)
 
#define QUP_I2C_SLAVE_READ   (0x1)
 
#define QUP_HS_DIVIDER_SHFT   (8)
 
#define QUP_DIVIDER_MIN_VAL   (0x3)
 
#define QUP_I2C_INVALID_READ_SEQ   (1 << 25)
 
#define QUP_I2C_INVALID_READ_ADDR   (1 << 24)
 
#define QUP_I2C_INVALID_TAG   (1 << 23)
 
#define QUP_I2C_FAILED_MASK   (0x3 << 6)
 
#define QUP_I2C_INVALID_WRITE   (1 << 5)
 
#define QUP_I2C_ARB_LOST   (1 << 4)
 
#define QUP_I2C_PACKET_NACK   (1 << 3)
 
#define QUP_I2C_BUS_ERROR   (1 << 2)
 

Enumerations

enum  qup_return_t {
  QUP_SUCCESS = 0 , QUP_ERR_BAD_PARAM , QUP_ERR_STATE_SET , QUP_ERR_TIMEOUT ,
  QUP_ERR_UNSUPPORTED , QUP_ERR_I2C_FAILED , QUP_ERR_I2C_ARB_LOST , QUP_ERR_I2C_BUS_ERROR ,
  QUP_ERR_I2C_INVALID_SLAVE_ADDR , QUP_ERR_XFER_FAIL , QUP_ERR_I2C_NACK , QUP_ERR_I2C_INVALID_WRITE ,
  QUP_ERR_I2C_INVALID_TAG , QUP_ERR_UNDEFINED , QUP_SUCCESS = 0 , QUP_ERR_BAD_PARAM ,
  QUP_ERR_STATE_SET , QUP_ERR_TIMEOUT , QUP_ERR_UNSUPPORTED , QUP_ERR_I2C_FAILED ,
  QUP_ERR_I2C_ARB_LOST , QUP_ERR_I2C_BUS_ERROR , QUP_ERR_I2C_INVALID_SLAVE_ADDR , QUP_ERR_XFER_FAIL ,
  QUP_ERR_I2C_NACK , QUP_ERR_I2C_INVALID_WRITE , QUP_ERR_I2C_INVALID_TAG , QUP_ERR_UNDEFINED ,
  QUP_SUCCESS = 0 , QUP_ERR_BAD_PARAM , QUP_ERR_STATE_SET , QUP_ERR_TIMEOUT ,
  QUP_ERR_UNSUPPORTED , QUP_ERR_I2C_FAILED , QUP_ERR_I2C_ARB_LOST , QUP_ERR_I2C_BUS_ERROR ,
  QUP_ERR_I2C_INVALID_SLAVE_ADDR , QUP_ERR_XFER_FAIL , QUP_ERR_I2C_NACK , QUP_ERR_I2C_INVALID_WRITE ,
  QUP_ERR_I2C_INVALID_TAG , QUP_ERR_UNDEFINED
}
 
enum  qup_protocol_t {
  QUP_MINICORE_SPI = 1 , QUP_MINICORE_I2C_MASTER , QUP_MINICORE_I2C_SLAVE , QUP_MINICORE_SPI = 1 ,
  QUP_MINICORE_I2C_MASTER , QUP_MINICORE_I2C_SLAVE , QUP_MINICORE_SPI = 1 , QUP_MINICORE_I2C_MASTER ,
  QUP_MINICORE_I2C_SLAVE
}
 
enum  qup_mode_t {
  QUP_MODE_FIFO = 0 , QUP_MODE_BLOCK , QUP_MODE_DATAMOVER , QUP_MODE_FIFO = 0 ,
  QUP_MODE_BLOCK , QUP_MODE_DATAMOVER , QUP_MODE_FIFO = 0 , QUP_MODE_BLOCK ,
  QUP_MODE_DATAMOVER
}
 

Functions

qup_return_t qup_init (gsbi_id_t gsbi_id, const qup_config_t *config_ptr)
 
qup_return_t qup_set_state (gsbi_id_t gsbi_id, uint32_t state)
 
qup_return_t qup_reset_i2c_master_status (gsbi_id_t gsbi_id)
 
qup_return_t qup_send_data (gsbi_id_t gsbi_id, qup_data_t *p_tx_obj, uint8_t stop_seq)
 
qup_return_t qup_recv_data (gsbi_id_t gsbi_id, qup_data_t *p_tx_obj)
 

Macro Definition Documentation

◆ INPUT_FIFO_NOT_EMPTY

#define INPUT_FIFO_NOT_EMPTY   (1<<5)

Definition at line 36 of file qup.h.

◆ INPUT_SERVICE_FLAG

#define INPUT_SERVICE_FLAG   (1<<9)

Definition at line 38 of file qup.h.

◆ OUTPUT_FIFO_FULL

#define OUTPUT_FIFO_FULL   (1<<6)

Definition at line 35 of file qup.h.

◆ OUTPUT_FIFO_NOT_EMPTY

#define OUTPUT_FIFO_NOT_EMPTY   (1<<4)

Definition at line 37 of file qup.h.

◆ OUTPUT_SERVICE_FLAG

#define OUTPUT_SERVICE_FLAG   (1<<8)

Definition at line 39 of file qup.h.

◆ QUP_CONFIG

#define QUP_CONFIG   0x0

Definition at line 9 of file qup.h.

◆ QUP_DIVIDER_MIN_VAL

#define QUP_DIVIDER_MIN_VAL   (0x3)

Definition at line 78 of file qup.h.

◆ QUP_ERROR_FLAGS

#define QUP_ERROR_FLAGS   0x1c

Definition at line 16 of file qup.h.

◆ QUP_ERROR_FLAGS_EN

#define QUP_ERROR_FLAGS_EN   0x20

Definition at line 17 of file qup.h.

◆ QUP_FS_DIVIDER_MASK

#define QUP_FS_DIVIDER_MASK   (0xFF)

Definition at line 46 of file qup.h.

◆ QUP_HS_DIVIDER_SHFT

#define QUP_HS_DIVIDER_SHFT   (8)

Definition at line 77 of file qup.h.

◆ QUP_I2C_1CLK_NOOP_SEQ

#define QUP_I2C_1CLK_NOOP_SEQ   0x1 /*MSB 8-bit NOP, LSB 8-bits 1 clk.*/

Definition at line 60 of file qup.h.

◆ QUP_I2C_ADDR

#define QUP_I2C_ADDR (   x)    ((x & 0xFF) << 1)

Definition at line 71 of file qup.h.

◆ QUP_I2C_ARB_LOST

#define QUP_I2C_ARB_LOST   (1 << 4)

Definition at line 86 of file qup.h.

◆ QUP_I2C_BUS_ERROR

#define QUP_I2C_BUS_ERROR   (1 << 2)

Definition at line 88 of file qup.h.

◆ QUP_I2C_DATA

#define QUP_I2C_DATA (   x)    (x & 0xFF)

Definition at line 72 of file qup.h.

◆ QUP_I2C_DATA_SEQ

#define QUP_I2C_DATA_SEQ   (0x2 << 8)

Definition at line 62 of file qup.h.

◆ QUP_I2C_FAILED_MASK

#define QUP_I2C_FAILED_MASK   (0x3 << 6)

Definition at line 84 of file qup.h.

◆ QUP_I2C_INVALID_READ_ADDR

#define QUP_I2C_INVALID_READ_ADDR   (1 << 24)

Definition at line 82 of file qup.h.

◆ QUP_I2C_INVALID_READ_SEQ

#define QUP_I2C_INVALID_READ_SEQ   (1 << 25)

Definition at line 81 of file qup.h.

◆ QUP_I2C_INVALID_TAG

#define QUP_I2C_INVALID_TAG   (1 << 23)

Definition at line 83 of file qup.h.

◆ QUP_I2C_INVALID_WRITE

#define QUP_I2C_INVALID_WRITE   (1 << 5)

Definition at line 85 of file qup.h.

◆ QUP_I2C_MASTER_CLK_CTL

#define QUP_I2C_MASTER_CLK_CTL   0x400

Definition at line 32 of file qup.h.

◆ QUP_I2C_MASTER_STATUS

#define QUP_I2C_MASTER_STATUS   0x404

Definition at line 33 of file qup.h.

◆ QUP_I2C_MI_TAG

#define QUP_I2C_MI_TAG (   x)    (x & 0xFF00)

Definition at line 73 of file qup.h.

◆ QUP_I2C_MIDATA_SEQ

#define QUP_I2C_MIDATA_SEQ   (0x5 << 8)

Definition at line 67 of file qup.h.

◆ QUP_I2C_MINACK_SEQ

#define QUP_I2C_MINACK_SEQ   (0x7 << 8)

Definition at line 69 of file qup.h.

◆ QUP_I2C_MISTOP_SEQ

#define QUP_I2C_MISTOP_SEQ   (0x6 << 8)

Definition at line 68 of file qup.h.

◆ QUP_I2C_PACKET_NACK

#define QUP_I2C_PACKET_NACK   (1 << 3)

Definition at line 87 of file qup.h.

◆ QUP_I2C_RECV_SEQ

#define QUP_I2C_RECV_SEQ   (0x4 << 8)

Definition at line 64 of file qup.h.

◆ QUP_I2C_SLAVE_READ

#define QUP_I2C_SLAVE_READ   (0x1)

Definition at line 74 of file qup.h.

◆ QUP_I2C_START_SEQ

#define QUP_I2C_START_SEQ   (0x1 << 8)

Definition at line 61 of file qup.h.

◆ QUP_I2C_STOP_SEQ

#define QUP_I2C_STOP_SEQ   (0x3 << 8)

Definition at line 63 of file qup.h.

◆ QUP_INPUT_DEBUG

#define QUP_INPUT_DEBUG   0x210

Definition at line 29 of file qup.h.

◆ QUP_INPUT_FIFO

#define QUP_INPUT_FIFO   0x218

Definition at line 31 of file qup.h.

◆ QUP_INPUT_FIFO_WORD_CNT

#define QUP_INPUT_FIFO_WORD_CNT   0x214

Definition at line 30 of file qup.h.

◆ QUP_INPUT_MODE_SHFT

#define QUP_INPUT_MODE_SHFT   (12)

Definition at line 44 of file qup.h.

◆ QUP_IO_MODES

#define QUP_IO_MODES   0x8

Definition at line 11 of file qup.h.

◆ QUP_MINI_CORE_PROTO_MASK

#define QUP_MINI_CORE_PROTO_MASK   (0x0F)

Definition at line 49 of file qup.h.

◆ QUP_MINI_CORE_PROTO_SHFT

#define QUP_MINI_CORE_PROTO_SHFT   (8)

Definition at line 48 of file qup.h.

◆ QUP_MODE_MASK

#define QUP_MODE_MASK   (0x03)

Definition at line 42 of file qup.h.

◆ QUP_MX_INPUT_COUNT

#define QUP_MX_INPUT_COUNT   0x200

Definition at line 26 of file qup.h.

◆ QUP_MX_OUTPUT_CNT_CURRENT

#define QUP_MX_OUTPUT_CNT_CURRENT   0x104

Definition at line 20 of file qup.h.

◆ QUP_MX_OUTPUT_COUNT

#define QUP_MX_OUTPUT_COUNT   0x100

Definition at line 19 of file qup.h.

◆ QUP_MX_READ_CNT_CURRENT

#define QUP_MX_READ_CNT_CURRENT   0x20c

Definition at line 28 of file qup.h.

◆ QUP_MX_WRITE_COUNT

#define QUP_MX_WRITE_COUNT   0x150

Definition at line 24 of file qup.h.

◆ QUP_OPERATIONAL

#define QUP_OPERATIONAL   0x18

Definition at line 15 of file qup.h.

◆ QUP_OUTPUT_BIT_SHIFT_EN

#define QUP_OUTPUT_BIT_SHIFT_EN   (1<<16)

Definition at line 40 of file qup.h.

◆ QUP_OUTPUT_DEBUG

#define QUP_OUTPUT_DEBUG   0x108

Definition at line 21 of file qup.h.

◆ QUP_OUTPUT_FIFO

#define QUP_OUTPUT_FIFO   0x110

Definition at line 23 of file qup.h.

◆ QUP_OUTPUT_FIFO_WORD_CNT

#define QUP_OUTPUT_FIFO_WORD_CNT   0x10c

Definition at line 22 of file qup.h.

◆ QUP_OUTPUT_MODE_SHFT

#define QUP_OUTPUT_MODE_SHFT   (10)

Definition at line 43 of file qup.h.

◆ QUP_READ_COUNT

#define QUP_READ_COUNT   0x208

Definition at line 27 of file qup.h.

◆ QUP_STATE

#define QUP_STATE   0x4

Definition at line 10 of file qup.h.

◆ QUP_STATE_MASK

#define QUP_STATE_MASK   0x3

Definition at line 56 of file qup.h.

◆ QUP_STATE_PAUSE

#define QUP_STATE_PAUSE   0x3

Definition at line 54 of file qup.h.

◆ QUP_STATE_RESET

#define QUP_STATE_RESET   0x0

Definition at line 52 of file qup.h.

◆ QUP_STATE_RUN

#define QUP_STATE_RUN   0x1

Definition at line 53 of file qup.h.

◆ QUP_STATE_VALID

#define QUP_STATE_VALID   (1<<2)

Definition at line 55 of file qup.h.

◆ QUP_STATE_VALID_MASK

#define QUP_STATE_VALID_MASK   (1<<2)

Definition at line 57 of file qup.h.

◆ QUP_SW_RESET

#define QUP_SW_RESET   0xc

Definition at line 12 of file qup.h.

◆ QUP_TEST_CTRL

#define QUP_TEST_CTRL   0x24

Definition at line 18 of file qup.h.

◆ QUP_TIME_OUT

#define QUP_TIME_OUT   0x10

Definition at line 13 of file qup.h.

◆ QUP_TIME_OUT_CURRENT

#define QUP_TIME_OUT_CURRENT   0x14

Definition at line 14 of file qup.h.

◆ QUP_WRITE_CNT_CURRENT

#define QUP_WRITE_CNT_CURRENT   0x154

Definition at line 25 of file qup.h.

Enumeration Type Documentation

◆ qup_mode_t

enum qup_mode_t
Enumerator
QUP_MODE_FIFO 
QUP_MODE_BLOCK 
QUP_MODE_DATAMOVER 
QUP_MODE_FIFO 
QUP_MODE_BLOCK 
QUP_MODE_DATAMOVER 
QUP_MODE_FIFO 
QUP_MODE_BLOCK 
QUP_MODE_DATAMOVER 

Definition at line 113 of file qup.h.

◆ qup_protocol_t

Enumerator
QUP_MINICORE_SPI 
QUP_MINICORE_I2C_MASTER 
QUP_MINICORE_I2C_SLAVE 
QUP_MINICORE_SPI 
QUP_MINICORE_I2C_MASTER 
QUP_MINICORE_I2C_SLAVE 
QUP_MINICORE_SPI 
QUP_MINICORE_I2C_MASTER 
QUP_MINICORE_I2C_SLAVE 

Definition at line 107 of file qup.h.

◆ qup_return_t

Enumerator
QUP_SUCCESS 
QUP_ERR_BAD_PARAM 
QUP_ERR_STATE_SET 
QUP_ERR_TIMEOUT 
QUP_ERR_UNSUPPORTED 
QUP_ERR_I2C_FAILED 
QUP_ERR_I2C_ARB_LOST 
QUP_ERR_I2C_BUS_ERROR 
QUP_ERR_I2C_INVALID_SLAVE_ADDR 
QUP_ERR_XFER_FAIL 
QUP_ERR_I2C_NACK 
QUP_ERR_I2C_INVALID_WRITE 
QUP_ERR_I2C_INVALID_TAG 
QUP_ERR_UNDEFINED 
QUP_SUCCESS 
QUP_ERR_BAD_PARAM 
QUP_ERR_STATE_SET 
QUP_ERR_TIMEOUT 
QUP_ERR_UNSUPPORTED 
QUP_ERR_I2C_FAILED 
QUP_ERR_I2C_ARB_LOST 
QUP_ERR_I2C_BUS_ERROR 
QUP_ERR_I2C_INVALID_SLAVE_ADDR 
QUP_ERR_XFER_FAIL 
QUP_ERR_I2C_NACK 
QUP_ERR_I2C_INVALID_WRITE 
QUP_ERR_I2C_INVALID_TAG 
QUP_ERR_UNDEFINED 
QUP_SUCCESS 
QUP_ERR_BAD_PARAM 
QUP_ERR_STATE_SET 
QUP_ERR_TIMEOUT 
QUP_ERR_UNSUPPORTED 
QUP_ERR_I2C_FAILED 
QUP_ERR_I2C_ARB_LOST 
QUP_ERR_I2C_BUS_ERROR 
QUP_ERR_I2C_INVALID_SLAVE_ADDR 
QUP_ERR_XFER_FAIL 
QUP_ERR_I2C_NACK 
QUP_ERR_I2C_INVALID_WRITE 
QUP_ERR_I2C_INVALID_TAG 
QUP_ERR_UNDEFINED 

Definition at line 90 of file qup.h.

Function Documentation

◆ qup_init()

◆ qup_recv_data()

qup_return_t qup_recv_data ( gsbi_id_t  gsbi_id,
qup_data_t p_tx_obj 
)

◆ qup_reset_i2c_master_status()

qup_return_t qup_reset_i2c_master_status ( gsbi_id_t  gsbi_id)

Definition at line 72 of file qup.c.

References QUP_ADDR, QUP_I2C_MASTER_STATUS, QUP_SUCCESS, and write32().

Here is the call graph for this function:

◆ qup_send_data()

qup_return_t qup_send_data ( gsbi_id_t  gsbi_id,
qup_data_t p_tx_obj,
uint8_t  stop_seq 
)

◆ qup_set_state()

qup_return_t qup_set_state ( gsbi_id_t  gsbi_id,
uint32_t  state 
)

Definition at line 353 of file qup.c.

References QUP_ADDR, QUP_ERR_UNDEFINED, QUP_STATE, QUP_STATE_PAUSE, QUP_STATE_RESET, QUP_STATE_VALID_MASK, qup_wait_for_state(), read32(), and write32().

Here is the call graph for this function: