
/******************************************************************************/
/*                                                                            */
/* 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.                 */
/*                                                                            */
/* History:                                                                   */
/*    02/25/00 Hav Khauv        Initial version.                              */
/******************************************************************************/

#ifndef LM_H
#define LM_H

#include "bcm570x_queue.h"
#include "bcm570x_bits.h"



/******************************************************************************/
/* Basic types. */
/******************************************************************************/

typedef char           LM_CHAR,    *PLM_CHAR;
typedef unsigned int   LM_UINT,    *PLM_UINT;
typedef unsigned char  LM_UINT8,   *PLM_UINT8;
typedef unsigned short LM_UINT16,  *PLM_UINT16;
typedef unsigned int   LM_UINT32,  *PLM_UINT32;
typedef unsigned int   LM_COUNTER, *PLM_COUNTER;
typedef void           LM_VOID,    *PLM_VOID;
typedef char           LM_BOOL,    *PLM_BOOL;

/* 64bit value. */
typedef struct {
#ifdef BIG_ENDIAN_HOST
    LM_UINT32 High;
    LM_UINT32 Low;
#else /* BIG_ENDIAN_HOST */
    LM_UINT32 Low;
    LM_UINT32 High;
#endif /* !BIG_ENDIAN_HOST */
} LM_UINT64, *PLM_UINT64;

typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;

/* void LM_INC_PHYSICAL_ADDRESS(PLM_PHYSICAL_ADDRESS pAddr,LM_UINT32 IncSize) */
#define LM_INC_PHYSICAL_ADDRESS(pAddr, IncSize)             \
    {                                                       \
        LM_UINT32 OrgLow;                                   \
                                                            \
        OrgLow = (pAddr)->Low;                              \
        (pAddr)->Low += IncSize;                            \
        if((pAddr)->Low < OrgLow) {                         \
            (pAddr)->High++; /* Wrap around. */             \
        }                                                   \
    }


#ifndef NULL
#define NULL                ((void *) 0)
#endif /* NULL */

#ifndef OFFSETOF
#define OFFSETOF(_s, _m)    (MM_UINT_PTR(&(((_s *) 0)->_m)))
#endif /* OFFSETOF */



/******************************************************************************/
/* Simple macros. */
/******************************************************************************/

#define IS_ETH_BROADCAST(_pEthAddr)                                         \
    (((unsigned char *) (_pEthAddr))[0] == ((unsigned char) 0xff))

#define IS_ETH_MULTICAST(_pEthAddr)                                         \
    (((unsigned char *) (_pEthAddr))[0] & ((unsigned char) 0x01))

#define IS_ETH_ADDRESS_EQUAL(_pEtherAddr1, _pEtherAddr2)                    \
    ((((unsigned char *) (_pEtherAddr1))[0] ==                              \
    ((unsigned char *) (_pEtherAddr2))[0]) &&                               \
    (((unsigned char *) (_pEtherAddr1))[1] ==                               \
    ((unsigned char *) (_pEtherAddr2))[1]) &&                               \
    (((unsigned char *) (_pEtherAddr1))[2] ==                               \
    ((unsigned char *) (_pEtherAddr2))[2]) &&                               \
    (((unsigned char *) (_pEtherAddr1))[3] ==                               \
    ((unsigned char *) (_pEtherAddr2))[3]) &&                               \
    (((unsigned char *) (_pEtherAddr1))[4] ==                               \
    ((unsigned char *) (_pEtherAddr2))[4]) &&                               \
    (((unsigned char *) (_pEtherAddr1))[5] ==                               \
    ((unsigned char *) (_pEtherAddr2))[5]))

#define COPY_ETH_ADDRESS(_Src, _Dst)                                        \
    ((unsigned char *) (_Dst))[0] = ((unsigned char *) (_Src))[0];          \
    ((unsigned char *) (_Dst))[1] = ((unsigned char *) (_Src))[1];          \
    ((unsigned char *) (_Dst))[2] = ((unsigned char *) (_Src))[2];          \
    ((unsigned char *) (_Dst))[3] = ((unsigned char *) (_Src))[3];          \
    ((unsigned char *) (_Dst))[4] = ((unsigned char *) (_Src))[4];          \
    ((unsigned char *) (_Dst))[5] = ((unsigned char *) (_Src))[5];



