summaryrefslogtreecommitdiff
path: root/package/broadcom-57xx/src/mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'package/broadcom-57xx/src/mm.h')
-rw-r--r--package/broadcom-57xx/src/mm.h608
1 files changed, 0 insertions, 608 deletions
diff --git a/package/broadcom-57xx/src/mm.h b/package/broadcom-57xx/src/mm.h
deleted file mode 100644
index 66107660e3..0000000000
--- a/package/broadcom-57xx/src/mm.h
+++ /dev/null
@@ -1,608 +0,0 @@
-/******************************************************************************/
-/* */
-/* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 - 2004 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
-
-#include <linux/config.h>
-
-#if defined(CONFIG_SMP) && !defined(__SMP__)
-#define __SMP__
-#endif
-
-#if defined(CONFIG_MODVERSIONS) && defined(MODULE) && !defined(MODVERSIONS)
-#ifndef BCM_SMALL_DRV
-#define MODVERSIONS
-#endif
-#endif
-
-#ifndef B57UM
-#define __NO_VERSION__
-#endif
-#include <linux/version.h>
-
-#ifdef MODULE
-
-#if defined(MODVERSIONS) && (LINUX_VERSION_CODE < 0x020500)
-#ifndef BCM_SMALL_DRV
-#include <linux/modversions.h>
-#endif
-#endif
-
-#if (LINUX_VERSION_CODE < 0x020605)
-#include <linux/module.h>
-#else
-#include <linux/moduleparam.h>
-#endif
-
-#else
-
-#define MOD_INC_USE_COUNT
-#define MOD_DEC_USE_COUNT
-#define SET_MODULE_OWNER(dev)
-#define MODULE_DEVICE_TABLE(pci, pci_tbl)
-#endif
-
-
-#include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/string.h>
-#include <linux/timer.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/slab.h>
-#include <linux/interrupt.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/reboot.h>
-#include <asm/processor.h> /* Processor type for cache alignment. */
-#include <asm/bitops.h>
-#include <asm/io.h>
-#include <asm/unaligned.h>
-#include <linux/delay.h>
-#include <asm/byteorder.h>
-#include <linux/time.h>
-#include <asm/uaccess.h>
-#if (LINUX_VERSION_CODE >= 0x020400)
-#if (LINUX_VERSION_CODE < 0x020500)
-#include <linux/wrapper.h>
-#endif
-#include <linux/ethtool.h>
-#endif
-#ifdef CONFIG_PROC_FS
-#include <linux/smp_lock.h>
-#include <linux/proc_fs.h>
-#define BCM_PROC_FS 1
-#endif
-#ifdef NETIF_F_HW_VLAN_TX
-#include <linux/if_vlan.h>
-#define BCM_VLAN 1
-#endif
-#ifdef NETIF_F_TSO
-#define BCM_TSO 1
-#define INCLUDE_TCP_SEG_SUPPORT 1
-#include <net/ip.h>
-#include <net/tcp.h>
-#include <net/checksum.h>
-#endif
-
-#ifndef LINUX_KERNEL_VERSION
-#define LINUX_KERNEL_VERSION 0
-#endif
-
-#ifndef MAX_SKB_FRAGS
-#define MAX_SKB_FRAGS 0
-#endif
-
-#if (LINUX_VERSION_CODE >= 0x020400)
-#ifndef ETHTOOL_GEEPROM
-
-#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */
-#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data */
-
-/* for passing EEPROM chunks */
-struct ethtool_eeprom {
- u32 cmd;
- u32 magic;
- u32 offset; /* in bytes */
- u32 len; /* in bytes */
- u8 data[0];
-};
-#define BCM_EEDUMP_LEN(info_p, size) *((u32 *) &((info_p)->reserved1[24]))=size
-
-#else
-
-#define BCM_EEDUMP_LEN(info_p, size) (info_p)->eedump_len=size
-
-#endif
-#endif
-
-#define BCM_INT_COAL 1
-#define BCM_NIC_SEND_BD 1
-#define BCM_ASF 1
-#define BCM_WOL 1
-#define BCM_TASKLET 1
-
-#if HAVE_NETIF_RECEIVE_SKB
-#define BCM_NAPI_RXPOLL 1
-#undef BCM_TASKLET
-#endif
-
-#if defined(CONFIG_PPC64)
-#define BCM_DISCONNECT_AT_CACHELINE 1
-#endif
-
-#ifdef BCM_SMALL_DRV
-#undef BCM_PROC_FS
-#undef ETHTOOL_GEEPROM
-#undef ETHTOOL_SEEPROM
-#undef ETHTOOL_GREGS
-#undef ETHTOOL_GPAUSEPARAM
-#undef ETHTOOL_GRXCSUM
-#undef ETHTOOL_TEST
-#undef BCM_INT_COAL
-#undef BCM_NIC_SEND_BD
-#undef BCM_WOL
-#undef BCM_TASKLET
-#undef BCM_TSO
-#endif
-
-#ifdef __BIG_ENDIAN
-#define BIG_ENDIAN_HOST 1
-#endif
-
-#define MM_SWAP_LE32(x) cpu_to_le32(x)
-#define MM_SWAP_BE32(x) cpu_to_be32(x)
-
-#if (LINUX_VERSION_CODE < 0x020327)
-#define __raw_readl readl
-#define __raw_writel writel
-#endif
-
-#define MM_MEMWRITEL(ptr, val) __raw_writel(val, ptr)
-#define MM_MEMREADL(ptr) __raw_readl(ptr)
-
-typedef atomic_t MM_ATOMIC_T;
-
-#define MM_ATOMIC_SET(ptr, val) atomic_set(ptr, val)
-#define MM_ATOMIC_READ(ptr) atomic_read(ptr)
-#define MM_ATOMIC_INC(ptr) atomic_inc(ptr)
-#define MM_ATOMIC_ADD(ptr, val) atomic_add(val, ptr)
-#define MM_ATOMIC_DEC(ptr) atomic_dec(ptr)
-#define MM_ATOMIC_SUB(ptr, val) atomic_sub(val, ptr)
-
-
-#ifndef mmiowb
-#define mmiowb()
-#endif
-
-
-#define MM_MB() mb()
-#define MM_WMB() wmb()
-#define MM_RMB() rmb()
-#define MM_MMIOWB() mmiowb()
-
-#include "lm.h"
-#include "queue.h"
-#include "tigon3.h"
-
-#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
-#define MAX_MEM2 4
-
-#if (LINUX_VERSION_CODE < 0x020211)
-typedef u32 dma_addr_t;
-#endif
-
-#if (LINUX_VERSION_CODE < 0x02032a)
-#define pci_map_single(dev, address, size, dir) virt_to_bus(address)
-#define pci_unmap_single(dev, dma_addr, size, dir)
-#endif
-
-#if MAX_SKB_FRAGS
-#if (LINUX_VERSION_CODE >= 0x02040d)
-
-typedef dma_addr_t dmaaddr_high_t;
-
-#else
-
-#if defined(CONFIG_HIGHMEM) && defined(CONFIG_X86) && !defined(CONFIG_X86_64)
-
-#if defined(CONFIG_HIGHMEM64G)
-typedef unsigned long long dmaaddr_high_t;
-#else
-typedef dma_addr_t dmaaddr_high_t;
-#endif
-
-#ifndef pci_map_page
-#define pci_map_page bcm_pci_map_page
-#endif
-
-static inline dmaaddr_high_t
-bcm_pci_map_page(struct pci_dev *dev, struct page *page,
- int offset, size_t size, int dir)
-{
- dmaaddr_high_t phys;
-
- phys = (page-mem_map) * (dmaaddr_high_t) PAGE_SIZE + offset;
-
- return phys;
-}
-
-#ifndef pci_unmap_page
-#define pci_unmap_page(dev, map, size, dir)
-#endif
-
-#else /* #if defined(CONFIG_HIGHMEM) && defined(CONFIG_X86) && ! defined(CONFIG_X86_64)*/
-
-typedef dma_addr_t dmaaddr_high_t;
-
-/* Warning - This may not work for all architectures if HIGHMEM is defined */
-
-#ifndef pci_map_page
-#define pci_map_page(dev, page, offset, size, dir) \
- pci_map_single(dev, page_address(page) + (offset), size, dir)
-#endif
-#ifndef pci_unmap_page
-#define pci_unmap_page(dev, map, size, dir) \
- pci_unmap_single(dev, map, size, dir)
-#endif
-
-#endif /* #if defined(CONFIG_HIGHMEM) && defined(CONFIG_X86) && ! defined(CONFIG_X86_64)*/
-
-#endif /* #if (LINUX_VERSION_CODE >= 0x02040d)*/
-#endif /* #if MAX_SKB_FRAGS*/
-
-#if defined(CONFIG_X86) && !defined(CONFIG_X86_64)
-#define NO_PCI_UNMAP 1
-#endif
-
-#if (LINUX_VERSION_CODE < 0x020412)
-#if !defined(NO_PCI_UNMAP)
-#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME;
-#define DECLARE_PCI_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME;
-
-#define pci_unmap_addr(PTR, ADDR_NAME) \
- ((PTR)->ADDR_NAME)
-
-#define pci_unmap_len(PTR, LEN_NAME) \
- ((PTR)->LEN_NAME)
-
-#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) \
- (((PTR)->ADDR_NAME) = (VAL))
-
-#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
- (((PTR)->LEN_NAME) = (VAL))
-#else
-#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)
-#define DECLARE_PCI_UNMAP_LEN(ADDR_NAME)
-
-#define pci_unmap_addr(PTR, ADDR_NAME) 0
-#define pci_unmap_len(PTR, LEN_NAME) 0
-#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0)
-#define pci_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0)
-#endif
-#endif
-
-#if (LINUX_VERSION_CODE < 0x02030e)
-#define net_device device
-#define netif_carrier_on(dev)
-#define netif_carrier_off(dev)
-#endif
-
-#if (LINUX_VERSION_CODE < 0x02032b)
-#define tasklet_struct tq_struct
-#endif
-
-typedef struct _UM_DEVICE_BLOCK {
- LM_DEVICE_BLOCK lm_dev;
- struct net_device *dev;
- struct pci_dev *pdev;
- struct net_device *next_module;
- char *name;
-#ifdef BCM_PROC_FS
- struct proc_dir_entry *pfs_entry;
- char pfs_name[32];
-#endif
- void *mem_list[MAX_MEM];
- dma_addr_t dma_list[MAX_MEM];
- int mem_size_list[MAX_MEM];
- int mem_list_num;
-
- int index;
- int opened;
- int suspended;
- int using_dac; /* dual address cycle */
- int delayed_link_ind; /* Delay link status during initial load */
- int adapter_just_inited; /* the first few seconds after init. */
- int timer_interval;
- int statstimer_interval;
- int adaptive_expiry;
- int crc_counter_expiry;
- int poll_tbi_interval;
- int poll_tbi_expiry;
- int asf_heartbeat;
- 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_buf_repl_thresh;
- int rx_buf_repl_panic_thresh;
- int rx_buf_repl_isr_limit;
- int rx_buf_align;
- struct timer_list timer;
- struct timer_list statstimer;
- int do_global_lock;
- spinlock_t global_lock;
- spinlock_t undi_lock;
- spinlock_t phy_lock;
- unsigned long undi_flags;
- volatile unsigned long interrupt;
- atomic_t intr_sem;
- int tasklet_pending;
- volatile unsigned long tasklet_busy;
- struct tasklet_struct tasklet;
- struct net_device_stats stats;
- int intr_test;
- int intr_test_result;
-#ifdef NETIF_F_HW_VLAN_TX
- struct vlan_group *vlgrp;
-#endif
- int vlan_tag_mode; /* Setting to allow ASF to work properly with */
- /* VLANs */
- #define VLAN_TAG_MODE_AUTO_STRIP 0
- #define VLAN_TAG_MODE_NORMAL_STRIP 1
- #define VLAN_TAG_MODE_FORCED_STRIP 2
-
- /* Auto mode - VLAN TAGs are always stripped if ASF is enabled, */
- /* If ASF is not enabled, it will be in normal mode. */
- /* Normal mode - VLAN TAGs are stripped when VLANs are registered */
- /* Forced mode - VLAN TAGs are always stripped. */
-
- int adaptive_coalesce;
- uint rx_last_cnt;
- uint tx_last_cnt;
- uint rx_curr_coalesce_frames;
- uint rx_curr_coalesce_frames_intr;
- uint rx_curr_coalesce_ticks;
- uint tx_curr_coalesce_frames;
-#if TIGON3_DEBUG
- unsigned long tx_zc_count;
- unsigned long tx_chksum_count;
- unsigned long tx_himem_count;
- unsigned long rx_good_chksum_count;
-#endif
- unsigned long rx_bad_chksum_count;
-#ifdef BCM_TSO
- unsigned long tso_pkt_count;
-#endif
- unsigned long rx_misc_errors;
- uint64_t phy_crc_count;
- unsigned int spurious_int;
-
- void *sbh;
- unsigned long boardflags;
- void *robo;
- int qos;
-} UM_DEVICE_BLOCK, *PUM_DEVICE_BLOCK;
-
-typedef struct _UM_PACKET {
- LM_PACKET lm_packet;
- struct sk_buff *skbuff;
-#if MAX_SKB_FRAGS
- DECLARE_PCI_UNMAP_ADDR(map[MAX_SKB_FRAGS + 1])
- DECLARE_PCI_UNMAP_LEN(map_len[MAX_SKB_FRAGS + 1])
-#else
- DECLARE_PCI_UNMAP_ADDR(map[1])
- DECLARE_PCI_UNMAP_LEN(map_len[1])
-#endif
-} UM_PACKET, *PUM_PACKET;
-
-static inline void MM_SetAddr(LM_PHYSICAL_ADDRESS *paddr, dma_addr_t addr)
-{
-#if BITS_PER_LONG == 64
- paddr->High = ((unsigned long) addr) >> 32;
- paddr->Low = ((unsigned long) addr) & 0xffffffff;
-#else
- paddr->High = 0;
- paddr->Low = (unsigned long) addr;
-#endif
-}
-
-static inline void MM_SetT3Addr(T3_64BIT_HOST_ADDR *paddr, dma_addr_t addr)
-{
-#if BITS_PER_LONG == 64
- paddr->High = ((unsigned long) addr) >> 32;
- paddr->Low = ((unsigned long) addr) & 0xffffffff;
-#else
- paddr->High = 0;
- paddr->Low = (unsigned long) addr;
-#endif
-}
-
-#if MAX_SKB_FRAGS
-static inline void MM_SetT3AddrHigh(T3_64BIT_HOST_ADDR *paddr,
- dmaaddr_high_t addr)
-{
-#if defined(CONFIG_HIGHMEM64G) && defined(CONFIG_X86) && !defined(CONFIG_X86_64)
- paddr->High = (unsigned long) (addr >> 32);
- paddr->Low = (unsigned long) (addr & 0xffffffff);
-#else
- MM_SetT3Addr(paddr, (dma_addr_t) addr);
-#endif
-}
-#endif
-
-static inline void MM_MapRxDma(PLM_DEVICE_BLOCK pDevice,
- struct _LM_PACKET *pPacket,
- T3_64BIT_HOST_ADDR *paddr)
-{
- dma_addr_t map;
- struct sk_buff *skb = ((struct _UM_PACKET *) pPacket)->skbuff;
-
- map = pci_map_single(((struct _UM_DEVICE_BLOCK *)pDevice)->pdev,
- skb->tail,
- pPacket->u.Rx.RxBufferSize,
- PCI_DMA_FROMDEVICE);
- pci_unmap_addr_set(((struct _UM_PACKET *) pPacket), map[0], map);
- MM_SetT3Addr(paddr, map);
-}
-
-static inline void MM_MapTxDma(PLM_DEVICE_BLOCK pDevice,
- struct _LM_PACKET *pPacket,
- T3_64BIT_HOST_ADDR *paddr,
- LM_UINT32 *len,
- int frag)
-{
- dma_addr_t map;
- struct sk_buff *skb = ((struct _UM_PACKET *) pPacket)->skbuff;
- unsigned int length;
-
- if (frag == 0) {
-#if MAX_SKB_FRAGS
- if (skb_shinfo(skb)->nr_frags)
- length = skb->len - skb->data_len;
- else
-#endif
- length = skb->len;
- map = pci_map_single(((struct _UM_DEVICE_BLOCK *)pDevice)->pdev,
- skb->data, length, PCI_DMA_TODEVICE);
- MM_SetT3Addr(paddr, map);
- pci_unmap_addr_set(((struct _UM_PACKET *)pPacket), map[0], map);
- pci_unmap_len_set(((struct _UM_PACKET *) pPacket), map_len[0],
- length);
- *len = length;
- }
-#if MAX_SKB_FRAGS
- else {
- skb_frag_t *sk_frag;
- dmaaddr_high_t hi_map;
-
- sk_frag = &skb_shinfo(skb)->frags[frag - 1];
-
- hi_map = pci_map_page(
- ((struct _UM_DEVICE_BLOCK *)pDevice)->pdev,
- sk_frag->page,
- sk_frag->page_offset,
- sk_frag->size, PCI_DMA_TODEVICE);
-
- MM_SetT3AddrHigh(paddr, hi_map);
- pci_unmap_addr_set(((struct _UM_PACKET *) pPacket), map[frag],
- hi_map);
- pci_unmap_len_set(((struct _UM_PACKET *) pPacket),
- map_len[frag], sk_frag->size);
- *len = sk_frag->size;
- }
-#endif
-}
-
-#define BCM5700_PHY_LOCK(pUmDevice, flags) { \
- spinlock_t *lock; \
- if ((pUmDevice)->do_global_lock) { \
- lock = &(pUmDevice)->global_lock; \
- } \
- else { \
- lock = &(pUmDevice)->phy_lock; \
- } \
- spin_lock_irqsave(lock, flags); \
-}
-
-#define BCM5700_PHY_UNLOCK(pUmDevice, flags) { \
- spinlock_t *lock; \
- if ((pUmDevice)->do_global_lock) { \
- lock = &(pUmDevice)->global_lock; \
- } \
- else { \
- lock = &(pUmDevice)->phy_lock; \
- } \
- spin_unlock_irqrestore(lock, flags); \
-}
-
-
-#define MM_ACQUIRE_UNDI_LOCK(_pDevice) \
- if (!(((PUM_DEVICE_BLOCK)(_pDevice))->do_global_lock)) { \
- unsigned long flags; \
- spin_lock_irqsave(&((PUM_DEVICE_BLOCK)(_pDevice))->undi_lock, flags); \
- ((PUM_DEVICE_BLOCK)(_pDevice))->undi_flags = flags; \
- }
-
-#define MM_RELEASE_UNDI_LOCK(_pDevice) \
- if (!(((PUM_DEVICE_BLOCK)(_pDevice))->do_global_lock)) { \
- unsigned long flags = ((PUM_DEVICE_BLOCK) (_pDevice))->undi_flags; \
- spin_unlock_irqrestore(&((PUM_DEVICE_BLOCK)(_pDevice))->undi_lock, flags); \
- }
-
-#define MM_ACQUIRE_PHY_LOCK_IN_IRQ(_pDevice) \
- if (!(((PUM_DEVICE_BLOCK)(_pDevice))->do_global_lock)) { \
- spin_lock(&((PUM_DEVICE_BLOCK)(_pDevice))->phy_lock); \
- }
-
-#define MM_RELEASE_PHY_LOCK_IN_IRQ(_pDevice) \
- if (!(((PUM_DEVICE_BLOCK)(_pDevice))->do_global_lock)) { \
- spin_unlock(&((PUM_DEVICE_BLOCK)(_pDevice))->phy_lock); \
- }
-
-#define MM_UINT_PTR(_ptr) ((unsigned long) (_ptr))
-
-#define MM_GETSTATS64(_Ctr) \
- (uint64_t) (_Ctr).Low + ((uint64_t) (_Ctr).High << 32)
-
-#define MM_GETSTATS32(_Ctr) \
- (uint32_t) (_Ctr).Low
-
-#if BITS_PER_LONG == 64
-#define MM_GETSTATS(_Ctr) (unsigned long) MM_GETSTATS64(_Ctr)
-#else
-#define MM_GETSTATS(_Ctr) (unsigned long) MM_GETSTATS32(_Ctr)
-#endif
-
-#if (LINUX_VERSION_CODE >= 0x020600)
-#define mm_copy_to_user( to, from, size ) \
- (in_atomic() ? (memcpy((to),(from),(size)), 0) : copy_to_user((to),(from),(size)))
-#define mm_copy_from_user( to, from, size ) \
- (in_atomic() ? (memcpy((to),(from),(size)), 0) : copy_from_user((to),(from),(size)))
-#else
-#define mm_copy_to_user( to, from, size ) \
- copy_to_user((to),(from),(size) )
-#define mm_copy_from_user( to, from, size ) \
- copy_from_user((to),(from),(size))
-#endif
-
-#ifndef printf
-#define printf(fmt, args...) printk(KERN_WARNING fmt, ##args)
-#endif
-
-#define DbgPrint(fmt, arg...) printk(KERN_DEBUG fmt, ##arg)
-#if defined(CONFIG_X86)
-#define DbgBreakPoint() __asm__("int $129")
-#else
-#define DbgBreakPoint()
-#endif
-#define MM_Wait(time) udelay(time)
-
-#endif