#ifndef ROS_INC_REALTEK_H
#define ROS_INC_REALTEK_H

#include <ros/common.h>
#include <trap.h>
#include <pmap.h>
#include <net/nic_common.h>

#define rl8168_debug(...) // cprintf(__VA_ARGS__)  
#define rl8168_interrupt_debug(...) //cprintf(__VA_ARGS__)  
#define rl8168_frame_debug(...)  //cprintf(__VA_ARGS__)  

#define NE2K_IRQ_CPU		5

#define REALTEK_VENDOR_ID   0x10ec
#define REALTEK_DEV_ID      0x8168

// Realtek Offsets
#define RL_HWREV_REG		0x40
#define RL_MAC_OFFSET		0x00
#define RL_CTRL_REG         0x37
#define RL_IM_REG			0x3c
#define RL_IS_REG			0x3E
#define RL_EP_CTRL_REG		0x50
#define RL_RX_CFG_REG 		0x44
#define RL_TX_CFG_REG		0x40
#define RL_RX_MXPKT_REG     0xDA
#define RL_TX_MXPKT_REG     0xEC
#define RL_RX_DES_REG       0xE4
#define RL_TX_DES_REG       0x20
#define RL_TX_CTRL_REG		0x38	
#define RL_CP_CTRL_REG		0xE0		

// Realtek masks
#define RL_HWREV_MASK		0x7C800000
#define RL_CTRL_RXTX_MASK	0x0C
#define RL_CTRL_RESET_MASK  0x10

#define RL_EP_CTRL_UL_MASK	0xC0
#define RL_EP_CTRL_L_MASK	0x00
#define RL_TX_SEND_MASK		0x40
#define RL_CP_MAGIC_MASK	0x002B // Magic bits pulled from the BSD driver.
								   // Are listed as needed for TX/RX checksumming

// NOTE: THESE SHOULD BE BROKEN DOWN INTO A SERIES OF BITS TO REPERSENT THE VARIOUS OPTIONS
// AND THEN THE MASK SHOULD BE DEFINED TO BE AN OR OF THOSE BITS. THIS IS A QUICK HACK JOB.
// See interrupts below for how this should be done
#define RL_RX_CFG_MASK		0x0000E70F  // RXFTH: unlimited, MXDMA: unlimited, AAP: set (promisc. mode set)
#define RL_TX_CFG_MASK		0x3000700  // IFG: normal, MXDMA: unlimited.  crc appended

// Realtek interrupt bits
#define RL_INT_SERR			0x8000
#define RL_INT_TIMEOUT		0x4000
#define RL_INT_SWINT		0x0100
#define RL_INT_TDU			0x0080
#define RL_INT_FOVW			0x0040
#define RL_INT_LINKCHG		0x0020
#define RL_INT_RDU			0x0010
#define RL_INT_TERR			0x0008
#define RL_INT_TOK			0x0004
#define RL_INT_RERR			0x0002
#define RL_INT_ROK			0x0001

#define RL_INTERRUPT_MASK 	RL_INT_LINKCHG | RL_INT_TOK | RL_INT_ROK | RL_INT_SWINT
#define RL_INTRRUPT_CLEAR	0xFFFF

// Realtek descriptor command bits
#define DES_OWN_MASK		0x80000000
#define DES_EOR_MASK		0x40000000
#define DES_RX_SIZE_MASK	0x3FFF
#define DES_FS_MASK			0x20000000
#define DES_LS_MASK			0x10000000
#define DES_MAR_MASK		0x08000000
#define DES_PAM_MASK		0x04000000
#define DES_BAR_MASK		0x02000000

// TFor some reaosn the bits are in an undocumented position for our NIC
// They should be part of the command field, at the commented addrs below. instead
// they are part of the vlan field as stated below.
//#define DES_TX_IP_CHK_MASK  0x40000
//#define DES_TX_UDP_CHK_MASK 0x20000
//#define DES_TX_TCP_CHK_MASK 0x10000
#define DES_TX_IP_CHK_MASK  0x20000000
#define DES_TX_UDP_CHK_MASK 0x80000000
#define DES_TX_TCP_CHK_MASK 0x40000000

// Realtek Descriptor Related Sizing
#define NUM_TX_DESCRIPTORS	1024
#define NUM_RX_DESCRIPTORS	1024

// !!!!!!!!! need to verify the 128byte nature of this field. Spec says it could be 32 for some chips.

#define RL_TX_MAX_BUFFER_SIZE  ROUNDUP(MAX_FRAME_SIZE, 128)
#define RL_RX_MAX_BUFFER_SIZE  ROUNDUP(MAX_FRAME_SIZE, 8)    // Might be able to be 4 less. Does it strip out the crc flag?

#define RL_TX_MAX_SIZE		RL_TX_MAX_BUFFER_SIZE / 128
#define RL_RX_MAX_SIZE		RL_RX_MAX_BUFFER_SIZE

#define RL_DES_ALIGN	256
#define RL_BUF_ALIGN	8

// ^----- Good line ------^

// v----- Evil line ------v

//char *CT(PACKET_HEADER_SIZE + len)
//rl8168_packet_wrap(const char *CT(len) data, size_t len);

// ^----- Evil line ------^

// v----- Good line ------v


void rl8168_init(void);
void rl8168_reset(void);
void rl8168_interrupt_handler(struct hw_trapframe *hw_tf, void *data);
int rl8168_scan_pci(void);
void rl8168_read_mac(void);
void rl8168_setup_interrupts(void);
void rl8168_setup_descriptors(void);
void rl8168_configure(void);
void rl8168_handle_rx_packet(void);
void rl8168_set_rx_descriptor(uint32_t des_num, uint8_t reset_buffer);
void rl8168_set_tx_descriptor(uint32_t des_num);
void rl8168_process_frame(char *CT(frame_size) frame_buffer,
                          uint32_t frame_size, uint32_t command);
int rl8168_send_frame(const char *CT(len) data, size_t len);
int rl8168_send_pbuf(struct pbuf *p);

#endif /* !ROS_INC_REALTEK_H */