/******************************************************************************/
/* Constants. */
/******************************************************************************/

#define ETHERNET_ADDRESS_SIZE           6
#define ETHERNET_PACKET_HEADER_SIZE     14
#define MIN_ETHERNET_PACKET_SIZE        64      /* with 4 byte crc. */
#define MAX_ETHERNET_PACKET_SIZE        1518    /* with 4 byte crc. */
#define MIN_ETHERNET_PACKET_SIZE_NO_CRC 60
#define MAX_ETHERNET_PACKET_SIZE_NO_CRC 1514
#define MAX_ETHERNET_PACKET_BUFFER_SIZE 1536    /* A nice even number. */

#ifndef LM_MAX_MC_TABLE_SIZE
#define LM_MAX_MC_TABLE_SIZE            32
#endif /* LM_MAX_MC_TABLE_SIZE */
#define LM_MC_ENTRY_SIZE                (ETHERNET_ADDRESS_SIZE+1)
#define LM_MC_INSTANCE_COUNT_INDEX      (LM_MC_ENTRY_SIZE-1)


/* Receive filter masks. */
#define LM_ACCEPT_UNICAST               0x0001
#define LM_ACCEPT_MULTICAST             0x0002
#define LM_ACCEPT_ALL_MULTICAST         0x0004
#define LM_ACCEPT_BROADCAST             0x0008
#define LM_ACCEPT_ERROR_PACKET          0x0010

#define LM_PROMISCUOUS_MODE             0x10000



/******************************************************************************/
/* PCI registers. */
/******************************************************************************/

#define PCI_VENDOR_ID_REG               0x00
#define PCI_DEVICE_ID_REG               0x02

#define PCI_COMMAND_REG                 0x04
#define PCI_IO_SPACE_ENABLE             0x0001
#define PCI_MEM_SPACE_ENABLE            0x0002
#define PCI_BUSMASTER_ENABLE            0x0004
#define PCI_MEMORY_WRITE_INVALIDATE     0x0010
#define PCI_PARITY_ERROR_ENABLE         0x0040
#define PCI_SYSTEM_ERROR_ENABLE         0x0100
#define PCI_FAST_BACK_TO_BACK_ENABLE    0x0200

#define PCI_STATUS_REG                  0x06
#define PCI_REV_ID_REG                  0x08

#define PCI_CACHE_LINE_SIZE_REG         0x0c

#define PCI_IO_BASE_ADDR_REG            0x10
#define PCI_IO_BASE_ADDR_MASK           0xfffffff0

#define PCI_MEM_BASE_ADDR_LOW           0x10
#define PCI_MEM_BASE_ADDR_HIGH          0x14

#define PCI_SUBSYSTEM_VENDOR_ID_REG     0x2c
#define PCI_SUBSYSTEM_ID_REG            0x2e
#define PCI_INT_LINE_REG                0x3c

#define PCIX_CAP_REG                    0x40
#define PCIX_ENABLE_RELAXED_ORDERING    BIT_17

/******************************************************************************/
/* Fragment structure. */
/******************************************************************************/

typedef struct {
    LM_UINT32 FragSize;
    LM_PHYSICAL_ADDRESS FragBuf;
} LM_FRAG, *PLM_FRAG;

typedef struct {
    /* FragCount is initialized for the caller to the maximum array size, on */
    /* return FragCount is the number of the actual fragments in the array. */
    LM_UINT32 FragCount;

    /* Total buffer size. */
    LM_UINT32 TotalSize;

    /* Fragment array buffer. */
    LM_FRAG Fragments[1];
} LM_FRAG_LIST, *PLM_FRAG_LIST;

#define DECLARE_FRAG_LIST_BUFFER_TYPE(_FRAG_LIST_TYPE_NAME, _MAX_FRAG_COUNT) \
    typedef struct {                                                         \
        LM_FRAG_LIST FragList;                                               \
        LM_FRAG FragListBuffer[_MAX_FRAG_COUNT-1];                           \
    } _FRAG_LIST_TYPE_NAME, *P##_FRAG_LIST_TYPE_NAME



/******************************************************************************/
/* Status codes. */
/******************************************************************************/

#define LM_STATUS_SUCCESS                                       0
#define LM_STATUS_FAILURE                                       1

