diff options
author | Huang, Xiong <xiong@qca.qualcomm.com> | 2012-04-17 15:32:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-18 15:35:31 -0400 |
commit | 8d5c68362f7d77cdffdf12ab7516a6eb77a5dd90 (patch) | |
tree | 276f8c722d8705885ff1296033f42432c91a3355 /drivers/net/ethernet/atheros | |
parent | 864ad85f77dc10055c7d5016e99bb201766a737d (diff) |
atl1c: remove SMB/CMB DMA related code
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>
Diffstat (limited to 'drivers/net/ethernet/atheros')
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c.h | 19 | ||||
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | 10 | ||||
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 34 |
3 files changed, 6 insertions, 57 deletions
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c.h b/drivers/net/ethernet/atheros/atl1c/atl1c.h index cf82b74be263..93b59915ec56 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c.h +++ b/drivers/net/ethernet/atheros/atl1c/atl1c.h | |||
@@ -426,10 +426,6 @@ struct atl1c_hw { | |||
426 | #define ATL1C_FPGA_VERSION 0x8000 | 426 | #define ATL1C_FPGA_VERSION 0x8000 |
427 | u16 link_cap_flags; | 427 | u16 link_cap_flags; |
428 | #define ATL1C_LINK_CAP_1000M 0x0001 | 428 | #define ATL1C_LINK_CAP_1000M 0x0001 |
429 | u16 cmb_tpd; | ||
430 | u16 cmb_rrd; | ||
431 | u16 cmb_rx_timer; /* 2us resolution */ | ||
432 | u16 cmb_tx_timer; | ||
433 | u32 smb_timer; | 429 | u32 smb_timer; |
434 | 430 | ||
435 | u16 rrd_thresh; /* Threshold of number of RRD produced to trigger | 431 | u16 rrd_thresh; /* Threshold of number of RRD produced to trigger |
@@ -449,8 +445,7 @@ struct atl1c_hw { | |||
449 | 445 | ||
450 | /* | 446 | /* |
451 | * atl1c_ring_header represents a single, contiguous block of DMA space | 447 | * atl1c_ring_header represents a single, contiguous block of DMA space |
452 | * mapped for the three descriptor rings (tpd, rfd, rrd) and the two | 448 | * mapped for the three descriptor rings (tpd, rfd, rrd) described below |
453 | * message blocks (cmb, smb) described below | ||
454 | */ | 449 | */ |
455 | struct atl1c_ring_header { | 450 | struct atl1c_ring_header { |
456 | void *desc; /* virtual address */ | 451 | void *desc; /* virtual address */ |
@@ -524,16 +519,6 @@ struct atl1c_rrd_ring { | |||
524 | u16 next_to_clean; | 519 | u16 next_to_clean; |
525 | }; | 520 | }; |
526 | 521 | ||
527 | struct atl1c_cmb { | ||
528 | void *cmb; | ||
529 | dma_addr_t dma; | ||
530 | }; | ||
531 | |||
532 | struct atl1c_smb { | ||
533 | void *smb; | ||
534 | dma_addr_t dma; | ||
535 | }; | ||
536 | |||
537 | /* board specific private data structure */ | 522 | /* board specific private data structure */ |
538 | struct atl1c_adapter { | 523 | struct atl1c_adapter { |
539 | struct net_device *netdev; | 524 | struct net_device *netdev; |
@@ -571,8 +556,6 @@ struct atl1c_adapter { | |||
571 | struct atl1c_tpd_ring tpd_ring[AT_MAX_TRANSMIT_QUEUE]; | 556 | struct atl1c_tpd_ring tpd_ring[AT_MAX_TRANSMIT_QUEUE]; |
572 | struct atl1c_rfd_ring rfd_ring; | 557 | struct atl1c_rfd_ring rfd_ring; |
573 | struct atl1c_rrd_ring rrd_ring; | 558 | struct atl1c_rrd_ring rrd_ring; |
574 | struct atl1c_cmb cmb; | ||
575 | struct atl1c_smb smb; | ||
576 | u32 bd_number; /* board number;*/ | 559 | u32 bd_number; /* board number;*/ |
577 | }; | 560 | }; |
578 | 561 | ||
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h index f5c7473596d0..caff2ae20a6c 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | |||
@@ -447,8 +447,6 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw); | |||
447 | */ | 447 | */ |
448 | #define REG_RX_BASE_ADDR_HI 0x1540 | 448 | #define REG_RX_BASE_ADDR_HI 0x1540 |
449 | #define REG_TX_BASE_ADDR_HI 0x1544 | 449 | #define REG_TX_BASE_ADDR_HI 0x1544 |
450 | #define REG_SMB_BASE_ADDR_HI 0x1548 | ||
451 | #define REG_SMB_BASE_ADDR_LO 0x154C | ||
452 | #define REG_RFD0_HEAD_ADDR_LO 0x1550 | 450 | #define REG_RFD0_HEAD_ADDR_LO 0x1550 |
453 | #define REG_RFD_RING_SIZE 0x1560 | 451 | #define REG_RFD_RING_SIZE 0x1560 |
454 | #define RFD_RING_SIZE_MASK 0x0FFF | 452 | #define RFD_RING_SIZE_MASK 0x0FFF |
@@ -461,7 +459,6 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw); | |||
461 | #define REG_NTPD_HEAD_ADDR_LO 0x1580 | 459 | #define REG_NTPD_HEAD_ADDR_LO 0x1580 |
462 | #define REG_TPD_RING_SIZE 0x1584 | 460 | #define REG_TPD_RING_SIZE 0x1584 |
463 | #define TPD_RING_SIZE_MASK 0xFFFF | 461 | #define TPD_RING_SIZE_MASK 0xFFFF |
464 | #define REG_CMB_BASE_ADDR_LO 0x1588 | ||
465 | 462 | ||
466 | /* TXQ Control Register */ | 463 | /* TXQ Control Register */ |
467 | #define REG_TXQ_CTRL 0x1590 | 464 | #define REG_TXQ_CTRL 0x1590 |
@@ -556,13 +553,10 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw); | |||
556 | #define MAC_CTRL_SMB_DIS 0x1000000 | 553 | #define MAC_CTRL_SMB_DIS 0x1000000 |
557 | #define DMA_CTRL_SMB_NOW 0x80000000 | 554 | #define DMA_CTRL_SMB_NOW 0x80000000 |
558 | 555 | ||
559 | /* CMB/SMB Control Register */ | 556 | /* INT-triggle/SMB Control Register */ |
560 | #define REG_SMB_STAT_TIMER 0x15C4 /* 2us resolution */ | 557 | #define REG_SMB_STAT_TIMER 0x15C4 /* 2us resolution */ |
561 | #define SMB_STAT_TIMER_MASK 0xFFFFFF | 558 | #define SMB_STAT_TIMER_MASK 0xFFFFFF |
562 | #define REG_CMB_TPD_THRESH 0x15C8 | 559 | #define REG_TINT_TPD_THRESH 0x15C8 /* tpd th to trig intrrupt */ |
563 | #define CMB_TPD_THRESH_MASK 0xFFFF | ||
564 | #define REG_CMB_TX_TIMER 0x15CC /* 2us resolution */ | ||
565 | #define CMB_TX_TIMER_MASK 0xFFFF | ||
566 | 560 | ||
567 | /* Mail box */ | 561 | /* Mail box */ |
568 | #define MB_RFDX_PROD_IDX_MASK 0xFFFF | 562 | #define MB_RFDX_PROD_IDX_MASK 0xFFFF |
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c index 4f19f5c30fc7..c4d5929f7022 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c | |||
@@ -733,8 +733,6 @@ static int __devinit atl1c_sw_init(struct atl1c_adapter *adapter) | |||
733 | 733 | ||
734 | hw->ict = 50000; /* 100ms */ | 734 | hw->ict = 50000; /* 100ms */ |
735 | hw->smb_timer = 200000; /* 400ms */ | 735 | hw->smb_timer = 200000; /* 400ms */ |
736 | hw->cmb_tpd = 4; | ||
737 | hw->cmb_tx_timer = 1; /* 2 us */ | ||
738 | hw->rx_imt = 200; | 736 | hw->rx_imt = 200; |
739 | hw->tx_imt = 1000; | 737 | hw->tx_imt = 1000; |
740 | 738 | ||
@@ -943,8 +941,7 @@ static int atl1c_setup_ring_resources(struct atl1c_adapter *adapter) | |||
943 | sizeof(struct atl1c_tpd_desc) * tpd_ring->count * 2 + | 941 | sizeof(struct atl1c_tpd_desc) * tpd_ring->count * 2 + |
944 | sizeof(struct atl1c_rx_free_desc) * rx_desc_count + | 942 | sizeof(struct atl1c_rx_free_desc) * rx_desc_count + |
945 | sizeof(struct atl1c_recv_ret_status) * rx_desc_count + | 943 | sizeof(struct atl1c_recv_ret_status) * rx_desc_count + |
946 | sizeof(struct atl1c_hw_stats) + | 944 | 8 * 4; |
947 | 8 * 4 + 8 * 2; | ||
948 | 945 | ||
949 | ring_header->desc = pci_alloc_consistent(pdev, ring_header->size, | 946 | ring_header->desc = pci_alloc_consistent(pdev, ring_header->size, |
950 | &ring_header->dma); | 947 | &ring_header->dma); |
@@ -977,8 +974,6 @@ static int atl1c_setup_ring_resources(struct atl1c_adapter *adapter) | |||
977 | rrd_ring->count; | 974 | rrd_ring->count; |
978 | offset += roundup(rrd_ring->size, 8); | 975 | offset += roundup(rrd_ring->size, 8); |
979 | 976 | ||
980 | adapter->smb.dma = ring_header->dma + offset; | ||
981 | adapter->smb.smb = (u8 *)ring_header->desc + offset; | ||
982 | return 0; | 977 | return 0; |
983 | 978 | ||
984 | err_nomem: | 979 | err_nomem: |
@@ -993,8 +988,6 @@ static void atl1c_configure_des_ring(struct atl1c_adapter *adapter) | |||
993 | struct atl1c_rrd_ring *rrd_ring = &adapter->rrd_ring; | 988 | struct atl1c_rrd_ring *rrd_ring = &adapter->rrd_ring; |
994 | struct atl1c_tpd_ring *tpd_ring = (struct atl1c_tpd_ring *) | 989 | struct atl1c_tpd_ring *tpd_ring = (struct atl1c_tpd_ring *) |
995 | adapter->tpd_ring; | 990 | adapter->tpd_ring; |
996 | struct atl1c_cmb *cmb = (struct atl1c_cmb *) &adapter->cmb; | ||
997 | struct atl1c_smb *smb = (struct atl1c_smb *) &adapter->smb; | ||
998 | u32 data; | 991 | u32 data; |
999 | 992 | ||
1000 | /* TPD */ | 993 | /* TPD */ |
@@ -1029,14 +1022,6 @@ static void atl1c_configure_des_ring(struct atl1c_adapter *adapter) | |||
1029 | AT_WRITE_REG(hw, REG_RRD_RING_SIZE, | 1022 | AT_WRITE_REG(hw, REG_RRD_RING_SIZE, |
1030 | (rrd_ring->count & RRD_RING_SIZE_MASK)); | 1023 | (rrd_ring->count & RRD_RING_SIZE_MASK)); |
1031 | 1024 | ||
1032 | /* CMB */ | ||
1033 | AT_WRITE_REG(hw, REG_CMB_BASE_ADDR_LO, cmb->dma & AT_DMA_LO_ADDR_MASK); | ||
1034 | |||
1035 | /* SMB */ | ||
1036 | AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_HI, | ||
1037 | (u32)((smb->dma & AT_DMA_HI_ADDR_MASK) >> 32)); | ||
1038 | AT_WRITE_REG(hw, REG_SMB_BASE_ADDR_LO, | ||
1039 | (u32)(smb->dma & AT_DMA_LO_ADDR_MASK)); | ||
1040 | if (hw->nic_type == athr_l2c_b) { | 1025 | if (hw->nic_type == athr_l2c_b) { |
1041 | AT_WRITE_REG(hw, REG_SRAM_RXF_LEN, 0x02a0L); | 1026 | AT_WRITE_REG(hw, REG_SRAM_RXF_LEN, 0x02a0L); |
1042 | AT_WRITE_REG(hw, REG_SRAM_TXF_LEN, 0x0100L); | 1027 | AT_WRITE_REG(hw, REG_SRAM_TXF_LEN, 0x0100L); |
@@ -1115,12 +1100,6 @@ static void atl1c_configure_dma(struct atl1c_adapter *adapter) | |||
1115 | u32 dma_ctrl_data; | 1100 | u32 dma_ctrl_data; |
1116 | 1101 | ||
1117 | dma_ctrl_data = DMA_CTRL_DMAR_REQ_PRI; | 1102 | dma_ctrl_data = DMA_CTRL_DMAR_REQ_PRI; |
1118 | if (hw->ctrl_flags & ATL1C_CMB_ENABLE) | ||
1119 | dma_ctrl_data |= DMA_CTRL_CMB_EN; | ||
1120 | if (hw->ctrl_flags & ATL1C_SMB_ENABLE) | ||
1121 | dma_ctrl_data |= DMA_CTRL_SMB_EN; | ||
1122 | else | ||
1123 | dma_ctrl_data |= MAC_CTRL_SMB_DIS; | ||
1124 | 1103 | ||
1125 | switch (hw->dma_order) { | 1104 | switch (hw->dma_order) { |
1126 | case atl1c_dma_ord_in: | 1105 | case atl1c_dma_ord_in: |
@@ -1440,16 +1419,9 @@ static int atl1c_configure(struct atl1c_adapter *adapter) | |||
1440 | master_ctrl_data |= MASTER_CTRL_SA_TIMER_EN; | 1419 | master_ctrl_data |= MASTER_CTRL_SA_TIMER_EN; |
1441 | AT_WRITE_REG(hw, REG_MASTER_CTRL, master_ctrl_data); | 1420 | AT_WRITE_REG(hw, REG_MASTER_CTRL, master_ctrl_data); |
1442 | 1421 | ||
1443 | if (hw->ctrl_flags & ATL1C_CMB_ENABLE) { | 1422 | AT_WRITE_REG(hw, REG_SMB_STAT_TIMER, |
1444 | AT_WRITE_REG(hw, REG_CMB_TPD_THRESH, | 1423 | hw->smb_timer & SMB_STAT_TIMER_MASK); |
1445 | hw->cmb_tpd & CMB_TPD_THRESH_MASK); | ||
1446 | AT_WRITE_REG(hw, REG_CMB_TX_TIMER, | ||
1447 | hw->cmb_tx_timer & CMB_TX_TIMER_MASK); | ||
1448 | } | ||
1449 | 1424 | ||
1450 | if (hw->ctrl_flags & ATL1C_SMB_ENABLE) | ||
1451 | AT_WRITE_REG(hw, REG_SMB_STAT_TIMER, | ||
1452 | hw->smb_timer & SMB_STAT_TIMER_MASK); | ||
1453 | /* set MTU */ | 1425 | /* set MTU */ |
1454 | AT_WRITE_REG(hw, REG_MTU, hw->max_frame_size + ETH_HLEN + | 1426 | AT_WRITE_REG(hw, REG_MTU, hw->max_frame_size + ETH_HLEN + |
1455 | VLAN_HLEN + ETH_FCS_LEN); | 1427 | VLAN_HLEN + ETH_FCS_LEN); |