#ifndef TYW_SFMA0_H #define TYW_SFMA0_H #include "r_typedefs.h" /*------------------------------------------------------------------------------------------------------*/ /* Constant definition */ /*------------------------------------------------------------------------------------------------------*/ /* return value */ #define U1G_SFMA0_RET_OK ((uint8_t)0) /* OK */ #define U1G_SFMA0_RET_NG_PARAM ((uint8_t)1) /* Parameter Invalid */ #define U1G_SFMA0_RET_NG_FAIL ((uint8_t)2) /* Fail */ /* value number */ #define U1G_SFMA0_NUM_OP_DATA ((uint8_t)4) /* Number of Option Data */ #define U1G_SFMA0_NUM_DATA ((uint8_t)2) /* Number of Transfer Data */ /* value for "Address Enable" */ #define U1G_SFMA0_EN_ADDR_DISABLE ((uint8_t)0x00) /* Output disabled */ #define U1G_SFMA0_EN_ADDR_8BIT ((uint8_t)0x04) /* ADR[23:16] */ #define U1G_SFMA0_EN_ADDR_16BIT ((uint8_t)0x06) /* ADR[23:8] */ #define U1G_SFMA0_EN_ADDR_24BIT ((uint8_t)0x07) /* ADR[23:0] */ #define U1G_SFMA0_EN_ADDR_32BIT ((uint8_t)0x0F) /* ADR[31:0] */ /* value for "Option Data Enable" */ #define U1G_SFMA0_EN_OP_DATA_DISABLE ((uint8_t)0x00) /* Output disabled */ #define U1G_SFMA0_EN_OP_DATA_OPD3 ((uint8_t)0x08) /* OPD3 */ #define U1G_SFMA0_EN_OP_DATA_OPD3_OPD2 ((uint8_t)0x0C) /* OPD3, OPD2 */ #define U1G_SFMA0_EN_OP_DATA_OPD3_OPD1 ((uint8_t)0x0E) /* OPD3, OPD2, OPD1 */ #define U1G_SFMA0_EN_OP_DATA_OPD3_OPD0 ((uint8_t)0x0F) /* OPD3, OPD2, OPD1, OPD0 */ /* value for "Transfer Data Enable" */ #define U1G_SFMA0_EN_DATA_DISABLE ((uint8_t)0x00) /* Not transferred */ #define U1G_SFMA0_EN_DATA_16BIT ((uint8_t)0x08) /* 16 bits transferred */ #define U1G_SFMA0_EN_DATA_32BIT ((uint8_t)0x0C) /* 32 bits transferred */ #define U1G_SFMA0_EN_DATA_64BIT ((uint8_t)0x0F) /* 64 bits transferred */ /* value for "Transfer Data Enable" */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_1 ((uint8_t)0x00) /* 1 cycle */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_2 ((uint8_t)0x01) /* 2 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_3 ((uint8_t)0x02) /* 3 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_4 ((uint8_t)0x03) /* 4 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_5 ((uint8_t)0x04) /* 5 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_6 ((uint8_t)0x05) /* 6 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_7 ((uint8_t)0x06) /* 7 cycles */ #define U1G_SFMA0_NUM_DUMMY_CYCLE_8 ((uint8_t)0x07) /* 8 cycles */ /* value for "Command Bit Size", "Optional Command Bit Size", "Address Bit Size", */ /* "Option Data Bit Size" , "Transfer Data Bit Size", "Dummy Cycle Bit Size" */ #define U1G_SFMA0_SIZE_1BIT ((uint8_t)0x00) /* 1 bit */ #define U1G_SFMA0_SIZE_2BIT ((uint8_t)0x01) /* 2 bits */ #define U1G_SFMA0_SIZE_4BIT ((uint8_t)0x02) /* 4 bits */ /*------------------------------------------------------------------------------------------------------*/ /* Type definition */ /*------------------------------------------------------------------------------------------------------*/ /* data transfer */ /* */ /* <MEMO> */ /* - Setting value for members: */ /* - b4_en_addr : U1G_SFMA0_EN_ADDR_xxx */ /* - b4_en_op_data : U1G_SFMA0_EN_OP_DATA_xxx */ /* - b4_en_data : U1G_SFMA0_EN_DATA_xxx */ /* - b1_en_cmd : ON(enable), OFF(disable) */ /* - b1_en_op_cmd : ON(enable), OFF(disable) */ /* - b1_en_dmy_cycle : ON(enable), OFF(disable) */ /* - b1_en_write : ON(enable), OFF(disable) */ /* - b1_en_read : ON(enable), OFF(disable) */ /* - b1_ddr_addr : ON(DDR), OFF(SDR) */ /* - b1_ddr_op_data : ON(DDR), OFF(SDR) */ /* - b1_ddr_data : ON(DDR), OFF(SDR) */ /* - b1_keep_ssl : ON(SPBSSL is maintained at the end of transfer) */ /* : OFF(SPBSSL is negated at the end of transfer) */ /* - b3_num_dmy_cycle : U1G_SFMA0_NUM_DUMMY_CYCLE_xxx */ /* - b2_size_cmd : U1G_SFMA0_SIZE_xxx */ /* - b2_size_op_cmd : U1G_SFMA0_SIZE_xxx */ /* - b2_size_addr : U1G_SFMA0_SIZE_xxx */ /* - b2_size_op_data : U1G_SFMA0_SIZE_xxx */ /* - b2_size_data : U1G_SFMA0_SIZE_xxx */ /* - b2_size_dmy_cycle : U1G_SFMA0_SIZE_xxx */ /* - u1_cmd : any data */ /* - u1_opcmd : any data */ /* - u4_addr : any data */ /* - au1_op_data : any data */ /* - au4_wdata : any data */ /* - au4_rdata : do not set this member. */ typedef struct { uint32_t b4_en_addr : 4; /* Address Enable */ uint32_t b4_en_op_data : 4; /* Option Data Enable */ uint32_t b4_en_data : 4; /* Transfer Data Enable */ uint32_t b1_en_cmd : 1; /* Command Enable */ uint32_t b1_en_op_cmd : 1; /* Optional Command Enable */ uint32_t b1_en_dmy_cycle : 1; /* Dummy Cycle Enable */ uint32_t b1_en_write : 1; /* Data Write Enable */ uint32_t b1_en_read : 1; /* Data Read Enable */ uint32_t b1_ddr_addr : 1; /* Address DDR Enable */ uint32_t b1_ddr_op_data : 1; /* Option Data DDR Enable */ uint32_t b1_ddr_data : 1; /* Transfer Data DDR Enable */ uint32_t b1_keep_ssl : 1; /* SPBSSL Signal Level Keep */ uint32_t b3_num_dmy_cycle : 3; /* Number of Dummy Cycles */ uint32_t b2_size_cmd : 2; /* Command Bit Size */ uint32_t b2_size_op_cmd : 2; /* Optional Command Bit Size */ uint32_t b2_size_addr : 2; /* Address Bit Size */ uint32_t b2_size_op_data : 2; /* Option Data Bit Size */ /* --alignment-- */ uint8_t b2_size_data : 2; /* Transfer Data Bit Size */ uint8_t b2_size_dmy_cycle : 2; /* Dummy Cycle Bit Size */ uint8_t : 4; /* reserved */ uint8_t u1_cmd; /* Command */ uint8_t u1_opcmd; /* Option Command */ uint8_t u1_reserved; /* reserved */ /* --alignment-- */ uint32_t u4_addr; /* Address */ /* --alignment-- */ uint8_t au1_op_data[U1G_SFMA0_NUM_OP_DATA]; /* Option Data */ /* --alignment-- */ uint32_t au4_wdata[U1G_SFMA0_NUM_DATA]; /* Write Data */ /* --alignment-- */ uint32_t au4_rdata[U1G_SFMA0_NUM_DATA]; /* Read Data */ } st_SFMA0_Transfer; /*------------------------------------------------------------------------------------------------------*/ /* Prototype declaration */ /*------------------------------------------------------------------------------------------------------*/ extern void TYW_SFMA0_Init(void); /* Initialize SFMA0 */ extern uint8_t TYW_SFMA0_Transfer(st_SFMA0_Transfer *pstt_transfer); /* Data Transfer */ #endif /* SFMA0_H */