#define LM_STATUS_INTERRUPT_ACTIVE                              2
#define LM_STATUS_INTERRUPT_NOT_ACTIVE                          3

#define LM_STATUS_LINK_ACTIVE                                   4
#define LM_STATUS_LINK_DOWN                                     5
#define LM_STATUS_LINK_SETTING_MISMATCH                         6

#define LM_STATUS_TOO_MANY_FRAGMENTS                            7
#define LM_STATUS_TRANSMIT_ABORTED                              8
#define LM_STATUS_TRANSMIT_ERROR                                9
#define LM_STATUS_RECEIVE_ABORTED                               10
#define LM_STATUS_RECEIVE_ERROR                                 11
#define LM_STATUS_INVALID_PACKET_SIZE                           12
#define LM_STATUS_OUT_OF_MAP_REGISTERS                          13
#define LM_STATUS_UNKNOWN_ADAPTER                               14

typedef LM_UINT LM_STATUS, *PLM_STATUS;



/******************************************************************************/
/* Requested media type. */
/******************************************************************************/

#define LM_REQUESTED_MEDIA_TYPE_AUTO                            0
#define LM_REQUESTED_MEDIA_TYPE_BNC                             1
#define LM_REQUESTED_MEDIA_TYPE_UTP_AUTO                        2
#define LM_REQUESTED_MEDIA_TYPE_UTP_10MBPS                      3
#define LM_REQUESTED_MEDIA_TYPE_UTP_10MBPS_FULL_DUPLEX          4
#define LM_REQUESTED_MEDIA_TYPE_UTP_100MBPS                     5
#define LM_REQUESTED_MEDIA_TYPE_UTP_100MBPS_FULL_DUPLEX         6
#define LM_REQUESTED_MEDIA_TYPE_UTP_1000MBPS                    7
#define LM_REQUESTED_MEDIA_TYPE_UTP_1000MBPS_FULL_DUPLEX        8
#define LM_REQUESTED_MEDIA_TYPE_FIBER_100MBPS                   9
#define LM_REQUESTED_MEDIA_TYPE_FIBER_100MBPS_FULL_DUPLEX       10
#define LM_REQUESTED_MEDIA_TYPE_FIBER_1000MBPS                  11
#define LM_REQUESTED_MEDIA_TYPE_FIBER_1000MBPS_FULL_DUPLEX      12
#define LM_REQUESTED_MEDIA_TYPE_MAC_LOOPBACK                    0xfffe
#define LM_REQUESTED_MEDIA_TYPE_PHY_LOOPBACK                    0xffff

typedef LM_UINT32 LM_REQUESTED_MEDIA_TYPE, *PLM_REQUESTED_MEDIA_TYPE;



/******************************************************************************/
/* Media type. */
/******************************************************************************/

#define LM_MEDIA_TYPE_UNKNOWN                                   -1
#define LM_MEDIA_TYPE_AUTO                                      0
#define LM_MEDIA_TYPE_UTP                                       1
#define LM_MEDIA_TYPE_BNC                                       2
#define LM_MEDIA_TYPE_AUI                                       3
#define LM_MEDIA_TYPE_FIBER                                     4

typedef LM_UINT32 LM_MEDIA_TYPE, *PLM_MEDIA_TYPE;



/******************************************************************************/
/* Line speed. */
/******************************************************************************/

#define LM_LINE_SPEED_UNKNOWN                                   0
#define LM_LINE_SPEED_10MBPS                                    1
#define LM_LINE_SPEED_100MBPS                                   2
#define LM_LINE_SPEED_1000MBPS                                  3

typedef LM_UINT32 LM_LINE_SPEED, *PLM_LINE_SPEED;



/******************************************************************************/
/* Duplex mode. */
/******************************************************************************/

#define LM_DUPLEX_MODE_UNKNOWN                                  0
#define LM_DUPLEX_MODE_HALF                                     1
#define LM_DUPLEX_MODE_FULL                                     2

typedef LM_UINT32 LM_DUPLEX_MODE, *PLM_DUPLEX_MODE;



/******************************************************************************/
/* Power state. */
/******************************************************************************/

#define LM_POWER_STATE_D0       0
#define LM_POWER_STATE_D1       1
#define LM_POWER_STATE_D2       2
#define LM_POWER_STATE_D3       3

typedef LM_UINT32 LM_POWER_STATE, *PLM_POWER_STATE;



