#ifndef _CLASS_H_
#define _CLASS_H_

#define CLASS_DMEM_BASE_ADDR	0x00000000
#define CLASS_DMEM_SIZE		0x2000
#define CLASS_DMEM_END		(CLASS_DMEM_BASE_ADDR + CLASS_DMEM_SIZE)
#define CLASS_PMEM_BASE_ADDR	0x00010000

#define CBUS_BASE_ADDR		0xc0000000
#define CLASS_APB_BASE_ADDR	0xc1000000
#define CLASS_AHB1_BASE_ADDR	0xc2000000
#define CLASS_AHB2_BASE_ADDR	0xc3000000

#include "cbus.h"

#define GPT_BASE_ADDR		(CLASS_APB_BASE_ADDR + 0x00000)
#define UART_BASE_ADDR		(CLASS_APB_BASE_ADDR + 0x10000)
#define PERG_BASE_ADDR		(CLASS_APB_BASE_ADDR + 0x20000)
#define EFET_BASE_ADDR		(CLASS_APB_BASE_ADDR + 0x40000)

#define MAC_HASH_BASE_ADDR	(CLASS_AHB1_BASE_ADDR + 0x30000)
#define VLAN_HASH_BASE_ADDR	(CLASS_AHB1_BASE_ADDR + 0x50000)

#define PE_LMEM_BASE_ADDR	(CLASS_AHB2_BASE_ADDR + 0x10000)
#define PE_LMEM_SIZE		0x8000
#define PE_LMEM_END		(PE_LMEM_BASE_ADDR + PE_LMEM_SIZE)
#define CCU_BASE_ADDR		(CLASS_AHB2_BASE_ADDR + 0x20000)

#define IS_DMEM(addr, len)	(((unsigned long)(addr) >= CLASS_DMEM_BASE_ADDR) && (((unsigned long)(addr) + (len)) <= CLASS_DMEM_END))
#define IS_PE_LMEM(addr, len)	(((unsigned long)(addr) >= PE_LMEM_BASE_ADDR) && (((unsigned long)(addr) + (len)) <= PE_LMEM_END))


#include "gpt.h"
#include "uart.h"
#include "class/perg.h"
#include "class/efet.h"
#include "class/mac_hash.h"
#include "class/vlan_hash.h"
#include "class/ccu.h"


#define CLASS_MAX_PBUFFERS	4

#define PBUF_HWPARSE_OFFSET	0x10	/* Fixed by hardware */

#define PAYLOAD_DMEM_MAX_SIZE	(CLASS_PBUF_SIZE - CLASS_PBUF_HEADER_OFFSET - sizeof(class_rx_hdr_t))

#define PHYPORT_0               0x0
#define PHYPORT_1               0x1
#define HOST_PORT_NO		0x3

#define   ACT_SRC_MAC_REPLACE 	(1 << (4+0))
#define   ACT_VLAN_REPLACE		(1 << (4+3))
#define   ACT_TCPCHKSUM_REPLACE	(1 << (4+2))
#define   ACT_VLAN_ADD			(1 << (4+1))

#define MIN_PKT_SIZE		56

#define PARSE_ETH_TYPE		(1 << 0)
#define PARSE_VLAN_TYPE		(1 << 1)
#define PARSE_PPPOE_TYPE	(1 << 2)
#define PARSE_ARP_TYPE		(1 << 3)
#define PARSE_MCAST_TYPE	(1 << 4)
#define PARSE_IP_TYPE		(1 << 5)
#define PARSE_IPV6_TYPE		(1 << 6)
#define PARSE_IPV4_TYPE		(1 << 7)

#define PARSE_IPX_TYPE		(1 << 9)

#define PARSE_UDP_FLOW		(1 << 11)
#define PARSE_TCP_FLOW		(1 << 12)
#define PARSE_ICMP_FLOW		(1 << 13)
#define PARSE_IGMP_FLOW		(1 << 14)
#define PARSE_FRAG_FLOW		(1 << 15)

#define PARSE_HIF_PKT		(1 << 23)
#define PARSE_ARC_HIT		(1 << 24)
#define PARSE_PKT_OVERFLOW	(1 << 25)

#define PARSE_PROTO_MISMATCH	(1 << 28)
#define PARSE_L3_MISMATCH	(1 << 29)
#define PARSE_L2_MISMATCH	(1 << 30)
#define PARSE_INCOMPLETE	(1 << 31)


typedef struct _hwparse_t {
	u16	sid;
	u16	connid;
	u8	toevec;
	u8	pLayer2Hdr;
	u8	pLayer3Hdr;
	u8	pLayer4Hdr;
	u16	vlanid;
	u16	ifParseFlags;
	u32	parseFlags;
	u16	srcport;
	u16	dstport;
	u32	proto:8;
	u32	port:4;
	u32	hash:20;
	u64	rte_res_valid:1;
	u64	vlan_res_valid:1;
	u64	dst_res_valid:1;
	u64	src_res_valid:1;
	u64	vlan_lookup:20;
	u64	dst_lookup:20;
	u64	src_lookup:20;
} hwparse_t;


typedef struct {
	u32	next_ptr;	/* ptr to the start of the first DDR buffer */
	u16	length;		/* total packet length */
	u16	phyno;		/* input physical port number */
	u32	status;		/* gemac status bits */
	u32	res;		/* reserved for software usage */
} class_rx_hdr_t;


typedef struct {
	u8	num_cpy;	/* no of copies to send out from RO block, for each there must be a corresponding tx pre-header */
	u8	dma_len;	/* len to be DMAed to DDR mem, including all tx pre-headers */
	u16	src_addr;	/* class dmem source address, pointing to first tx pre-header */
	u32	dst_addr;	/* DDR memory destination address of first tx pre-header, must be so packet data is continuous in DDR */
	u32	res1;		/* reserved for software usage - queue number? */
	u16	res2;		/* reserved for software usage */
	u16	tsv;		/* time stamp val */
} class_tx_desc_t;


typedef struct {
	u8	start_data_off;		/* packet data start offset, relative to start of this tx pre-header */
	u8	start_buf_off;		/* this tx pre-header start offset, relative to start of DDR buffer */
	u16	pkt_length;		/* total packet lenght */
	u8	act_phyno;		/* action phy number */
	u8	queueno;		/* queueno */
	u16	src_mac_msb;		/* indicates src_mac 47:32 */
	u32	src_mac_lsb;		/* indicates src_mac 31:0 */
	u32	vlanid;			/* vlanid */
} class_tx_hdr_t;

#endif /* _CLASS_H_ */
