|  |  | 
|  | /******************************************************************************/ | 
|  | /*                                                                            */ | 
|  | /* 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 */ |