/******************************************************************************/
/* Task offloading. */
/******************************************************************************/

#define LM_TASK_OFFLOAD_NONE                    0x0000
#define LM_TASK_OFFLOAD_TX_IP_CHECKSUM          0x0001
#define LM_TASK_OFFLOAD_RX_IP_CHECKSUM          0x0002
#define LM_TASK_OFFLOAD_TX_TCP_CHECKSUM         0x0004
#define LM_TASK_OFFLOAD_RX_TCP_CHECKSUM         0x0008
#define LM_TASK_OFFLOAD_TX_UDP_CHECKSUM         0x0010
#define LM_TASK_OFFLOAD_RX_UDP_CHECKSUM         0x0020
#define LM_TASK_OFFLOAD_TCP_SEGMENTATION        0x0040

typedef LM_UINT32 LM_TASK_OFFLOAD, *PLM_TASK_OFFLOAD;



/******************************************************************************/
/* Flow control. */
/******************************************************************************/

#define LM_FLOW_CONTROL_NONE                    0x00
#define LM_FLOW_CONTROL_RECEIVE_PAUSE           0x01
#define LM_FLOW_CONTROL_TRANSMIT_PAUSE          0x02
#define LM_FLOW_CONTROL_RX_TX_PAUSE (LM_FLOW_CONTROL_RECEIVE_PAUSE | \
    LM_FLOW_CONTROL_TRANSMIT_PAUSE)

/* This value can be or-ed with RECEIVE_PAUSE and TRANSMIT_PAUSE.  If the */
/* auto-negotiation is disabled and the RECEIVE_PAUSE and TRANSMIT_PAUSE */
/* bits are set, then flow control is enabled regardless of link partner's */
/* flow control capability. */
#define LM_FLOW_CONTROL_AUTO_PAUSE              0x80000000

typedef LM_UINT32 LM_FLOW_CONTROL, *PLM_FLOW_CONTROL;



/******************************************************************************/
/* Wake up mode. */
/******************************************************************************/

#define LM_WAKE_UP_MODE_NONE                    0
#define LM_WAKE_UP_MODE_MAGIC_PACKET            1
#define LM_WAKE_UP_MODE_NWUF                    2
#define LM_WAKE_UP_MODE_LINK_CHANGE             4

typedef LM_UINT32 LM_WAKE_UP_MODE, *PLM_WAKE_UP_MODE;



/******************************************************************************/
/* Counters. */
/******************************************************************************/

#define LM_COUNTER_FRAMES_XMITTED_OK                            0
#define LM_COUNTER_FRAMES_RECEIVED_OK                           1
#define LM_COUNTER_ERRORED_TRANSMIT_COUNT                       2
#define LM_COUNTER_ERRORED_RECEIVE_COUNT                        3
#define LM_COUNTER_RCV_CRC_ERROR                                4
#define LM_COUNTER_ALIGNMENT_ERROR                              5
#define LM_COUNTER_SINGLE_COLLISION_FRAMES                      6
#define LM_COUNTER_MULTIPLE_COLLISION_FRAMES                    7
#define LM_COUNTER_FRAMES_DEFERRED                              8
#define LM_COUNTER_MAX_COLLISIONS                               9
#define LM_COUNTER_RCV_OVERRUN                                  10
#define LM_COUNTER_XMIT_UNDERRUN                                11
#define LM_COUNTER_UNICAST_FRAMES_XMIT                          12
#define LM_COUNTER_MULTICAST_FRAMES_XMIT                        13
#define LM_COUNTER_BROADCAST_FRAMES_XMIT                        14
#define LM_COUNTER_UNICAST_FRAMES_RCV                           15
#define LM_COUNTER_MULTICAST_FRAMES_RCV                         16
#define LM_COUNTER_BROADCAST_FRAMES_RCV                         17

typedef LM_UINT32 LM_COUNTER_TYPE, *PLM_COUNTER_TYPE;



/******************************************************************************/
/* Forward definition. */
/******************************************************************************/

typedef struct _LM_DEVICE_BLOCK *PLM_DEVICE_BLOCK;
typedef struct _LM_PACKET *PLM_PACKET;



/******************************************************************************/
/* Function prototypes. */
/******************************************************************************/

