rp2040/driver/inc/reg/ssi_reg.h

83 lines
2.8 KiB
C
Raw Normal View History

2025-04-19 21:07:29 +08:00
#ifndef __HARDWARE_SSI_REG_H__
#define __HARDWARE_SSI_REG_H__
#include "reg.h"
2025-05-10 17:20:09 +08:00
#define SSI_CTRLR0_TMOD_POS (8U)
#define SSI_CTRLR0_TMOD_VALUE_TX_AND_RX_MASK (0x0 << SSI_CTRLR0_TMOD_POS)
#define SSI_CTRLR0_TMOD_VALUE_TX_ONLY_MASK (0x1 << SSI_CTRLR0_TMOD_POS)
#define SSI_CTRLR0_TMOD_VALUE_RX_ONLY_MASK (0x2 << SSI_CTRLR0_TMOD_POS)
#define SSI_CTRLR0_TMOD_VALUE_EEPROM_READ_MASK (0x3 << SSI_CTRLR0_TMOD_POS)
#define SSI_CTRLR0_DFS_32_POS (16U)
#define SSI_CTRLR0_SPI_FRF_POS (21U)
#define SSI_CTRLR0_SPI_FRF_VALUE_STD_MASK (0x0 << SSI_CTRLR0_SPI_FRF_POS)
#define SSI_CTRLR0_SPI_FRF_VALUE_DUAL_MASK (0x1 << SSI_CTRLR0_SPI_FRF_POS)
#define SSI_CTRLR0_SPI_FRF_VALUE_QUAD_MASK (0x2 << SSI_CTRLR0_SPI_FRF_POS)
#define SSI_SPI_CTRLR0_TRANS_TYPE_POS (0U)
#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C1A_MASK (0x0 << SSI_SPI_CTRLR0_TRANS_TYPE_POS)
#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C2A_MASK (0x1 << SSI_SPI_CTRLR0_TRANS_TYPE_POS)
#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_2C2A_MASK (0x2 << SSI_SPI_CTRLR0_TRANS_TYPE_POS)
#define SSI_SPI_CTRLR0_ADDR_L_POS (2U)
#define SSI_SPI_CTRLR0_INST_L_POS (8U)
#define SSI_SPI_CTRLR0_INST_L_VALUE_NONE_MASK (0x0 << SSI_SPI_CTRLR0_INST_L_POS)
#define SSI_SPI_CTRLR0_INST_L_VALUE_4B_MASK (0x1 << SSI_SPI_CTRLR0_INST_L_POS)
#define SSI_SPI_CTRLR0_INST_L_VALUE_8B_MASK (0x2 << SSI_SPI_CTRLR0_INST_L_POS)
#define SSI_SPI_CTRLR0_INST_L_VALUE_16_MASKB (0x3 << SSI_SPI_CTRLR0_INST_L_POS)
#define SSI_SPI_CTRLR0_WAIT_CYCLES_POS (11U)
#define SSI_SPI_CTRLR0_XIP_CMD_POS (24U)
#define SSI_SR_BUSY (1 << 0)
#define SSI_SR_TFNF (1 << 1)
#define SSI_SR_TFE (1 << 2)
#define SSI_SR_RFNE (1 << 3)
#define SSI_SR_RFF (1 << 4)
#define SSI_SR_TXE (1 << 5)
#define SSI_SR_DCOL (1 << 6)
2025-04-19 21:07:29 +08:00
typedef struct {
io_rw_32 ctrlr0;
io_rw_32 ctrlr1;
io_rw_32 ssienr;
io_rw_32 mwcr;
io_rw_32 ser;
io_rw_32 baudr;
io_rw_32 txftlr;
io_rw_32 rxftlr;
io_rw_32 txflr;
io_rw_32 rxflr;
io_rw_32 sr;
io_rw_32 imr;
io_rw_32 isr;
io_rw_32 risr;
io_rw_32 txoicr;
io_rw_32 rxoicr;
io_rw_32 rxuicr;
io_rw_32 msticr;
io_rw_32 icr;
io_rw_32 dmacr;
io_rw_32 dmatdlr;
io_rw_32 dmardlr;
io_rw_32 idr;
io_rw_32 ssi_version_id;
io_rw_32 dr0;
uint32_t _pad[(0xf0 - 0x60) / 4 - 1];
io_rw_32 rx_sample_dly;
io_rw_32 spi_ctrlr0;
io_rw_32 txd_drive_edge;
} ssi_hw_t;
#define ssi_hw ((ssi_hw_t *const)XIP_SSI_BASE)
#define ssi_hw_set ((ssi_hw_t *const)hw_set_alias_untyped(ssi_hw))
#define ssi_hw_clear ((ssi_hw_t *const)hw_clear_alias_untyped(ssi_hw))
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* __HARDWARE_SSI_REG_H__ */