Annotation of qemu/roms/SLOF/drivers/bcm57xx/bcm57xx.h, revision 1.1.1.1

1.1       root        1: /******************************************************************************
                      2:  * Copyright (c) 2004, 2008 IBM Corporation
                      3:  * All rights reserved.
                      4:  * This program and the accompanying materials
                      5:  * are made available under the terms of the BSD License
                      6:  * which accompanies this distribution, and is available at
                      7:  * http://www.opensource.org/licenses/bsd-license.php
                      8:  *
                      9:  * Contributors:
                     10:  *     IBM Corporation - initial implementation
                     11:  *****************************************************************************/
                     12: 
                     13: #include "netdriver_int.h"
                     14: #include "types.h"
                     15: 
                     16: // compiler switches
                     17: 
                     18: // Debug switches
                     19: //#define BCM_DEBUG    // main debug switch, w/o it the other ones don't work
                     20: //#define BCM_SHOW_RCV
                     21: //#define BCM_SHOW_RCV_DATA
                     22: //#define BCM_SHOW_XMIT
                     23: //#define BCM_SHOW_XMIT_DATA
                     24: //#define BCM_SHOW_XMIT_STATS
                     25: //#define BCM_SHOW_IDX
                     26: //#define BCM_SHOW_STATS
                     27: //#define BCM_SHOW_ASF_REGS
                     28: 
                     29: // Switch to enable SW AUTO-NEG
                     30: // don't try, it's still incomplete
                     31: //#define BCM_SW_AUTONEG
                     32: 
                     33: /*
                     34:  * used register offsets
                     35:  */
                     36: // PCI command register
                     37: #define PCI_COM_R               ( (u16_t) 0x0004 )
                     38: // PCI Cache Line Size register
                     39: #define PCI_CACHELS_R           ( (u16_t) 0x000c )
                     40: // PCI bar1 register
                     41: #define PCI_BAR1_R              ( (u16_t) 0x0010 )
                     42: // PCI bar2 register
                     43: #define PCI_BAR2_R              ( (u16_t) 0x0014 )
                     44: // PCI bar1 register
                     45: #define PCI_SUBID_R             ( (u16_t) 0x002e )
                     46: // PCI-X Comand register
                     47: #define PCI_X_COM_R             ( (u16_t) 0x0042 )
                     48: // Message Data Register
                     49: #define MSG_DATA_R             ( (u16_t) 0x0064 )
                     50: // PCI misc host contrl register
                     51: #define PCI_MISC_HCTRL_R        ( (u16_t) 0x0068 )
                     52: // DMA Read/Write Control register
                     53: #define DMA_RW_CTRL_R           ( (u16_t) 0x006c )
                     54: // PCI State register
                     55: #define PCI_STATE_R            ( (u16_t) 0x0070 )
                     56: // PCI_Clock Control register
                     57: #define PCI_CLK_CTRL_R         ( (u16_t) 0x0074 )
                     58: // Register Base Address Register
                     59: #define REG_BASE_ADDR_REG      ( (u16_t) 0x0078 )
                     60: // Memory Window Base Address Register
                     61: #define MEM_BASE_ADDR_REG      ( (u16_t) 0x007c )
                     62: // Register Data Register
                     63: #define REG_DATA_REG           ( (u16_t) 0x0080 )
                     64: // Memory Window Data Register
                     65: #define MEM_DATA_REG           ( (u16_t) 0x0084 )
                     66: // MAC Function register
                     67: #define MAC_FUNC_R             ( (u16_t) 0x00b8 )
                     68: // Interrupt Mailbox 0 register
                     69: #define INT_MBX0_R              ( (u16_t) 0x0204 )
                     70: // Ethernet MAC Mode register
                     71: #define ETH_MAC_MODE_R          ( (u16_t) 0x0400 )
                     72: // Ethernet MAC Addresses registers
                     73: #define MAC_ADDR_OFFS_HI( idx )        ( (u16_t) ( (idx*2 + 0)*sizeof( u32_t ) + 0x0410 ) )
                     74: #define MAC_ADDR_OFFS_LO( idx )        ( (u16_t) ( (idx*2 + 1)*sizeof( u32_t ) + 0x0410 ) )
                     75: // Ethernet MAC Status register
                     76: #define ETH_MAC_STAT_R         ( (u16_t) 0x0404 )
                     77: // Ethernet MAC Event Enable register
                     78: #define ETH_MAC_EVT_EN_R       ( (u16_t) 0x0408 )
                     79: // Ethernet Transmit Random Backoff register
                     80: #define ETH_TX_RND_BO_R         ( (u16_t) 0x0438 )
                     81: // Receive MTU Size register
                     82: #define RX_MTU_SIZE_R           ( (u16_t) 0x043c )
                     83: // Transmit 1000BASE-X Auto Negotiation register
                     84: #define TX_1000BX_AUTONEG_R    ( (u16_t) 0x0444 )
                     85: // Receive 1000BASE-X Auto Negotiation register
                     86: #define RX_1000BX_AUTONEG_R    ( (u16_t) 0x0448 )
                     87: // MI Communication register
                     88: #define MI_COM_R                ( (u16_t) 0x044c )
                     89: // MI Status Register
                     90: #define MI_STATUS_R             ( (u16_t) 0x0450 )
                     91: // MI Mode register
                     92: #define MI_MODE_R              ( (u16_t) 0x0454 )
                     93: // Transmit MAC Mode register
                     94: #define TX_MAC_MODE_R           ( (u16_t) 0x045c )
                     95: // Transmit MAC Length register
                     96: #define TX_MAC_LEN_R            ( (u16_t) 0x0464 )
                     97: // Receive MAC Mode register
                     98: #define RX_MAC_MODE_R           ( (u16_t) 0x0468 )
                     99: // MAC Hash 0 register* VPD Config:
                    100: #define MAC_HASH0_R            ( (u16_t) 0x0470 )
                    101: // MAC Hash 1 register
                    102: #define MAC_HASH1_R            ( (u16_t) 0x0474 )
                    103: // MAC Hash 2 register
                    104: #define MAC_HASH2_R            ( (u16_t) 0x0478 )
                    105: // MAC Hash 3 register
                    106: #define MAC_HASH3_R            ( (u16_t) 0x047c )
                    107: // Receive Rules Control register
                    108: #define RX_RULE_CTRL_R( idx )  ( (u16_t) ( idx*8 + 0x0480 ) )
                    109: // Receive Rules Value register
                    110: #define RX_RULE_VAL_R( idx )   ( (u16_t) ( idx*8 + 0x0484 ) )
                    111: // Receive Rules Configuration register
                    112: #define RX_RULE_CFG_R           ( (u16_t) 0x0500 )
                    113: // Low Watermark Max Receive Frames register
                    114: #define LOW_WMARK_MAX_RXFRAM_R  ( (u16_t) 0x0504 )
                    115: // SerDes Control Register
                    116: #define SERDES_CTRL_R           ( (u16_t) 0x0590 )
                    117: // Hardware Auto Negotiation Control Register
                    118: #define HW_AUTONEG_CTRL_R       ( (u16_t) 0x05B0 )
                    119: // Hardware Auto Negotiation Status Register
                    120: #define HW_AUTONEG_STAT_R       ( (u16_t) 0x05B4 )
                    121: // Send Data Initiator Mode register
                    122: #define TX_DAT_INIT_MODE_R      ( (u16_t) 0x0c00 )
                    123: // Send Data Completion Mode register
                    124: #define TX_DAT_COMPL_MODE_R     ( (u16_t) 0x1000 )
                    125: // Send BD Ring Selector Mode register
                    126: #define TX_BD_RING_SEL_MODE_R   ( (u16_t) 0x1400 )
                    127: // Send BD Initiator Mode register
                    128: #define TX_BD_INIT_MODE_R       ( (u16_t) 0x1800 )
                    129: // Send BD Completion Mode register
                    130: #define TX_BD_COMPL_MODE_R      ( (u16_t) 0x1c00 )
                    131: // Receive List Placement Mode register
                    132: #define RX_LST_PLACE_MODE_R     ( (u16_t) 0x2000 )
                    133: // Receive List Placement Configuration register
                    134: #define RX_LST_PLACE_CFG_R      ( (u16_t) 0x2010 )
                    135: // Receive List Placement Statistics Enable Mask register
                    136: #define RX_LST_PLACE_STAT_EN_R ( (u16_t) 0x2018 )
                    137: // Receive Data & Receive BD Initiator Mode register
                    138: #define RX_DAT_BD_INIT_MODE_R   ( (u16_t) 0x2400 )
                    139: // Receive Data Completion Mode register
                    140: #define RX_DAT_COMPL_MODE_R     ( (u16_t) 0x2800 )
                    141: // Receive BD Initiator Mode register
                    142: #define RX_BD_INIT_MODE_R       ( (u16_t) 0x2c00 )
                    143: // Standard Receive Producer Ring Replenish Threshhold register
                    144: #define STD_RXPR_REP_THR_R      ( (u16_t) 0x2c18 )
                    145: // Receive BD Completion Mode register
                    146: #define RX_BD_COMPL_MODE_R      ( (u16_t) 0x3000 )
                    147: // Receive List Selector Mode register
                    148: #define RX_LST_SEL_MODE_R      ( (u16_t) 0x3400 )
                    149: // MBUF Cluster Free Mode register
                    150: #define MBUF_CLSTR_FREE_MODE_R ( (u16_t) 0x3800 )
                    151: // Host Coalescing Mode register
                    152: #define HOST_COAL_MODE_R        ( (u16_t) 0x3c00 )
                    153: // Receive Coalescing Ticks register
                    154: #define RX_COAL_TICKS_R         ( (u16_t) 0x3c08 )
                    155: // Send Coalescing Ticks register
                    156: #define TX_COAL_TICKS_R         ( (u16_t) 0x3c0c )
                    157: // Receive Max Coalesced BD Count register
                    158: #define RX_COAL_MAX_BD_R        ( (u16_t) 0x3c10 )
                    159: // Send Max Coalesced BD Count register
                    160: #define TX_COAL_MAX_BD_R        ( (u16_t) 0x3c14 )
                    161: // Receive Coalescing Ticks During Int register
                    162: #define RX_COAL_TICKS_INT_R     ( (u16_t) 0x3c18 )
                    163: // Send Coalescing Ticks During Int register
                    164: #define TX_COAL_TICKS_INT_R     ( (u16_t) 0x3c1c )
                    165: // Receive Max Coalesced BD Count During Int register
                    166: #define RX_COAL_MAX_BD_INT_R    ( (u16_t) 0x3c18 )
                    167: // Send Max Coalesced BD Count During Int register
                    168: #define TX_COAL_MAX_BD_INT_R    ( (u16_t) 0x3c1c )
                    169: // Statistics Ticks Counter register
                    170: #define STAT_TICK_CNT_R                ( (u16_t) 0x3c28 )
                    171: // Status Block Host Address Low register
                    172: #define STB_HOST_ADDR_HI_R      ( (u16_t) 0x3c38 )
                    173: // Status Block Host Address High register
                    174: #define STB_HOST_ADDR_LO_R     ( (u16_t) 0x3c3c )
                    175: // Statistsics Base Adress register
                    176: #define STAT_NIC_ADDR_R                ( (u16_t) 0x3c40 )
                    177: // Status Block Base Address register
                    178: #define STB_NIC_ADDR_R         ( (u16_t) 0x3c44 )
                    179: // Memory Arbiter Mode register
                    180: #define MEMARB_MODE_R           ( (u16_t) 0x4000 )
                    181: // Buffer Manager Mode register
                    182: #define BUF_MAN_MODE_R          ( (u16_t) 0x4400 )
                    183: // MBuf Pool Address register
                    184: #define MBUF_POOL_ADDR_R       ( (u16_t) 0x4408 )
                    185: // MBuf Pool Length register
                    186: #define MBUF_POOL_LEN_R                ( (u16_t) 0x440c )
                    187: // Read DMA Mbuf Low Watermark register
                    188: #define DMA_RMBUF_LOW_WMARK_R   ( (u16_t) 0x4410 )
                    189: // MAC Rx Mbuf Low Watermark register
                    190: #define MAC_RXMBUF_LOW_WMARK_R  ( (u16_t) 0x4414 )
                    191: // Mbuf High Watermark register
                    192: #define MBUF_HIGH_WMARK_R       ( (u16_t) 0x4418 )
                    193: // DMA Descriptor Pool Address register
                    194: #define DMA_DESC_POOL_ADDR_R   ( (u16_t) 0x442c )
                    195: // DMA Descriptor Pool Length register
                    196: #define DMA_DESC_POOL_LEN_R    ( (u16_t) 0x4430 )
                    197: // DMA Descriptor Low Watermark register
                    198: #define DMA_DESC_LOW_WM_R      ( (u16_t) 0x4434 )
                    199: // DMA Descriptor HIGH Watermark register
                    200: #define DMA_DESC_HIGH_WM_R     ( (u16_t) 0x4438 )
                    201: // Read DMA Mode register
                    202: #define RD_DMA_MODE_R           ( (u16_t) 0x4800 )
                    203: // Write DMA Mode register
                    204: #define WR_DMA_MODE_R           ( (u16_t) 0x4c00 )
                    205: // FTQ Reset register
                    206: #define FTQ_RES_R               ( (u16_t) 0x5c00 )
                    207: // MSI Mode register
                    208: #define MSI_MODE_R             ( (u16_t) 0x6000 )
                    209: // DMA completion Mode register
                    210: #define DMA_COMPL_MODE_R       ( (u16_t) 0x6400 )
                    211: // Mode Control register
                    212: #define MODE_CTRL_R             ( (u16_t) 0x6800 )
                    213: // Misc Configuration register
                    214: #define MISC_CFG_R              ( (u16_t) 0x6804 )
                    215: // Misc Local Control register
                    216: #define MISC_LOCAL_CTRL_R       ( (u16_t) 0x6808 )
                    217: // RX-Risc Mode Register
                    218: #define RX_CPU_MODE_R          ( (u16_t) 0x5000 )
                    219: // RX-Risc State Register
                    220: #define RX_CPU_STATE_R         ( (u16_t) 0x5004 )
                    221: // RX-Risc Program Counter
                    222: #define RX_CPU_PC_R            ( (u16_t) 0x501c )
                    223: // RX-Risc Event Register
                    224: #define RX_CPU_EVENT_R         ( (u16_t) 0x6810 )
                    225: // MDI Control register
                    226: #define MDI_CTRL_R             ( (u16_t) 0x6844 )
                    227: // WOL Mode register
                    228: #define WOL_MODE_R             ( (u16_t) 0x6880 )
                    229: // WOL Config register
                    230: #define WOL_CFG_R              ( (u16_t) 0x6884 )
                    231: // WOL Status register
                    232: #define WOL_STATUS_R           ( (u16_t) 0x6888 )
                    233: 
                    234: // ASF Control register
                    235: #define ASF_CTRL_R             ( (u16_t) 0x6c00 )
                    236: // ASF Watchdog Timer register
                    237: #define ASF_WATCHDOG_TIMER_R   ( (u16_t) 0x6c0c )
                    238: // ASF Heartbeat Timer register
                    239: #define ASF_HEARTBEAT_TIMER_R  ( (u16_t) 0x6c10 )
                    240: // Poll ASF Timer register
                    241: #define ASF_POLL_TIMER_R       ( (u16_t) 0x6c14 )
                    242: // Poll Legacy Timer register
                    243: #define POLL_LEGACY_TIMER_R    ( (u16_t) 0x6c18 )
                    244: // Retransmission Timer register
                    245: #define RETRANSMISSION_TIMER_R ( (u16_t) 0x6c1c )
                    246: // Time Stamp Counter register
                    247: #define TIME_STAMP_COUNTER_R   ( (u16_t) 0x6c20 )
                    248: 
                    249: // NVM Command register
                    250: #define NVM_COM_R              ( (u16_t) 0x7000 )
                    251: // NVM Write register
                    252: #define NVM_WRITE_R            ( (u16_t) 0x7008 )
                    253: // NVM Address register
                    254: #define NVM_ADDR_R             ( (u16_t) 0x700c )
                    255: // NVM Read registertg3_phy_copper_begin
                    256: #define NVM_READ_R             ( (u16_t) 0x7010 )
                    257: // NVM Access register
                    258: #define NVM_ACC_R              ( (u16_t) 0x7024 )
                    259: // NVM Config 1 register
                    260: #define NVM_CFG1_R             ( (u16_t) 0x7014 )
                    261: // Software arbitration register
                    262: #define SW_ARB_R                ( (u16_t) 0x7020 )
                    263: 
                    264: /*
                    265:  * useful def's
                    266:  */
                    267: #define rd08(a)          (u08_t) snk_kernel_interface->io_read((void*)(a),1)
                    268: #define rd16(a)          (u16_t) snk_kernel_interface->io_read((void*)(a),2)
                    269: #define rd32(a)          (u32_t) snk_kernel_interface->io_read((void*)(a),4)
                    270: #define wr08(a,v)        snk_kernel_interface->io_write((void*)(a),(u32_t)(v),1)
                    271: #define wr16(a,v)        snk_kernel_interface->io_write((void*)(a),(u32_t)(v),2)
                    272: #define wr32(a,v)        snk_kernel_interface->io_write((void*)(a),(u32_t)(v),4)
                    273: #define printk           snk_kernel_interface->print
                    274: #define us_delay         snk_kernel_interface->us_delay
                    275: #define ms_delay         snk_kernel_interface->ms_delay
                    276: 
                    277: #define BIT08( bit )     ( (u08_t) 0x1 << (bit) )
                    278: #define BIT16( bit )     ( (u16_t) 0x1 << (bit) )
                    279: #define BIT32( bit )     ( (u32_t) 0x1 << (bit) )
                    280: 
                    281: /*
                    282:  * type definition
                    283:  */
                    284: 
                    285: extern snk_kernel_t       *snk_kernel_interface;
                    286: 
                    287: 
                    288: /*
                    289:  * inline functions
                    290:  */
                    291: // memory barrier function implementation
                    292: static inline void
                    293: mb()
                    294: {
                    295:         asm volatile( "sync;" );
                    296: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.