161 lines
4.7 KiB
C
161 lines
4.7 KiB
C
|
|
/******************************************************************************/
|
|
/* */
|
|
/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 Broadcom */
|
|
/* Corporation. */
|
|
/* All rights reserved. */
|
|
/* */
|
|
/* This program is free software; you can redistribute it and/or modify */
|
|
/* it under the terms of the GNU General Public License as published by */
|
|
/* the Free Software Foundation, located in the file LICENSE. */
|
|
/* */
|
|
/******************************************************************************/
|
|
|
|
#ifndef MM_H
|
|
#define MM_H
|
|
|
|
#define __raw_readl readl
|
|
#define __raw_writel writel
|
|
|
|
#define BIG_ENDIAN_HOST 1
|
|
#define readl(addr) (*(volatile unsigned int*)(addr))
|
|
#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
|
|
|
|
/* Define memory barrier function here if needed */
|
|
#define wmb()
|
|
#define membar()
|
|
#include <common.h>
|
|
#include <asm/types.h>
|
|
#include "bcm570x_lm.h"
|
|
#include "bcm570x_queue.h"
|
|
#include "tigon3.h"
|
|
#include <pci.h>
|
|
|
|
#define FALSE 0
|
|
#define TRUE 1
|
|
#define ERROR -1
|
|
|
|
#if DBG
|
|
#define STATIC
|
|
#else
|
|
#define STATIC static
|
|
#endif
|
|
|
|
extern int MM_Packet_Desc_Size;
|
|
|
|
#define MM_PACKET_DESC_SIZE MM_Packet_Desc_Size
|
|
|
|
DECLARE_QUEUE_TYPE(UM_RX_PACKET_Q, MAX_RX_PACKET_DESC_COUNT+1);
|
|
|
|
#define MAX_MEM 16
|
|
|
|
/* Synch */
|
|
typedef int mutex_t;
|
|
typedef int spinlock_t;
|
|
|
|
/* Embedded device control */
|
|
typedef struct _UM_DEVICE_BLOCK {
|
|
LM_DEVICE_BLOCK lm_dev;
|
|
pci_dev_t pdev;
|
|
char *name;
|
|
void *mem_list[MAX_MEM];
|
|
dma_addr_t dma_list[MAX_MEM];
|
|
int mem_size_list[MAX_MEM];
|
|
int mem_list_num;
|
|
int mtu;
|
|
int index;
|
|
int opened;
|
|
int delayed_link_ind; /* Delay link status during initial load */
|
|
int adapter_just_inited; /* the first few seconds after init. */
|
|
int spurious_int; /* new -- unsupported */
|
|
int timer_interval;
|
|
int adaptive_expiry;
|
|
int crc_counter_expiry; /* new -- unsupported */
|
|
int poll_tib_expiry; /* new -- unsupported */
|
|
int tx_full;
|
|
int tx_queued;
|
|
int line_speed; /* in Mbps, 0 if link is down */
|
|
UM_RX_PACKET_Q rx_out_of_buf_q;
|
|
int rx_out_of_buf;
|
|
int rx_low_buf_thresh; /* changed to rx_buf_repl_thresh */
|
|
int rx_buf_repl_panic_thresh;
|
|
int rx_buf_align; /* new -- unsupported */
|
|
int do_global_lock;
|
|
mutex_t global_lock;
|
|
mutex_t undi_lock;
|
|
long undi_flags;
|
|
volatile int interrupt;
|
|
int tasklet_pending;
|
|
int tasklet_busy; /* new -- unsupported */
|
|
int rx_pkt;
|
|
int tx_pkt;
|
|
#ifdef NICE_SUPPORT /* unsupported, this is a linux ioctl */
|
|
void (*nice_rx)(void*, void* );
|
|
void* nice_ctx;
|
|
#endif /* NICE_SUPPORT */
|
|
int rx_adaptive_coalesce;
|
|
unsigned int rx_last_cnt;
|
|
unsigned int tx_last_cnt;
|
|
unsigned int rx_curr_coalesce_frames;
|
|
unsigned int rx_curr_coalesce_ticks;
|
|
unsigned int tx_curr_coalesce_frames; /* new -- unsupported */
|
|
#if TIGON3_DEBUG /* new -- unsupported */
|
|
uint tx_zc_count;
|
|
uint tx_chksum_count;
|
|
uint tx_himem_count;
|
|
uint rx_good_chksum_count;
|
|
#endif
|
|
unsigned int rx_bad_chksum_count; /* new -- unsupported */
|
|
unsigned int rx_misc_errors; /* new -- unsupported */
|
|
} UM_DEVICE_BLOCK, *PUM_DEVICE_BLOCK;
|
|
|
|
|
|
/* Physical/PCI DMA address */
|
|
typedef union {
|
|
dma_addr_t dma_map;
|
|
} dma_map_t;
|
|
|
|
/* Packet */
|
|
typedef struct
|
|
_UM_PACKET {
|
|
LM_PACKET lm_packet;
|
|
void* skbuff; /* Address of packet buffer */
|
|
} UM_PACKET, *PUM_PACKET;
|
|
|
|
#define MM_ACQUIRE_UNDI_LOCK(_pDevice)
|
|
#define MM_RELEASE_UNDI_LOCK(_pDevice)
|
|
#define MM_ACQUIRE_INT_LOCK(_pDevice)
|
|
#define MM_RELEASE_INT_LOCK(_pDevice)
|
|
#define MM_UINT_PTR(_ptr) ((unsigned long) (_ptr))
|
|
|
|
/* Macro for setting 64bit address struct */
|
|
#define set_64bit_addr(paddr, low, high) \
|
|
(paddr)->Low = low; \
|
|
(paddr)->High = high;
|
|
|
|
/* Assume that PCI controller's view of host memory is same as host */
|
|
|
|
#define MEM_TO_PCI_PHYS(addr) (addr)
|
|
|
|
extern void MM_SetAddr (LM_PHYSICAL_ADDRESS *paddr, dma_addr_t addr);
|
|
extern void MM_SetT3Addr(T3_64BIT_HOST_ADDR *paddr, dma_addr_t addr);
|
|
extern void MM_MapTxDma (PLM_DEVICE_BLOCK pDevice,
|
|
struct _LM_PACKET *pPacket, T3_64BIT_HOST_ADDR *paddr,
|
|
LM_UINT32 *len, int frag);
|
|
extern void MM_MapRxDma ( PLM_DEVICE_BLOCK pDevice,
|
|
struct _LM_PACKET *pPacket,
|
|
T3_64BIT_HOST_ADDR *paddr);
|
|
|
|
|
|
/* BSP needs to provide sysUsecDelay and sysSerialPrintString */
|
|
extern void sysSerialPrintString (char *s);
|
|
#define MM_Wait(usec) udelay(usec)
|
|
|
|
/* Define memory barrier function here if needed */
|
|
#define wmb()
|
|
|
|
#if 0
|
|
#define cpu_to_le32(val) LONGSWAP(val)
|
|
#endif
|
|
#endif /* MM_H */
|