mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 10:26:10 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.6 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 */
 |