/** @file Socionext FIP006 Register List Copyright (c) 2017, Socionext Inc. All rights reserved.
Copyright (c) 2017, Linaro, Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __EFI_FIP006_REG_H__ #define __EFI_FIP006_REG_H__ #define FIP006_REG_MCTRL 0x00 // Module Control typedef union { UINT32 Raw : 32; struct { BOOLEAN MEN : 1; BOOLEAN CSEN : 1; #define MCTRL_CSEN_DIRECT 0 #define MCTRL_CSEN_CS 1 BOOLEAN CDSS : 1; #define MCTRL_CDSS_IHCLK 0 #define MCTRL_CDSS_IPCLK 1 BOOLEAN MES : 1; #define MCTRL_MES_READY 1 UINT8 : 4; UINT8 : 8; UINT8 : 8; UINT8 : 8; }; } FIP006_MCTRL; #define FIP006_REG_PCC0 0x04 // Peripheral Communication Control 0 #define FIP006_REG_PCC1 0x08 // Peripheral Communication Control 1 #define FIP006_REG_PCC2 0x0C // Peripheral Communication Control 2 #define FIP006_REG_PCC3 0x10 // Peripheral Communication Control 3 typedef union { UINT32 Raw : 32; struct { BOOLEAN CPHA : 1; BOOLEAN CPOL : 1; BOOLEAN ACES : 1; BOOLEAN RTM : 1; BOOLEAN SSPOL : 1; UINT8 SS2CD : 2; BOOLEAN SDIR : 1; #define PCC_SDIR_MS_BIT 0 #define PCC_SDIR_LS_BIT 1 BOOLEAN SENDIAN : 1; #define PCC_SENDIAN_BIG 0 #define PCC_SENDIAN_LITTLE 1 UINT8 CDRS : 7; BOOLEAN SAFESYNC : 1; UINT8 WRDSEL : 4; UINT8 RDDSEL : 2; UINT8 : 1; UINT8 : 8; } Reg; } FIP006_PCC; typedef FIP006_PCC FIP006_PCC0, FIP006_PCC1, FIP006_PCC2, FIP006_PCC3; #define FIP006_REG_TXF 0x14 // Tx Interrupt Flag #define TXF_TSSRS BIT6 #define TXF_TFMTS BIT5 #define TXF_TFLETS BIT4 #define TXF_TFUS BIT3 #define TXF_TFOS BIT2 #define TXF_TFES BIT1 #define TXF_TFFS BIT0 #define FIP006_REG_TXE 0x18 // Tx Interrupt Enable #define TXE_TSSRE BIT6 #define TXE_TFMTE BIT5 #define TXE_TFLETE BIT4 #define TXE_TFUE BIT3 #define TXE_TFOE BIT2 #define TXE_TFEE BIT1 #define TXE_TFFE BIT0 #define FIP006_REG_TXC 0x1C // Tx Interrupt Clear #define TXC_TSSRC BIT6 #define TXC_TFMTC BIT5 #define TXC_TFLETC BIT4 #define TXC_TFUC BIT3 #define TXC_TFOC BIT2 #define TXC_TFEC BIT1 #define TXC_TFFC BIT0 #define FIP006_REG_RXF 0x20 // Rx Interrupt Flag #define RXF_RSSRS BIT6 #define RXF_RFMTS BIT5 #define RXF_RFLETS BIT4 #define RXF_RFUS BIT3 #define RXF_RFOS BIT2 #define RXF_RFES BIT1 #define RXF_RFFS BIT0 #define FIP006_REG_RXE 0x24 // Rx Interrupt Enable #define RXE_RSSRE BIT6 #define RXE_RFMTE BIT5 #define RXE_RFLETE BIT4 #define RXE_RFUE BIT3 #define RXE_RFOE BIT2 #define RXE_RFEE BIT1 #define RXE_RFFE BIT0 #define FIP006_REG_RXC 0x28 // Rx Interrupt Clear #define RXC_RSSRC BIT6 #define RXC_RFMTC BIT5 #define RXC_RFLETC BIT4 #define RXC_RFUC BIT3 #define RXC_RFOC BIT2 #define RXC_RFEC BIT1 #define RXC_RFFC BIT0 #define FIP006_REG_FAULTF 0x2C // Error Interrupt Status #define FAULTF_DRCBSFS BIT4 #define FAULTF_DWCBSFS BIT3 #define FAULTF_PVFS BIT2 #define FAULTF_WAFS BIT1 #define FAULTF_UMAFS BIT0 #define FIP006_REG_FAULTC 0x30 // Error Interrupt Clear #define FAULTC_DRCBSFC BIT4 #define FAULTC_DWCBSFC BIT3 #define FAULTC_PVFC BIT2 #define FAULTC_WAFC BIT1 #define FAULTC_UMAFC BIT0 #define FIP006_REG_DM_CFG 0x34 // Direct Mode DMA Configuration #define DM_CFG_MSTARTEN BIT2 #define DM_CFG_SSDC BIT1 #define FIP006_REG_DM_DMA 0x35 // Direct Mode DMA Enable #define DM_DMA_TXDMAEN BIT1 #define DM_DMA_RXDMAEN BIT0 #define FIP006_REG_DM_START 0x38 // Direct Mode Start Transmission #define DM_START BIT0 #define FIP006_REG_DM_STOP 0x39 // Direct Mode Stop Transmission #define DM_STOP BIT0 #define FIP006_REG_DM_PSEL 0x3A // Direct Mode Peripheral Select #define DM_PSEL (BIT1 | BIT0) #define FIP006_REG_DM_TRP 0x3B // Direct Mode Transmission Protocol #define DM_TRP (BIT3 | BIT2 | BIT1 | BIT0) #define FIP006_REG_DM_BCC 0x3C // Direct Mode Byte Count Control #define FIP006_REG_DM_BCS 0x3E // Direct Mode Byte Count Status #define FIP006_REG_DM_STATUS 0x40 // Direct Mode Status #define DM_STATUS_TXFLEVEL (BIT20 | BIT19 | BIT18 | BIT17 | BIT16) #define DM_STATUS_RXFLEVEL (BIT20 | BIT19 | BIT18 | BIT17 | BIT16) #define DM_STATUS_TXACTIVE BIT1 #define DM_STATUS_RXACTIVE BIT0 #define FIP006_REG_FIFO_CFG 0x4C // FIFO Configuration #define FIFO_CFG_TXFLSH BIT12 #define FIFO_CFG_RXFLSH BIT11 #define FIFO_CFG_TXCTRL BIT10 #define FIFO_CFG_FWIDTH (BIT9 | BIT8) #define FIFO_CFG_TXFTH (BIT7 | BIT6 | BIT5 | BIT4) #define FIFO_CFG_RXFTH (BIT3 | BIT2 | BIT1 | BIT0) #define FIP006_REG_FIFO_TX 0x50 // 16 32-bit Tx FIFO #define FIP006_REG_FIFO_RX 0x90 // 16 32-bit Rx FIFO #define FIP006_REG_CS_CFG 0xD0 // Command Sequencer Configuration typedef union { UINT32 Raw : 32; struct { BOOLEAN SRAM : 1; #define CS_CFG_SRAM_RO 0 #define CS_CFG_SRAM_RW 1 UINT8 MBM : 2; #define CS_CFG_MBM_SINGLE 0 #define CS_CFG_MBM_DUAL 1 #define CS_CFG_MBM_QUAD 2 BOOLEAN SPICHNG : 1; BOOLEAN BOOTEN : 1; BOOLEAN BSEL : 1; UINT8 : 2; BOOLEAN SSEL0EN : 1; BOOLEAN SSEL1EN : 1; BOOLEAN SSEL2EN : 1; BOOLEAN SSEL3EN : 1; UINT8 : 4; BOOLEAN MSEL : 4; UINT8 : 4; UINT8 : 8; } Reg; } FIP006_CS_CFG; #define FIP006_REG_CS_ITIME 0xD4 // Command Sequencer Idle Timer typedef union { UINT32 Raw : 32; struct { UINT16 ITIME : 16; UINT16 : 16; } Reg; } FIP006_CS_ITIME; #define FIP006_REG_CS_AEXT 0xD8 // Command Sequencer Address Extension typedef union { UINT32 Raw : 32; struct { UINT16 : 13; UINT32 AEXT : 19; } Reg; } FIP006_CS_AEXT; #define FIP006_REG_CS_RD 0xDC // Command Sequencer Read Control #define CS_RD_DEPTH 8 #define FIP006_REG_CS_WR 0xEC // Command Sequencer Write Control #define CS_WR_DEPTH 8 typedef union { UINT16 Raw : 16; struct { BOOLEAN DEC : 1; UINT8 TRP : 2; BOOLEAN CONT : 1; UINT8 : 4; union { UINT8 Data : 8; struct { UINT8 Data : 3; UINT8 : 5; } Cmd; } Payload; } Reg; } FIP006_CS_CMD; typedef FIP006_CS_CMD FIP006_CS_RD, FIP006_CS_WR; #define FIP006_REG_MID 0xFC // Command Sequencer Module ID typedef UINT32 FIP006_MID; #endif