arm: tegra: comms: Enable autopm for RAW-IP network driver.
[linux-2.6.git] / drivers / net / b44.h
index 7afeaf6..e1905a4 100644 (file)
@@ -24,6 +24,9 @@
 #define  WKUP_LEN_P3_MASK      0x7f000000 /* Pattern 3 */
 #define  WKUP_LEN_P3_SHIFT     24
 #define  WKUP_LEN_D3           0x80000000
+#define  WKUP_LEN_DISABLE      0x80808080
+#define  WKUP_LEN_ENABLE_TWO   0x80800000
+#define  WKUP_LEN_ENABLE_THREE 0x80000000
 #define B44_ISTAT      0x0020UL /* Interrupt Status */
 #define  ISTAT_LS              0x00000020 /* Link Change (B0 only) */
 #define  ISTAT_PME             0x00000040 /* Power Management Event */
@@ -94,7 +97,7 @@
 #define B44_DMARX_STAT 0x021CUL /* DMA RX Current Active Desc. + Status */
 #define  DMARX_STAT_CDMASK     0x00000fff /* Current Descriptor Mask */
 #define  DMARX_STAT_SMASK      0x0000f000 /* State Mask */
-#define  DMARX_STAT_SDISABLED  0x00000000 /* State Disbaled */
+#define  DMARX_STAT_SDISABLED  0x00000000 /* State Disabled */
 #define  DMARX_STAT_SACTIVE    0x00001000 /* State Active */
 #define  DMARX_STAT_SIDLE      0x00002000 /* State Idle Wait */
 #define  DMARX_STAT_SSTOPPED   0x00003000 /* State Stopped */
 #define  RXCONFIG_FLOW         0x00000020 /* Flow Control Enable */
 #define  RXCONFIG_FLOW_ACCEPT  0x00000040 /* Accept Unicast Flow Control Frame */
 #define  RXCONFIG_RFILT                0x00000080 /* Reject Filter */
+#define  RXCONFIG_CAM_ABSENT   0x00000100 /* CAM Absent */
 #define B44_RXMAXLEN   0x0404UL /* EMAC RX Max Packet Length */
 #define B44_TXMAXLEN   0x0408UL /* EMAC TX Max Packet Length */
 #define B44_MDIO_CTRL  0x0410UL /* EMAC MDIO Control */
 #define B44_RX_PAUSE   0x05D4UL /* MIB RX Pause Packets */
 #define B44_RX_NPAUSE  0x05D8UL /* MIB RX Non-Pause Packets */
 
