atl1c: remove SMB/CMB DMA related code
authorHuang, Xiong <xiong@qca.qualcomm.com>
Tue, 17 Apr 2012 19:32:29 +0000 (19:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Apr 2012 19:35:31 +0000 (15:35 -0400)
l1c & later chips don't support DMA for SMB.
CMB is removed from hardware.
reg(15C8) is used to trig interrupt by tpd threshold.

Signed-off-by: xiong <xiong@qca.qualcomm.com>
Tested-by: Liu David <dwliu@qca.qualcomm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/atheros/atl1c/atl1c.h
drivers/net/ethernet/atheros/atl1c/atl1c_hw.h
drivers/net/ethernet/atheros/atl1c/atl1c_main.c

index cf82b74..93b5991 100644 (file)
@@ -426,10 +426,6 @@ struct atl1c_hw {
 #define ATL1C_FPGA_VERSION              0x8000
        u16 link_cap_flags;
 #define ATL1C_LINK_CAP_1000M           0x0001
-       u16 cmb_tpd;
-       u16 cmb_rrd;
-       u16 cmb_rx_timer; /* 2us resolution */
-       u16 cmb_tx_timer;
        u32 smb_timer;
 
        u16 rrd_thresh; /* Threshold of number of RRD produced to trigger
@@ -449,8 +445,7 @@ struct atl1c_hw {
 
 /*
  * atl1c_ring_header represents a single, contiguous block of DMA space
- * mapped for the three descriptor rings (tpd, rfd, rrd) and the two
- * message blocks (cmb, smb) described below
+ * mapped for the three descriptor rings (tpd, rfd, rrd) described below
  */
 struct atl1c_ring_header {
        void *desc;             /* virtual address */
@@ -524,16 +519,6 @@ struct atl1c_rrd_ring {
        u16 next_to_clean;
 };
 
-struct atl1c_cmb {
-       void *cmb;
-       dma_addr_t dma;
-};
-
-struct atl1c_smb {
-       void *smb;
-       dma_addr_t dma;
-};
-
 /* board specific private data structure */
 struct atl1c_adapter {
        struct net_device   *netdev;
@@ -571,8 +556,6 @@ struct atl1c_adapter {
        struct atl1c_tpd_ring tpd_ring[AT_MAX_TRANSMIT_QUEUE];
        struct atl1c_rfd_ring rfd_ring;
        struct atl1c_rrd_ring rrd_ring;
-       struct atl1c_cmb cmb;
-       struct atl1c_smb smb;
        u32 bd_number;     /* board number;*/
 };
 
index f5c7473..caff2ae 100644 (file)
@@ -447,8 +447,6 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw);
  */
 #define REG_RX_BASE_ADDR_HI            0x1540
 #define REG_TX_BASE_ADDR_HI            0x1544
-#define REG_SMB_BASE_ADDR_HI           0x1548
-#define REG_SMB_BASE_ADDR_LO           0x154C
 #define REG_RFD0_HEAD_ADDR_LO          0x1550
 #define REG_RFD_RING_SIZE              0x1560
 #define RFD_RING_SIZE_MASK             0x0FFF
@@ -461,7 +459,6 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw);
 #define REG_NTPD_HEAD_ADDR_LO          0x1580
 #define REG_TPD_RING_SIZE              0x1584
 #define TPD_RING_SIZE_MASK             0xFFFF
-#define REG_CMB_BASE_ADDR_LO           0x1588
 
 /* TXQ Control Register */
 #define REG_TXQ_CTRL                   0x1590
@@ -556,13 +553,10 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw);
 #define MAC_CTRL_SMB_DIS               0x1000000
 #define DMA_CTRL_SMB_NOW               0x80000000
 
-/* CMB/SMB Control Register */
+/* INT-triggle/SMB Control Register */
 #define REG_SMB_STAT_TIMER             0x15C4  /* 2us resolution */
 #define SMB_STAT_TIMER_MASK            0xFFFFFF
-#define REG_CMB_TPD_THRESH             0x15C8
-#define CMB_TPD_THRESH_MASK            0xFFFF
-#define REG_CMB_TX_TIMER               0x15CC  /* 2us resolution */
-#define CMB_TX_TIMER_MASK              0xFFFF
+#define REG_TINT_TPD_THRESH             0x15C8 /* tpd th to trig intrrupt */
 
 /* Mail box */
 #define MB_RFDX_PROD_IDX_MASK          0xFFFF
index 4f19f5c..c4d5929 100644 (file)
@@ -733,8 +733,6 @@ static int __devinit atl1c_sw_init(struct atl1c_adapter *adapter)
 
        hw->ict = 50000;                /* 100ms */
        hw->smb_timer = 200000;         /* 400ms */
-       hw->cmb_tpd = 4;
-       hw->cmb_tx_timer = 1;           /* 2 us  */
        hw->rx_imt = 200;
        hw->tx_imt = 1000;
 
@@ -943,8 +941,7 @@ static int atl1c_setup_ring_resources(struct atl1c_adapter *adapter)
                sizeof(struct atl1c_tpd_desc) * tpd_ring->count * 2 +
                sizeof(struct atl1c_rx_free_desc) * rx_desc_count +
                sizeof(struct atl1c_recv_ret_status) * rx_desc_count +
-               sizeof(struct atl1c_hw_stats) +
-               8 * 4 + 8 * 2;
+               8 * 4;
 
        ring_header->desc = pci_alloc_consistent(pdev, ring_header->size,
                                &ring_header->dma);
@@ -977,8 +974,6 @@ static int atl1c_setup_ring_resources(struct atl1c_adapter *adapter)
                rrd_ring->count;
        offset += roundup(rrd_ring->size, 8);
 
-       adapter->smb.dma = ring_header->dma + offset;
-       adapter->smb.smb = (u8 *)ring_header->desc + offset;
        return 0;
 
 err_nomem:
@@ -993,8 +988,6 @@ static void atl1c_configure_des_ring(struct atl1c_adapter *adapter)
        struct atl1c_rrd_ring *rrd_ring = &adapter->rrd_ring;
        struct atl1c_tpd_ring *tpd_ring = (struct atl1c_tpd_ring *)
                                adapter->tpd_ring;
-       struct atl1c_cmb *cmb = (struct atl1c_cmb *) &adapter->cmb;
-       struct atl1c_smb *smb = (struct atl1c_smb *) &adapter->smb;
        u32 data;
 
        /* TPD */
@@ -1029,14 +1022,6 @@ static void atl1c_configure_des_ring(struct atl1c_adapter *adapter)
        AT_WRITE_REG(hw, REG_RRD_RING_SIZE,
                        (rrd_ring->count & RRD_RING_SIZE_MASK));
 
-       /* CMB */
-       AT_WRITE_REG(hw, REG_CMB_BASE_ADDR_LO, cmb->dma & AT_DMA_LO_ADDR_MASK);
-
-       /* SMB */
-       AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_HI,
-                       (u32)((smb->dma & AT_DMA_HI_ADDR_MASK) >> 32));
-       AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_LO,
-                       (u32)(smb->dma & AT_DMA_LO_ADDR_MASK));
        if (hw->nic_type == athr_l2c_b) {
                AT_WRITE_REG(hw, REG_SRAM_RXF_LEN, 0x02a0L);
                AT_WRITE_REG(hw, REG_SRAM_TXF_LEN, 0x0100L);
@@ -1115,12 +1100,6 @@ static void atl1c_configure_dma(struct atl1c_adapter *adapter)
        u32 dma_ctrl_data;
 
        dma_ctrl_data = DMA_CTRL_DMAR_REQ_PRI;
-       if (hw->ctrl_flags & ATL1C_CMB_ENABLE)
-               dma_ctrl_data |= DMA_CTRL_CMB_EN;
-       if (hw->ctrl_flags & ATL1C_SMB_ENABLE)
-               dma_ctrl_data |= DMA_CTRL_SMB_EN;
-       else
-               dma_ctrl_data |= MAC_CTRL_SMB_DIS;
 
        switch (hw->dma_order) {
        case atl1c_dma_ord_in:
@@ -1440,16 +1419,9 @@ static int atl1c_configure(struct atl1c_adapter *adapter)
        master_ctrl_data |= MASTER_CTRL_SA_TIMER_EN;
        AT_WRITE_REG(hw, REG_MASTER_CTRL, master_ctrl_data);
 
-       if (hw->ctrl_flags & ATL1C_CMB_ENABLE) {
-               AT_WRITE_REG(hw, REG_CMB_TPD_THRESH,
-                       hw->cmb_tpd & CMB_TPD_THRESH_MASK);
-               AT_WRITE_REG(hw, REG_CMB_TX_TIMER,
-                       hw->cmb_tx_timer & CMB_TX_TIMER_MASK);
-       }
+       AT_WRITE_REG(hw, REG_SMB_STAT_TIMER,
+               hw->smb_timer & SMB_STAT_TIMER_MASK);
 
-       if (hw->ctrl_flags & ATL1C_SMB_ENABLE)
-               AT_WRITE_REG(hw, REG_SMB_STAT_TIMER,
-                       hw->smb_timer & SMB_STAT_TIMER_MASK);
        /* set MTU */
        AT_WRITE_REG(hw, REG_MTU, hw->max_frame_size + ETH_HLEN +
                        VLAN_HLEN + ETH_FCS_LEN);