Lines Matching defs:adapter
21 static void lan743x_pci_cleanup(struct lan743x_adapter *adapter)
23 pci_release_selected_regions(adapter->pdev,
24 pci_select_bars(adapter->pdev,
26 pci_disable_device(adapter->pdev);
29 static int lan743x_pci_init(struct lan743x_adapter *adapter,
35 adapter->pdev = pdev;
40 netif_info(adapter, probe, adapter->netdev,
55 pci_disable_device(adapter->pdev);
61 u32 lan743x_csr_read(struct lan743x_adapter *adapter, int offset)
63 return ioread32(&adapter->csr.csr_address[offset]);
66 void lan743x_csr_write(struct lan743x_adapter *adapter, int offset,
69 iowrite32(data, &adapter->csr.csr_address[offset]);
72 #define LAN743X_CSR_READ_OP(offset) lan743x_csr_read(adapter, offset)
74 static int lan743x_csr_light_reset(struct lan743x_adapter *adapter)
78 data = lan743x_csr_read(adapter, HW_CFG);
80 lan743x_csr_write(adapter, HW_CFG, data);
86 static int lan743x_csr_wait_for_bit_atomic(struct lan743x_adapter *adapter,
98 static int lan743x_csr_wait_for_bit(struct lan743x_adapter *adapter,
110 static int lan743x_csr_init(struct lan743x_adapter *adapter)
112 struct lan743x_csr *csr = &adapter->csr;
116 bar_start = pci_resource_start(adapter->pdev, 0);
117 bar_length = pci_resource_len(adapter->pdev, 0);
118 csr->csr_address = devm_ioremap(&adapter->pdev->dev,
125 csr->id_rev = lan743x_csr_read(adapter, ID_REV);
126 csr->fpga_rev = lan743x_csr_read(adapter, FPGA_REV);
127 netif_info(adapter, probe, adapter->netdev,
147 result = lan743x_csr_light_reset(adapter);
157 struct lan743x_adapter *adapter = context;
158 struct lan743x_intr *intr = &adapter->intr;
161 int_sts = lan743x_csr_read(adapter, INT_STS);
164 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_SW_GP_);
172 struct lan743x_adapter *adapter = tx->adapter;
175 lan743x_csr_read(adapter, INT_EN_SET);
177 lan743x_csr_write(adapter, INT_EN_CLR,
187 dmac_int_sts = lan743x_csr_read(adapter, DMAC_INT_STS);
191 dmac_int_en = lan743x_csr_read(adapter,
206 lan743x_csr_write(adapter, INT_EN_SET,
213 struct lan743x_adapter *adapter = rx->adapter;
217 lan743x_csr_write(adapter, INT_EN_CLR,
227 dmac_int_sts = lan743x_csr_read(adapter, DMAC_INT_STS);
231 dmac_int_en = lan743x_csr_read(adapter,
246 lan743x_csr_write(adapter, INT_EN_SET,
253 struct lan743x_adapter *adapter = context;
262 lan743x_rx_isr(&adapter->rx[channel],
274 lan743x_tx_isr(&adapter->tx[channel],
282 lan743x_intr_software_isr(adapter);
286 lan743x_ptp_isr(adapter);
291 lan743x_csr_write(adapter, INT_EN_CLR, int_sts);
297 struct lan743x_adapter *adapter = vector->adapter;
303 int_sts = lan743x_csr_read(adapter, INT_STS);
307 int_sts = lan743x_csr_read(adapter, INT_STS_R2C);
318 lan743x_csr_write(adapter,
324 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_MAS_);
327 int_enables = lan743x_csr_read(adapter, INT_EN_SET);
341 lan743x_csr_write(adapter, INT_EN_CLR,
349 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_MAS_);
353 lan743x_csr_write(adapter,
360 static int lan743x_intr_test_isr(struct lan743x_adapter *adapter)
362 struct lan743x_intr *intr = &adapter->intr;
369 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_SW_GP_);
372 lan743x_csr_write(adapter, INT_SET, INT_BIT_SW_GP_);
382 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_SW_GP_);
386 static int lan743x_intr_register_isr(struct lan743x_adapter *adapter,
392 struct lan743x_vector *vector = &adapter->intr.vector_list
396 vector->adapter = adapter;
416 static void lan743x_intr_unregister_isr(struct lan743x_adapter *adapter,
419 struct lan743x_vector *vector = &adapter->intr.vector_list
429 static u32 lan743x_intr_get_vector_flags(struct lan743x_adapter *adapter,
435 if (adapter->intr.vector_list[index].int_mask & int_mask)
436 return adapter->intr.vector_list[index].flags;
441 static void lan743x_intr_close(struct lan743x_adapter *adapter)
443 struct lan743x_intr *intr = &adapter->intr;
446 lan743x_csr_write(adapter, INT_EN_CLR, INT_BIT_MAS_);
447 lan743x_csr_write(adapter, INT_VEC_EN_CLR, 0x000000FF);
451 lan743x_intr_unregister_isr(adapter, index);
457 pci_disable_msi(adapter->pdev);
462 pci_disable_msix(adapter->pdev);
467 static int lan743x_intr_open(struct lan743x_adapter *adapter)
470 struct lan743x_intr *intr = &adapter->intr;
485 ret = pci_enable_msix_range(adapter->pdev,
497 netif_info(adapter, ifup, adapter->netdev,
504 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0)) {
505 if (!pci_enable_msi(adapter->pdev)) {
510 adapter->pdev->irq;
511 netif_info(adapter, ifup, adapter->netdev,
523 netif_info(adapter, ifup, adapter->netdev,
528 lan743x_csr_write(adapter, INT_VEC_EN_CLR, 0xFFFFFFFF);
531 lan743x_csr_write(adapter, INT_VEC_MAP0, 0x00000000);
532 lan743x_csr_write(adapter, INT_VEC_MAP1, 0x00000000);
533 lan743x_csr_write(adapter, INT_VEC_MAP2, 0x00000000);
548 if (adapter->csr.flags & LAN743X_CSR_FLAG_SUPPORTS_INTR_AUTO_SET_CLR) {
557 ret = lan743x_intr_register_isr(adapter, 0, flags,
560 lan743x_intr_shared_isr, adapter);
566 lan743x_csr_write(adapter, INT_VEC_EN_SET,
569 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0)) {
570 lan743x_csr_write(adapter, INT_MOD_CFG0, LAN743X_INT_MOD);
571 lan743x_csr_write(adapter, INT_MOD_CFG1, LAN743X_INT_MOD);
572 lan743x_csr_write(adapter, INT_MOD_CFG2, LAN743X_INT_MOD);
573 lan743x_csr_write(adapter, INT_MOD_CFG3, LAN743X_INT_MOD);
574 lan743x_csr_write(adapter, INT_MOD_CFG4, LAN743X_INT_MOD);
575 lan743x_csr_write(adapter, INT_MOD_CFG5, LAN743X_INT_MOD);
576 lan743x_csr_write(adapter, INT_MOD_CFG6, LAN743X_INT_MOD);
577 lan743x_csr_write(adapter, INT_MOD_CFG7, LAN743X_INT_MOD);
578 lan743x_csr_write(adapter, INT_MOD_MAP0, 0x00005432);
579 lan743x_csr_write(adapter, INT_MOD_MAP1, 0x00000001);
580 lan743x_csr_write(adapter, INT_MOD_MAP2, 0x00FFFFFF);
584 lan743x_csr_write(adapter, INT_EN_SET, INT_BIT_MAS_);
585 ret = lan743x_intr_test_isr(adapter);
601 if (adapter->csr.flags &
615 lan743x_csr_write(adapter, INT_VEC_MAP1, int_vec_map1);
619 ret = lan743x_intr_register_isr(adapter, vector, flags,
621 &adapter->tx[index]);
627 lan743x_csr_write(adapter, INT_VEC_EN_SET,
645 if (adapter->csr.flags &
659 lan743x_csr_write(adapter, INT_VEC_MAP0, int_vec_map0);
663 lan743x_csr_write(adapter, INT_VEC_EN_AUTO_CLR,
669 ret = lan743x_intr_register_isr(adapter, vector, flags,
671 &adapter->rx[index]);
676 lan743x_csr_write(adapter, INT_VEC_EN_SET,
683 lan743x_intr_close(adapter);
687 static int lan743x_dp_write(struct lan743x_adapter *adapter,
693 if (lan743x_csr_wait_for_bit_atomic(adapter, DP_SEL, DP_SEL_DPRDY_,
696 dp_sel = lan743x_csr_read(adapter, DP_SEL);
699 lan743x_csr_write(adapter, DP_SEL, dp_sel);
702 lan743x_csr_write(adapter, DP_ADDR, addr + i);
703 lan743x_csr_write(adapter, DP_DATA_0, buf[i]);
704 lan743x_csr_write(adapter, DP_CMD, DP_CMD_WRITE_);
705 if (lan743x_csr_wait_for_bit_atomic(adapter, DP_SEL,
732 static int lan743x_mac_mii_wait_till_not_busy(struct lan743x_adapter *adapter)
742 struct lan743x_adapter *adapter = bus->priv;
747 ret = lan743x_mac_mii_wait_till_not_busy(adapter);
753 lan743x_csr_write(adapter, MAC_MII_ACC, mii_access);
754 ret = lan743x_mac_mii_wait_till_not_busy(adapter);
758 val = lan743x_csr_read(adapter, MAC_MII_DATA);
765 struct lan743x_adapter *adapter = bus->priv;
770 ret = lan743x_mac_mii_wait_till_not_busy(adapter);
774 lan743x_csr_write(adapter, MAC_MII_DATA, val);
778 lan743x_csr_write(adapter, MAC_MII_ACC, mii_access);
779 ret = lan743x_mac_mii_wait_till_not_busy(adapter);
783 static void lan743x_mac_set_address(struct lan743x_adapter *adapter,
794 lan743x_csr_write(adapter, MAC_RX_ADDRL, addr_lo);
795 lan743x_csr_write(adapter, MAC_RX_ADDRH, addr_hi);
797 ether_addr_copy(adapter->mac_address, addr);
798 netif_info(adapter, drv, adapter->netdev,
802 static int lan743x_mac_init(struct lan743x_adapter *adapter)
810 netdev = adapter->netdev;
813 data = lan743x_csr_read(adapter, MAC_CR);
816 lan743x_csr_write(adapter, MAC_CR, data);
818 if (!is_valid_ether_addr(adapter->mac_address)) {
819 mac_addr_hi = lan743x_csr_read(adapter, MAC_RX_ADDRH);
820 mac_addr_lo = lan743x_csr_read(adapter, MAC_RX_ADDRL);
821 adapter->mac_address[0] = mac_addr_lo & 0xFF;
822 adapter->mac_address[1] = (mac_addr_lo >> 8) & 0xFF;
823 adapter->mac_address[2] = (mac_addr_lo >> 16) & 0xFF;
824 adapter->mac_address[3] = (mac_addr_lo >> 24) & 0xFF;
825 adapter->mac_address[4] = mac_addr_hi & 0xFF;
826 adapter->mac_address[5] = (mac_addr_hi >> 8) & 0xFF;
831 } else if (!is_valid_ether_addr(adapter->mac_address)) {
836 eth_random_addr(adapter->mac_address);
838 lan743x_mac_set_address(adapter, adapter->mac_address);
839 ether_addr_copy(netdev->dev_addr, adapter->mac_address);
844 static int lan743x_mac_open(struct lan743x_adapter *adapter)
849 temp = lan743x_csr_read(adapter, MAC_RX);
850 lan743x_csr_write(adapter, MAC_RX, temp | MAC_RX_RXEN_);
851 temp = lan743x_csr_read(adapter, MAC_TX);
852 lan743x_csr_write(adapter, MAC_TX, temp | MAC_TX_TXEN_);
856 static void lan743x_mac_close(struct lan743x_adapter *adapter)
860 temp = lan743x_csr_read(adapter, MAC_TX);
862 lan743x_csr_write(adapter, MAC_TX, temp);
863 lan743x_csr_wait_for_bit(adapter, MAC_TX, MAC_TX_TXD_,
866 temp = lan743x_csr_read(adapter, MAC_RX);
868 lan743x_csr_write(adapter, MAC_RX, temp);
869 lan743x_csr_wait_for_bit(adapter, MAC_RX, MAC_RX_RXD_,
873 static void lan743x_mac_flow_ctrl_set_enables(struct lan743x_adapter *adapter,
886 lan743x_csr_write(adapter, MAC_FLOW, flow_setting);
889 static int lan743x_mac_set_mtu(struct lan743x_adapter *adapter, int new_mtu)
894 mac_rx = lan743x_csr_read(adapter, MAC_RX);
898 lan743x_csr_write(adapter, MAC_RX, mac_rx);
902 lan743x_csr_write(adapter, MAC_RX, mac_rx);
903 lan743x_csr_wait_for_bit(adapter, MAC_RX, MAC_RX_RXD_,
905 lan743x_csr_write(adapter, MAC_RX, mac_rx | MAC_RX_RXD_);
911 lan743x_csr_write(adapter, MAC_RX, mac_rx);
915 lan743x_csr_write(adapter, MAC_RX, mac_rx);
921 static int lan743x_phy_reset(struct lan743x_adapter *adapter)
927 data = lan743x_csr_read(adapter, PMT_CTL);
929 lan743x_csr_write(adapter, PMT_CTL, data);
937 static void lan743x_phy_update_flowcontrol(struct lan743x_adapter *adapter,
940 struct lan743x_phy *phy = &adapter->phy;
948 lan743x_mac_flow_ctrl_set_enables(adapter,
953 static int lan743x_phy_init(struct lan743x_adapter *adapter)
955 return lan743x_phy_reset(adapter);
960 struct lan743x_adapter *adapter = netdev_priv(netdev);
969 data = lan743x_csr_read(adapter, MAC_CR);
972 if (phy_interface_mode_is_rgmii(adapter->phy_mode))
1000 lan743x_csr_write(adapter, MAC_CR, data);
1007 lan743x_phy_update_flowcontrol(adapter, local_advertisement,
1009 lan743x_ptp_update_latency(adapter, phydev->speed);
1013 static void lan743x_phy_close(struct lan743x_adapter *adapter)
1015 struct net_device *netdev = adapter->netdev;
1022 static int lan743x_phy_open(struct lan743x_adapter *adapter)
1024 struct lan743x_phy *phy = &adapter->phy;
1030 netdev = adapter->netdev;
1031 phynode = of_node_get(adapter->pdev->dev.of_node);
1035 of_get_phy_mode(phynode, &adapter->phy_mode);
1048 adapter->phy_mode);
1054 phydev = phy_find_first(adapter->mdiobus);
1058 adapter->phy_mode = PHY_INTERFACE_MODE_GMII;
1061 adapter->phy_mode);
1082 static void lan743x_rfe_open(struct lan743x_adapter *adapter)
1084 lan743x_csr_write(adapter, RFE_RSS_CFG,
1100 static void lan743x_rfe_update_mac_address(struct lan743x_adapter *adapter)
1107 mac_addr = adapter->mac_address;
1115 lan743x_csr_write(adapter, RFE_ADDR_FILT_LO(0), mac_addr_lo);
1116 lan743x_csr_write(adapter, RFE_ADDR_FILT_HI(0),
1120 static void lan743x_rfe_set_multicast(struct lan743x_adapter *adapter)
1122 struct net_device *netdev = adapter->netdev;
1127 rfctl = lan743x_csr_read(adapter, RFE_CTL);
1148 lan743x_csr_write(adapter,
1154 lan743x_csr_write(adapter,
1159 lan743x_csr_write(adapter,
1171 lan743x_dp_write(adapter, DP_SEL_RFE_RAM,
1174 lan743x_csr_write(adapter, RFE_CTL, rfctl);
1177 static int lan743x_dmac_init(struct lan743x_adapter *adapter)
1181 lan743x_csr_write(adapter, DMAC_CMD, DMAC_CMD_SWR_);
1182 lan743x_csr_wait_for_bit(adapter, DMAC_CMD, DMAC_CMD_SWR_,
1200 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0))
1204 lan743x_csr_write(adapter, DMAC_CFG, data);
1212 lan743x_csr_write(adapter, DMAC_COAL_CFG, data);
1215 lan743x_csr_write(adapter, DMAC_OBFF_CFG, data);
1219 static int lan743x_dmac_tx_get_state(struct lan743x_adapter *adapter,
1224 dmac_cmd = lan743x_csr_read(adapter, DMAC_CMD);
1231 static int lan743x_dmac_tx_wait_till_stopped(struct lan743x_adapter *adapter,
1238 ((result = lan743x_dmac_tx_get_state(adapter, tx_channel)) ==
1248 static int lan743x_dmac_rx_get_state(struct lan743x_adapter *adapter,
1253 dmac_cmd = lan743x_csr_read(adapter, DMAC_CMD);
1260 static int lan743x_dmac_rx_wait_till_stopped(struct lan743x_adapter *adapter,
1267 ((result = lan743x_dmac_rx_get_state(adapter, rx_channel)) ==
1301 dma_unmap_page(&tx->adapter->pdev->dev,
1306 dma_unmap_single(&tx->adapter->pdev->dev,
1323 lan743x_ptp_unrequest_tx_timestamp(tx->adapter);
1328 lan743x_ptp_tx_timestamp_skb(tx->adapter,
1421 struct lan743x_adapter *adapter = tx->adapter;
1422 struct device *dev = &adapter->pdev->dev;
1513 struct lan743x_adapter *adapter = tx->adapter;
1514 struct device *dev = &adapter->pdev->dev;
1579 struct lan743x_adapter *adapter = tx->adapter;
1609 lan743x_csr_write(adapter, TX_TAIL(tx->channel_number),
1638 netif_stop_queue(tx->adapter->netdev);
1646 (lan743x_ptp_request_tx_timestamp(tx->adapter))) {
1702 struct lan743x_adapter *adapter = tx->adapter;
1708 lan743x_csr_read(adapter, DMAC_INT_STS);
1710 lan743x_csr_write(adapter, DMAC_INT_STS, ioc_bit);
1715 if (netif_queue_stopped(adapter->netdev)) {
1721 netif_wake_queue(adapter->netdev);
1730 netif_wake_queue(adapter->netdev);
1737 lan743x_csr_write(adapter, INT_EN_SET,
1739 lan743x_csr_read(adapter, INT_STS);
1748 dma_free_coherent(&tx->adapter->pdev->dev,
1758 dma_free_coherent(&tx->adapter->pdev->dev,
1780 if (dma_set_mask_and_coherent(&tx->adapter->pdev->dev,
1782 if (dma_set_mask_and_coherent(&tx->adapter->pdev->dev,
1784 dev_warn(&tx->adapter->pdev->dev,
1794 cpu_ptr = dma_alloc_coherent(&tx->adapter->pdev->dev,
1812 cpu_ptr = dma_alloc_coherent(&tx->adapter->pdev->dev,
1836 struct lan743x_adapter *adapter = tx->adapter;
1838 lan743x_csr_write(adapter,
1841 lan743x_dmac_tx_wait_till_stopped(adapter, tx->channel_number);
1843 lan743x_csr_write(adapter,
1846 lan743x_csr_write(adapter, INT_EN_CLR,
1851 lan743x_csr_write(adapter, FCT_TX_CTL,
1853 lan743x_csr_wait_for_bit(adapter, FCT_TX_CTL,
1869 struct lan743x_adapter *adapter = NULL;
1873 adapter = tx->adapter;
1879 lan743x_csr_write(adapter, FCT_TX_CTL,
1881 lan743x_csr_wait_for_bit(adapter, FCT_TX_CTL,
1886 lan743x_csr_write(adapter, FCT_TX_CTL,
1890 lan743x_csr_write(adapter, DMAC_CMD,
1892 lan743x_csr_wait_for_bit(adapter, DMAC_CMD,
1897 lan743x_csr_write(adapter,
1900 lan743x_csr_write(adapter,
1905 data = lan743x_csr_read(adapter, TX_CFG_B(tx->channel_number));
1908 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0))
1910 lan743x_csr_write(adapter, TX_CFG_B(tx->channel_number), data);
1914 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0)) {
1920 lan743x_csr_write(adapter, TX_CFG_A(tx->channel_number), data);
1923 lan743x_csr_write(adapter,
1926 lan743x_csr_write(adapter,
1931 tx->last_head = lan743x_csr_read(adapter, TX_HEAD(tx->channel_number));
1935 lan743x_csr_write(adapter, TX_TAIL(tx->channel_number),
1937 tx->vector_flags = lan743x_intr_get_vector_flags(adapter,
1940 netif_tx_napi_add(adapter->netdev,
1954 lan743x_csr_write(adapter, TX_CFG_C(tx->channel_number), data);
1957 lan743x_csr_write(adapter, INT_EN_SET,
1959 lan743x_csr_write(adapter, DMAC_INT_EN_SET,
1963 lan743x_csr_write(adapter, DMAC_CMD,
1978 return __netdev_alloc_skb(rx->adapter->netdev,
1986 lan743x_csr_write(rx->adapter, RX_TAIL(rx->channel_number),
2003 buffer_info->dma_ptr = dma_map_single(&rx->adapter->pdev->dev,
2007 if (dma_mapping_error(&rx->adapter->pdev->dev,
2053 dma_unmap_single(&rx->adapter->pdev->dev,
2168 dma_unmap_single(&rx->adapter->pdev->dev,
2180 rx->adapter->netdev);
2250 struct lan743x_adapter *adapter = rx->adapter;
2257 lan743x_csr_write(adapter, DMAC_INT_STS,
2278 lan743x_csr_write(adapter, INT_EN_SET,
2283 lan743x_csr_write(adapter, RX_TAIL(rx->channel_number),
2299 dma_free_coherent(&rx->adapter->pdev->dev,
2310 dma_free_coherent(&rx->adapter->pdev->dev,
2339 if (dma_set_mask_and_coherent(&rx->adapter->pdev->dev,
2341 if (dma_set_mask_and_coherent(&rx->adapter->pdev->dev,
2343 dev_warn(&rx->adapter->pdev->dev,
2353 cpu_ptr = dma_alloc_coherent(&rx->adapter->pdev->dev,
2371 cpu_ptr = dma_alloc_coherent(&rx->adapter->pdev->dev,
2404 struct lan743x_adapter *adapter = rx->adapter;
2406 lan743x_csr_write(adapter, FCT_RX_CTL,
2408 lan743x_csr_wait_for_bit(adapter, FCT_RX_CTL,
2412 lan743x_csr_write(adapter, DMAC_CMD,
2414 lan743x_dmac_rx_wait_till_stopped(adapter, rx->channel_number);
2416 lan743x_csr_write(adapter, DMAC_INT_EN_CLR,
2418 lan743x_csr_write(adapter, INT_EN_CLR,
2429 struct lan743x_adapter *adapter = rx->adapter;
2438 netif_napi_add(adapter->netdev,
2442 lan743x_csr_write(adapter, DMAC_CMD,
2444 lan743x_csr_wait_for_bit(adapter, DMAC_CMD,
2449 lan743x_csr_write(adapter,
2452 lan743x_csr_write(adapter,
2457 lan743x_csr_write(adapter,
2460 lan743x_csr_write(adapter,
2464 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0)) {
2472 lan743x_csr_write(adapter,
2476 data = lan743x_csr_read(adapter, RX_CFG_B(rx->channel_number));
2485 if (!(adapter->csr.flags & LAN743X_CSR_FLAG_IS_A0))
2488 lan743x_csr_write(adapter, RX_CFG_B(rx->channel_number), data);
2489 rx->vector_flags = lan743x_intr_get_vector_flags(adapter,
2503 lan743x_csr_write(adapter, RX_CFG_C(rx->channel_number), data);
2506 lan743x_csr_write(adapter, RX_TAIL(rx->channel_number),
2508 rx->last_head = lan743x_csr_read(adapter, RX_HEAD(rx->channel_number));
2516 lan743x_csr_write(adapter, INT_EN_SET,
2518 lan743x_csr_write(adapter, DMAC_INT_STS,
2520 lan743x_csr_write(adapter, DMAC_INT_EN_SET,
2522 lan743x_csr_write(adapter, DMAC_CMD,
2526 lan743x_csr_write(adapter, FCT_RX_CTL,
2528 lan743x_csr_wait_for_bit(adapter, FCT_RX_CTL,
2531 lan743x_csr_write(adapter, FCT_FLOW(rx->channel_number),
2537 lan743x_csr_write(adapter, FCT_RX_CTL,
2551 struct lan743x_adapter *adapter = netdev_priv(netdev);
2554 lan743x_tx_close(&adapter->tx[0]);
2557 lan743x_rx_close(&adapter->rx[index]);
2559 lan743x_ptp_close(adapter);
2561 lan743x_phy_close(adapter);
2563 lan743x_mac_close(adapter);
2565 lan743x_intr_close(adapter);
2572 struct lan743x_adapter *adapter = netdev_priv(netdev);
2576 ret = lan743x_intr_open(adapter);
2580 ret = lan743x_mac_open(adapter);
2584 ret = lan743x_phy_open(adapter);
2588 ret = lan743x_ptp_open(adapter);
2592 lan743x_rfe_open(adapter);
2595 ret = lan743x_rx_open(&adapter->rx[index]);
2600 ret = lan743x_tx_open(&adapter->tx[0]);
2608 if (adapter->rx[index].ring_cpu_ptr)
2609 lan743x_rx_close(&adapter->rx[index]);
2611 lan743x_ptp_close(adapter);
2614 lan743x_phy_close(adapter);
2617 lan743x_mac_close(adapter);
2620 lan743x_intr_close(adapter);
2623 netif_warn(adapter, ifup, adapter->netdev,
2631 struct lan743x_adapter *adapter = netdev_priv(netdev);
2633 return lan743x_tx_xmit_frame(&adapter->tx[0], skb);
2648 struct lan743x_adapter *adapter = netdev_priv(netdev);
2650 lan743x_rfe_set_multicast(adapter);
2655 struct lan743x_adapter *adapter = netdev_priv(netdev);
2658 ret = lan743x_mac_set_mtu(adapter, new_mtu);
2667 struct lan743x_adapter *adapter = netdev_priv(netdev);
2669 stats->rx_packets = lan743x_csr_read(adapter, STAT_RX_TOTAL_FRAMES);
2670 stats->tx_packets = lan743x_csr_read(adapter, STAT_TX_TOTAL_FRAMES);
2671 stats->rx_bytes = lan743x_csr_read(adapter,
2673 lan743x_csr_read(adapter,
2675 lan743x_csr_read(adapter,
2677 stats->tx_bytes = lan743x_csr_read(adapter,
2679 lan743x_csr_read(adapter,
2681 lan743x_csr_read(adapter,
2683 stats->rx_errors = lan743x_csr_read(adapter, STAT_RX_FCS_ERRORS) +
2684 lan743x_csr_read(adapter,
2686 lan743x_csr_read(adapter, STAT_RX_JABBER_ERRORS) +
2687 lan743x_csr_read(adapter,
2689 lan743x_csr_read(adapter,
2691 stats->tx_errors = lan743x_csr_read(adapter, STAT_TX_FCS_ERRORS) +
2692 lan743x_csr_read(adapter,
2694 lan743x_csr_read(adapter, STAT_TX_CARRIER_ERRORS);
2695 stats->rx_dropped = lan743x_csr_read(adapter,
2697 stats->tx_dropped = lan743x_csr_read(adapter,
2699 stats->multicast = lan743x_csr_read(adapter,
2701 lan743x_csr_read(adapter,
2703 stats->collisions = lan743x_csr_read(adapter,
2705 lan743x_csr_read(adapter,
2707 lan743x_csr_read(adapter,
2714 struct lan743x_adapter *adapter = netdev_priv(netdev);
2722 lan743x_mac_set_address(adapter, sock_addr->sa_data);
2723 lan743x_rfe_update_mac_address(adapter);
2738 static void lan743x_hardware_cleanup(struct lan743x_adapter *adapter)
2740 lan743x_csr_write(adapter, INT_EN_CLR, 0xFFFFFFFF);
2743 static void lan743x_mdiobus_cleanup(struct lan743x_adapter *adapter)
2745 mdiobus_unregister(adapter->mdiobus);
2748 static void lan743x_full_cleanup(struct lan743x_adapter *adapter)
2750 unregister_netdev(adapter->netdev);
2752 lan743x_mdiobus_cleanup(adapter);
2753 lan743x_hardware_cleanup(adapter);
2754 lan743x_pci_cleanup(adapter);
2757 static int lan743x_hardware_init(struct lan743x_adapter *adapter,
2764 adapter->intr.irq = adapter->pdev->irq;
2765 lan743x_csr_write(adapter, INT_EN_CLR, 0xFFFFFFFF);
2767 ret = lan743x_gpio_init(adapter);
2771 ret = lan743x_mac_init(adapter);
2775 ret = lan743x_phy_init(adapter);
2779 ret = lan743x_ptp_init(adapter);
2783 lan743x_rfe_update_mac_address(adapter);
2785 ret = lan743x_dmac_init(adapter);
2790 adapter->rx[index].adapter = adapter;
2791 adapter->rx[index].channel_number = index;
2794 tx = &adapter->tx[0];
2795 tx->adapter = adapter;
2801 static int lan743x_mdiobus_init(struct lan743x_adapter *adapter)
2805 adapter->mdiobus = devm_mdiobus_alloc(&adapter->pdev->dev);
2806 if (!(adapter->mdiobus)) {
2811 adapter->mdiobus->priv = (void *)adapter;
2812 adapter->mdiobus->read = lan743x_mdiobus_read;
2813 adapter->mdiobus->write = lan743x_mdiobus_write;
2814 adapter->mdiobus->name = "lan743x-mdiobus";
2815 snprintf(adapter->mdiobus->id, MII_BUS_ID_SIZE,
2816 "pci-%s", pci_name(adapter->pdev));
2818 if ((adapter->csr.id_rev & ID_REV_ID_MASK_) == ID_REV_ID_LAN7430_)
2820 adapter->mdiobus->phy_mask = ~(u32)BIT(1);
2823 ret = mdiobus_register(adapter->mdiobus);
2838 * initializes an adapter identified by a pci_dev structure.
2839 * The OS initialization, configuring of the adapter private structure,
2845 struct lan743x_adapter *adapter = NULL;
2857 adapter = netdev_priv(netdev);
2858 adapter->netdev = netdev;
2859 adapter->msg_enable = NETIF_MSG_DRV | NETIF_MSG_PROBE |
2866 ether_addr_copy(adapter->mac_address, mac_addr);
2868 ret = lan743x_pci_init(adapter, pdev);
2872 ret = lan743x_csr_init(adapter);
2876 ret = lan743x_hardware_init(adapter, pdev);
2880 ret = lan743x_mdiobus_init(adapter);
2884 adapter->netdev->netdev_ops = &lan743x_netdev_ops;
2885 adapter->netdev->ethtool_ops = &lan743x_ethtool_ops;
2886 adapter->netdev->features = NETIF_F_SG | NETIF_F_TSO | NETIF_F_HW_CSUM;
2887 adapter->netdev->hw_features = adapter->netdev->features;
2892 ret = register_netdev(adapter->netdev);
2898 lan743x_mdiobus_cleanup(adapter);
2901 lan743x_hardware_cleanup(adapter);
2904 lan743x_pci_cleanup(adapter);
2923 struct lan743x_adapter *adapter = netdev_priv(netdev);
2925 lan743x_full_cleanup(adapter);
2931 struct lan743x_adapter *adapter = netdev_priv(netdev);
2949 lan743x_hardware_cleanup(adapter);
2958 static void lan743x_pm_set_wol(struct lan743x_adapter *adapter)
2970 lan743x_csr_write(adapter, MAC_WUF_CFG(mask_index), 0);
2973 pmtctl = lan743x_csr_read(adapter, PMT_CTL);
2979 macrx = lan743x_csr_read(adapter, MAC_RX);
2986 if (adapter->wolopts & WAKE_PHY) {
2990 if (adapter->wolopts & WAKE_MAGIC) {
2995 if (adapter->wolopts & WAKE_UCAST) {
3001 if (adapter->wolopts & WAKE_BCAST) {
3007 if (adapter->wolopts & WAKE_MCAST) {
3010 lan743x_csr_write(adapter, MAC_WUF_CFG(mask_index),
3014 lan743x_csr_write(adapter, MAC_WUF_MASK0(mask_index), 7);
3015 lan743x_csr_write(adapter, MAC_WUF_MASK1(mask_index), 0);
3016 lan743x_csr_write(adapter, MAC_WUF_MASK2(mask_index), 0);
3017 lan743x_csr_write(adapter, MAC_WUF_MASK3(mask_index), 0);
3022 lan743x_csr_write(adapter, MAC_WUF_CFG(mask_index),
3026 lan743x_csr_write(adapter, MAC_WUF_MASK0(mask_index), 3);
3027 lan743x_csr_write(adapter, MAC_WUF_MASK1(mask_index), 0);
3028 lan743x_csr_write(adapter, MAC_WUF_MASK2(mask_index), 0);
3029 lan743x_csr_write(adapter, MAC_WUF_MASK3(mask_index), 0);
3037 if (adapter->wolopts & WAKE_ARP) {
3042 lan743x_csr_write(adapter, MAC_WUF_CFG(mask_index),
3046 lan743x_csr_write(adapter, MAC_WUF_MASK0(mask_index), 0x3000);
3047 lan743x_csr_write(adapter, MAC_WUF_MASK1(mask_index), 0);
3048 lan743x_csr_write(adapter, MAC_WUF_MASK2(mask_index), 0);
3049 lan743x_csr_write(adapter, MAC_WUF_MASK3(mask_index), 0);
3058 lan743x_csr_write(adapter, MAC_WUCSR, wucsr);
3059 lan743x_csr_write(adapter, PMT_CTL, pmtctl);
3060 lan743x_csr_write(adapter, MAC_RX, macrx);
3067 struct lan743x_adapter *adapter = netdev_priv(netdev);
3072 lan743x_csr_write(adapter, MAC_WUCSR, 0);
3073 lan743x_csr_write(adapter, MAC_WUCSR2, 0);
3074 lan743x_csr_write(adapter, MAC_WK_SRC, 0xFFFFFFFF);
3076 if (adapter->wolopts)
3077 lan743x_pm_set_wol(adapter);
3087 struct lan743x_adapter *adapter = netdev_priv(netdev);
3094 ret = lan743x_hardware_init(adapter, pdev);
3096 netif_err(adapter, probe, adapter->netdev,
3098 lan743x_pci_cleanup(adapter);