SmartSwitchESP32/include/rtl8370/rtl8370_asicdrv.h

122 lines
2.9 KiB
C

#ifndef _RTL8370_ASICDRV_H_
#define _RTL8370_ASICDRV_H_
#include <rtk_types.h>
#include <rtl8370_reg.h>
#include <rtl8370_base.h>
#include <rtk_error.h>
#define RTL8370_REGBITLENGTH 16
#define RTL8370_REGDATAMAX 0xFFFF
#define RTL8370_VIDMAX 0xFFF
#define RTL8370_EVIDMAX 0x1FFF
#define RTL8370_CVLANMCNO 32
#define RTL8370_CVIDXMAX (RTL8370_CVLANMCNO - 1)
#define RTL8370_PRIMAX 7
#define RTL8370_PRIDECMAX 0xFF
#define RTL8370_PORTNO 16
#define RTL8370_PORTIDMAX (RTL8370_PORTNO - 1)
#define RTL8370_PMSKMAX ((1 << (RTL8370_PORTNO)) - 1)
#define RTL8370_PORTMASK 0xFFFF
#define RTL8370_SVIDXNO 64
#define RTL8370_SVIDXMAX (RTL8370_SVIDXNO - 1)
#define RTL8370_MSTIMAX 15
#define RTL8370_METERNO 64
#define RTL8370_METERMAX (RTL8370_METERNO - 1)
#define RTL8370_QUEUENO 8
#define RTL8370_QIDMAX (RTL8370_QUEUENO - 1)
#define RTL8370_PHY_BUSY_CHECK_COUNTER 1000
#define RTL8370_PHYNO 8
#define RTL8370_PHYIDMAX (RTL8370_PHYNO - 1)
#define RTL8370_QOS_GRANULARTY_MAX 0x1FFFF
#define RTL8370_QOS_GRANULARTY_LSB_MASK 0xFFFF
#define RTL8370_QOS_GRANULARTY_LSB_OFFSET 0
#define RTL8370_QOS_GRANULARTY_MSB_MASK 0x10000
#define RTL8370_QOS_GRANULARTY_MSB_OFFSET 16
#define RTL8370_QOS_GRANULARTY_UNIT_KBPS 8
#define RTL8370_QOS_RATE_INPUT_MAX (0x1FFFF * 8)
#define RTL8370_QOS_RATE_INPUT_MIN 8
#define RTL8370_QUEUE_MASK 0xFF
#define RTL8370_EFIDMAX 0x7
#define RTL8370_FIDMAX 0xFFF
/* the above macro is generated by genDotH */
#define RTL8370_VALID_REG_NO 3236
/*=======================================================================
* Enum
*========================================================================*/
enum RTL8370_TABLE_ACCESS_OP
{
TB_OP_READ = 0,
TB_OP_WRITE
};
enum RTL8370_TABLE_ACCESS_TARGET
{
TB_TARGET_ACLRULE = 1,
TB_TARGET_ACLACT,
TB_TARGET_CVLAN,
TB_TARGET_L2
};
#define RTL8370_TABLE_ACCESS_REG_DATA(op, target) ((op << 4) | target)
/*=======================================================================
* Structures
*========================================================================*/
typedef struct smi_ether_addr_s
{
#ifdef _LITTLE_ENDIAN
uint16 mac0 : 8;
uint16 mac1 : 8;
uint16 mac2 : 8;
uint16 mac3 : 8;
uint16 mac4 : 8;
uint16 mac5 : 8;
#else
uint16 mac1 : 8;
uint16 mac0 : 8;
uint16 mac3 : 8;
uint16 mac2 : 8;
uint16 mac5 : 8;
uint16 mac4 : 8;
#endif
} smi_ether_addr_t;
#ifdef __cplusplus
extern "C"
{
#endif
extern ret_t rtl8370_setAsicRegBit(uint16 reg, int bitNum, uint16 value);
extern ret_t rtl8370_getAsicRegBit(uint16 reg, int bitNum, uint16 *value);
extern ret_t rtl8370_setAsicRegBits(uint16 reg, int bits, uint16 value);
extern ret_t rtl8370_getAsicRegBits(uint16 reg, int bits, uint16 *value);
extern ret_t rtl8370_setAsicReg(uint16 reg, uint16 value);
extern ret_t rtl8370_getAsicReg(uint16 reg, uint16 *value);
#ifdef __cplusplus
}
#endif
#endif /*#ifndef _RTL8370_ASICDRV_H_*/