LM_STATUS LM_GetAdapterInfo(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_InitializeAdapter(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_ResetAdapter(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_DisableInterrupt(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_EnableInterrupt(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_SendPacket(PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket);
LM_STATUS LM_ServiceInterrupts(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_QueueRxPackets(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_SetReceiveMask(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Mask);
LM_STATUS LM_Halt(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_Abort(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_MulticastAdd(PLM_DEVICE_BLOCK pDevice, PLM_UINT8 pMcAddress);
LM_STATUS LM_MulticastDel(PLM_DEVICE_BLOCK pDevice, PLM_UINT8 pMcAddress);
LM_STATUS LM_MulticastClear(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_SetMacAddress(PLM_DEVICE_BLOCK pDevice, PLM_UINT8 pMacAddress);
LM_STATUS LM_LoopbackAddress(PLM_DEVICE_BLOCK pDevice, PLM_UINT8 pAddress);

LM_UINT32 LM_GetCrcCounter(PLM_DEVICE_BLOCK pDevice);

LM_WAKE_UP_MODE LM_PMCapabilities(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_NwufAdd(PLM_DEVICE_BLOCK pDevice, LM_UINT32 ByteMaskSize,
    LM_UINT8 *pByteMask, LM_UINT8 *pPattern);
LM_STATUS LM_NwufRemove(PLM_DEVICE_BLOCK pDevice, LM_UINT32 ByteMaskSize,
    LM_UINT8 *pByteMask, LM_UINT8 *pPattern);
LM_STATUS LM_SetPowerState(PLM_DEVICE_BLOCK pDevice, LM_POWER_STATE PowerLevel);

LM_VOID LM_ReadPhy(PLM_DEVICE_BLOCK pDevice, LM_UINT32 PhyReg,
    PLM_UINT32 pData32);
LM_VOID LM_WritePhy(PLM_DEVICE_BLOCK pDevice, LM_UINT32 PhyReg,
    LM_UINT32 Data32);

LM_STATUS LM_ControlLoopBack(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Control);
LM_STATUS LM_SetupPhy(PLM_DEVICE_BLOCK pDevice);
int LM_BlinkLED(PLM_DEVICE_BLOCK pDevice, LM_UINT32 BlinkDuration);



/******************************************************************************/
/* These are the OS specific functions called by LMAC. */
/******************************************************************************/

LM_STATUS MM_ReadConfig16(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Offset,
    LM_UINT16 *pValue16);
LM_STATUS MM_WriteConfig16(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Offset,
    LM_UINT16 Value16);
LM_STATUS MM_ReadConfig32(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Offset,
    LM_UINT32 *pValue32);
LM_STATUS MM_WriteConfig32(PLM_DEVICE_BLOCK pDevice, LM_UINT32 Offset,
    LM_UINT32 Value32);
LM_STATUS MM_MapMemBase(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_MapIoBase(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_IndicateRxPackets(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_IndicateTxPackets(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_StartTxDma(PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket);
LM_STATUS MM_CompleteTxDma(PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket);
LM_STATUS MM_AllocateMemory(PLM_DEVICE_BLOCK pDevice, LM_UINT32 BlockSize,
    PLM_VOID *pMemoryBlockVirt);
LM_STATUS MM_AllocateSharedMemory(PLM_DEVICE_BLOCK pDevice, LM_UINT32 BlockSize,
    PLM_VOID *pMemoryBlockVirt, PLM_PHYSICAL_ADDRESS pMemoryBlockPhy,
    LM_BOOL Cached);
LM_STATUS MM_GetConfig(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_IndicateStatus(PLM_DEVICE_BLOCK pDevice, LM_STATUS Status);
LM_STATUS MM_InitializeUmPackets(PLM_DEVICE_BLOCK pDevice);
LM_STATUS MM_FreeRxBuffer(PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket);
LM_STATUS MM_CoalesceTxBuffer(PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket);
LM_STATUS LM_MbufWorkAround(PLM_DEVICE_BLOCK pDevice);
LM_STATUS LM_SetLinkSpeed(PLM_DEVICE_BLOCK pDevice,
			  LM_REQUESTED_MEDIA_TYPE RequestedMediaType);

#if INCLUDE_5703_A0_FIX
LM_STATUS LM_Load5703DmaWFirmware(PLM_DEVICE_BLOCK pDevice);
#endif


#endif /* LM_H */