-/* Silicon backplane register definitions */
-#define B44_SBIMSTATE  0x0F90UL /* SB Initiator Agent State */
-#define  SBIMSTATE_PC          0x0000000f /* Pipe Count */
-#define  SBIMSTATE_AP_MASK     0x00000030 /* Arbitration Priority */
-#define  SBIMSTATE_AP_BOTH     0x00000000 /* Use both timeslices and token */
-#define  SBIMSTATE_AP_TS       0x00000010 /* Use timeslices only */
-#define  SBIMSTATE_AP_TK       0x00000020 /* Use token only */
-#define  SBIMSTATE_AP_RSV      0x00000030 /* Reserved */
-#define  SBIMSTATE_IBE         0x00020000 /* In Band Error */
-#define  SBIMSTATE_TO          0x00040000 /* Timeout */
-#define B44_SBINTVEC   0x0F94UL /* SB Interrupt Mask */
-#define  SBINTVEC_PCI          0x00000001 /* Enable interrupts for PCI */
-#define  SBINTVEC_ENET0                0x00000002 /* Enable interrupts for enet 0 */
-#define  SBINTVEC_ILINE20      0x00000004 /* Enable interrupts for iline20 */
-#define  SBINTVEC_CODEC                0x00000008 /* Enable interrupts for v90 codec */
-#define  SBINTVEC_USB          0x00000010 /* Enable interrupts for usb */
-#define  SBINTVEC_EXTIF                0x00000020 /* Enable interrupts for external i/f */
-#define  SBINTVEC_ENET1                0x00000040 /* Enable interrupts for enet 1 */
-#define B44_SBTMSLOW   0x0F98UL /* SB Target State Low */
-#define  SBTMSLOW_RESET                0x00000001 /* Reset */
-#define  SBTMSLOW_REJECT       0x00000002 /* Reject */
-#define  SBTMSLOW_CLOCK                0x00010000 /* Clock Enable */
-#define  SBTMSLOW_FGC          0x00020000 /* Force Gated Clocks On */
-#define  SBTMSLOW_PE           0x40000000 /* Power Management Enable */
-#define  SBTMSLOW_BE           0x80000000 /* BIST Enable */
-#define B44_SBTMSHIGH  0x0F9CUL /* SB Target State High */
-#define  SBTMSHIGH_SERR                0x00000001 /* S-error */
-#define  SBTMSHIGH_INT         0x00000002 /* Interrupt */
-#define  SBTMSHIGH_BUSY                0x00000004 /* Busy */
-#define  SBTMSHIGH_GCR         0x20000000 /* Gated Clock Request */
-#define  SBTMSHIGH_BISTF       0x40000000 /* BIST Failed */
-#define  SBTMSHIGH_BISTD       0x80000000 /* BIST Done */
-#define B44_SBIDHIGH   0x0FFCUL /* SB Identification High */
-#define  SBIDHIGH_RC_MASK      0x0000000f /* Revision Code */
-#define  SBIDHIGH_CC_MASK      0x0000fff0 /* Core Code */
-#define  SBIDHIGH_CC_SHIFT     4
-#define  SBIDHIGH_VC_MASK      0xffff0000 /* Vendor Code */
-#define  SBIDHIGH_VC_SHIFT     16
-
-/* SSB PCI config space registers.  */
-#define        SSB_BAR0_WIN            0x80
-#define        SSB_BAR1_WIN            0x84
-#define        SSB_SPROM_CONTROL       0x88
-#define        SSB_BAR1_CONTROL        0x8c
-
-/* SSB core and host control registers.  */
-#define SSB_CONTROL            0x0000UL
-#define SSB_ARBCONTROL         0x0010UL
-#define SSB_ISTAT              0x0020UL
-#define SSB_IMASK              0x0024UL
-#define SSB_MBOX               0x0028UL
-#define SSB_BCAST_ADDR         0x0050UL
-#define SSB_BCAST_DATA         0x0054UL
-#define SSB_PCI_TRANS_0                0x0100UL
-#define SSB_PCI_TRANS_1                0x0104UL
-#define SSB_PCI_TRANS_2                0x0108UL
-#define SSB_SPROM              0x0800UL
-
-#define SSB_PCI_MEM            0x00000000
-#define SSB_PCI_IO             0x00000001
-#define SSB_PCI_CFG0           0x00000002
-#define SSB_PCI_CFG1           0x00000003
-#define SSB_PCI_PREF           0x00000004
-#define SSB_PCI_BURST          0x00000008
-#define SSB_PCI_MASK0          0xfc000000
-#define SSB_PCI_MASK1          0xfc000000
-#define SSB_PCI_MASK2          0xc0000000
-
 /* 4400 PHY registers */
 #define B44_MII_AUXCTRL                24      /* Auxiliary Control */
 #define  MII_AUXCTRL_DUPLEX    0x0001  /* Full Duplex */
 #define  MII_TLEDCTRL_ENABLE   0x0040
 
 struct dma_desc {
-       u32     ctrl;
-       u32     addr;
+       __le32  ctrl;
+       __le32  addr;
 };
 
 /* There are only 12 bits in the DMA engine for descriptor offsetting
@@ -322,9 +258,9 @@ struct dma_desc {
 #define RX_COPY_THRESHOLD      256
 
 struct rx_header {
-       u16     len;
-       u16     flags;
-       u16     pad[12];
+       __le16  len;
+       __le16  flags;
+       __le16  pad[12];
 };
 #define RX_HEADER_LEN  28
 
@@ -341,10 +277,12 @@ struct rx_header {
 
 struct ring_info {
        struct sk_buff          *skb;
-       DECLARE_PCI_UNMAP_ADDR(mapping);
+       dma_addr_t      mapping;
 };
 
 #define B44_MCAST_TABLE_SIZE   32
+#define B44_PHY_ADDR_NO_PHY    30
+#define B44_MDC_RATIO          5000000
 
 #define        B44_STAT_REG_DECLARE            \
        _B44(tx_good_octets)            \
@@ -405,6 +343,8 @@ B44_STAT_REG_DECLARE
 #undef _B44
 };
 
+struct ssb_device;
+
 struct b44 {
        spinlock_t              lock;
 
@@ -418,9 +358,11 @@ struct b44 {
        struct ring_info        *rx_buffers;
        struct ring_info        *tx_buffers;
 
+       struct napi_struct      napi;
+
        u32                     dma_offset;
        u32                     flags;
-#define B44_FLAG_INIT_COMPLETE 0x00000001
+#define B44_FLAG_B0_ANDLATER   0x00000001
 #define B44_FLAG_BUGGY_TXPTR   0x00000002
 #define B44_FLAG_REORDER_BUG   0x00000004
 #define B44_FLAG_PAUSE_AUTO    0x00008000
@@ -436,18 +378,15 @@ struct b44 {
 #define B44_FLAG_INTERNAL_PHY  0x10000000
 #define B44_FLAG_RX_RING_HACK  0x20000000
 #define B44_FLAG_TX_RING_HACK  0x40000000
-
-       u32                     rx_offset;
+#define B44_FLAG_WOL_ENABLE    0x80000000
 
        u32                     msg_enable;
 
        struct timer_list       timer;
 
-       struct net_device_stats stats;
        struct b44_hw_stats     hw_stats;
 
-       void __iomem            *regs;
-       struct pci_dev          *pdev;
+       struct ssb_device       *sdev;
        struct net_device       *dev;
 
        dma_addr_t              rx_ring_dma, tx_ring_dma;
@@ -455,8 +394,7 @@ struct b44 {
        u32                     rx_pending;
        u32                     tx_pending;
        u8                      phy_addr;
-       u8                      core_unit;
-
+       u8                      force_copybreak;
        struct mii_if_info      mii_if;
 };