forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/toshiba/tc35815.c
....@@ -367,7 +367,7 @@
367367
368368 struct RxFD {
369369 struct FDesc fd;
370
- struct BDesc bd[0]; /* variable length */
370
+ struct BDesc bd[]; /* variable length */
371371 };
372372
373373 struct FrFD {
....@@ -454,9 +454,9 @@
454454 skb = netdev_alloc_skb(dev, RX_BUF_SIZE);
455455 if (!skb)
456456 return NULL;
457
- *dma_handle = pci_map_single(hwdev, skb->data, RX_BUF_SIZE,
458
- PCI_DMA_FROMDEVICE);
459
- if (pci_dma_mapping_error(hwdev, *dma_handle)) {
457
+ *dma_handle = dma_map_single(&hwdev->dev, skb->data, RX_BUF_SIZE,
458
+ DMA_FROM_DEVICE);
459
+ if (dma_mapping_error(&hwdev->dev, *dma_handle)) {
460460 dev_kfree_skb_any(skb);
461461 return NULL;
462462 }
....@@ -466,8 +466,8 @@
466466
467467 static void free_rxbuf_skb(struct pci_dev *hwdev, struct sk_buff *skb, dma_addr_t dma_handle)
468468 {
469
- pci_unmap_single(hwdev, dma_handle, RX_BUF_SIZE,
470
- PCI_DMA_FROMDEVICE);
469
+ dma_unmap_single(&hwdev->dev, dma_handle, RX_BUF_SIZE,
470
+ DMA_FROM_DEVICE);
471471 dev_kfree_skb_any(skb);
472472 }
473473
....@@ -483,8 +483,7 @@
483483 static int tc35815_close(struct net_device *dev);
484484 static struct net_device_stats *tc35815_get_stats(struct net_device *dev);
485485 static void tc35815_set_multicast_list(struct net_device *dev);
486
-static void tc35815_tx_timeout(struct net_device *dev);
487
-static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
486
+static void tc35815_tx_timeout(struct net_device *dev, unsigned int txqueue);
488487 #ifdef CONFIG_NET_POLL_CONTROLLER
489488 static void tc35815_poll_controller(struct net_device *dev);
490489 #endif
....@@ -607,9 +606,9 @@
607606
608607 static int tc_mii_probe(struct net_device *dev)
609608 {
609
+ __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
610610 struct tc35815_local *lp = netdev_priv(dev);
611611 struct phy_device *phydev;
612
- u32 dropmask;
613612
614613 phydev = phy_find_first(lp->mii_bus);
615614 if (!phydev) {
....@@ -629,18 +628,23 @@
629628 phy_attached_info(phydev);
630629
631630 /* mask with MAC supported features */
632
- phydev->supported &= PHY_BASIC_FEATURES;
633
- dropmask = 0;
634
- if (options.speed == 10)
635
- dropmask |= SUPPORTED_100baseT_Half | SUPPORTED_100baseT_Full;
636
- else if (options.speed == 100)
637
- dropmask |= SUPPORTED_10baseT_Half | SUPPORTED_10baseT_Full;
638
- if (options.duplex == 1)
639
- dropmask |= SUPPORTED_10baseT_Full | SUPPORTED_100baseT_Full;
640
- else if (options.duplex == 2)
641
- dropmask |= SUPPORTED_10baseT_Half | SUPPORTED_100baseT_Half;
642
- phydev->supported &= ~dropmask;
643
- phydev->advertising = phydev->supported;
631
+ phy_set_max_speed(phydev, SPEED_100);
632
+ if (options.speed == 10) {
633
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, mask);
634
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, mask);
635
+ } else if (options.speed == 100) {
636
+ linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT, mask);
637
+ linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, mask);
638
+ }
639
+ if (options.duplex == 1) {
640
+ linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, mask);
641
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Full_BIT, mask);
642
+ } else if (options.duplex == 2) {
643
+ linkmode_set_bit(ETHTOOL_LINK_MODE_10baseT_Half_BIT, mask);
644
+ linkmode_set_bit(ETHTOOL_LINK_MODE_100baseT_Half_BIT, mask);
645
+ }
646
+ linkmode_andnot(phydev->supported, phydev->supported, mask);
647
+ linkmode_copy(phydev->advertising, phydev->supported);
644648
645649 lp->link = 0;
646650 lp->speed = 0;
....@@ -689,10 +693,10 @@
689693 * should provide a "tc35815-mac" device with a MAC address in its
690694 * platform_data.
691695 */
692
-static int tc35815_mac_match(struct device *dev, void *data)
696
+static int tc35815_mac_match(struct device *dev, const void *data)
693697 {
694698 struct platform_device *plat_dev = to_platform_device(dev);
695
- struct pci_dev *pci_dev = data;
699
+ const struct pci_dev *pci_dev = data;
696700 unsigned int id = pci_dev->irq;
697701 return !strcmp(plat_dev->name, "tc35815-mac") && plat_dev->id == id;
698702 }
....@@ -746,7 +750,7 @@
746750 .ndo_get_stats = tc35815_get_stats,
747751 .ndo_set_rx_mode = tc35815_set_multicast_list,
748752 .ndo_tx_timeout = tc35815_tx_timeout,
749
- .ndo_do_ioctl = tc35815_ioctl,
753
+ .ndo_do_ioctl = phy_do_ioctl_running,
750754 .ndo_validate_addr = eth_validate_addr,
751755 .ndo_set_mac_address = eth_mac_addr,
752756 #ifdef CONFIG_NET_POLL_CONTROLLER
....@@ -872,9 +876,9 @@
872876 sizeof(struct TxFD) * TX_FD_NUM >
873877 PAGE_SIZE * FD_PAGE_NUM);
874878
875
- lp->fd_buf = pci_alloc_consistent(lp->pci_dev,
876
- PAGE_SIZE * FD_PAGE_NUM,
877
- &lp->fd_buf_dma);
879
+ lp->fd_buf = dma_alloc_coherent(&lp->pci_dev->dev,
880
+ PAGE_SIZE * FD_PAGE_NUM,
881
+ &lp->fd_buf_dma, GFP_ATOMIC);
878882 if (!lp->fd_buf)
879883 return -ENOMEM;
880884 for (i = 0; i < RX_BUF_NUM; i++) {
....@@ -888,10 +892,9 @@
888892 lp->rx_skbs[i].skb_dma);
889893 lp->rx_skbs[i].skb = NULL;
890894 }
891
- pci_free_consistent(lp->pci_dev,
892
- PAGE_SIZE * FD_PAGE_NUM,
893
- lp->fd_buf,
894
- lp->fd_buf_dma);
895
+ dma_free_coherent(&lp->pci_dev->dev,
896
+ PAGE_SIZE * FD_PAGE_NUM,
897
+ lp->fd_buf, lp->fd_buf_dma);
895898 lp->fd_buf = NULL;
896899 return -ENOMEM;
897900 }
....@@ -986,7 +989,9 @@
986989 BUG_ON(lp->tx_skbs[i].skb != skb);
987990 #endif
988991 if (skb) {
989
- pci_unmap_single(lp->pci_dev, lp->tx_skbs[i].skb_dma, skb->len, PCI_DMA_TODEVICE);
992
+ dma_unmap_single(&lp->pci_dev->dev,
993
+ lp->tx_skbs[i].skb_dma, skb->len,
994
+ DMA_TO_DEVICE);
990995 lp->tx_skbs[i].skb = NULL;
991996 lp->tx_skbs[i].skb_dma = 0;
992997 dev_kfree_skb_any(skb);
....@@ -1018,7 +1023,9 @@
10181023 BUG_ON(lp->tx_skbs[i].skb != skb);
10191024 #endif
10201025 if (skb) {
1021
- pci_unmap_single(lp->pci_dev, lp->tx_skbs[i].skb_dma, skb->len, PCI_DMA_TODEVICE);
1026
+ dma_unmap_single(&lp->pci_dev->dev,
1027
+ lp->tx_skbs[i].skb_dma,
1028
+ skb->len, DMA_TO_DEVICE);
10221029 dev_kfree_skb(skb);
10231030 lp->tx_skbs[i].skb = NULL;
10241031 lp->tx_skbs[i].skb_dma = 0;
....@@ -1040,8 +1047,8 @@
10401047 }
10411048 }
10421049 if (lp->fd_buf) {
1043
- pci_free_consistent(lp->pci_dev, PAGE_SIZE * FD_PAGE_NUM,
1044
- lp->fd_buf, lp->fd_buf_dma);
1050
+ dma_free_coherent(&lp->pci_dev->dev, PAGE_SIZE * FD_PAGE_NUM,
1051
+ lp->fd_buf, lp->fd_buf_dma);
10451052 lp->fd_buf = NULL;
10461053 }
10471054 }
....@@ -1184,7 +1191,7 @@
11841191 spin_unlock_irqrestore(&lp->lock, flags);
11851192 }
11861193
1187
-static void tc35815_tx_timeout(struct net_device *dev)
1194
+static void tc35815_tx_timeout(struct net_device *dev, unsigned int txqueue)
11881195 {
11891196 struct tc35815_regs __iomem *tr =
11901197 (struct tc35815_regs __iomem *)dev->base_addr;
....@@ -1288,7 +1295,10 @@
12881295 BUG_ON(lp->tx_skbs[lp->tfd_start].skb);
12891296 #endif
12901297 lp->tx_skbs[lp->tfd_start].skb = skb;
1291
- lp->tx_skbs[lp->tfd_start].skb_dma = pci_map_single(lp->pci_dev, skb->data, skb->len, PCI_DMA_TODEVICE);
1298
+ lp->tx_skbs[lp->tfd_start].skb_dma = dma_map_single(&lp->pci_dev->dev,
1299
+ skb->data,
1300
+ skb->len,
1301
+ DMA_TO_DEVICE);
12921302
12931303 /*add to ring */
12941304 txfd = &lp->tfd_base[lp->tfd_start];
....@@ -1496,9 +1506,9 @@
14961506 skb = lp->rx_skbs[cur_bd].skb;
14971507 prefetch(skb->data);
14981508 lp->rx_skbs[cur_bd].skb = NULL;
1499
- pci_unmap_single(lp->pci_dev,
1509
+ dma_unmap_single(&lp->pci_dev->dev,
15001510 lp->rx_skbs[cur_bd].skb_dma,
1501
- RX_BUF_SIZE, PCI_DMA_FROMDEVICE);
1511
+ RX_BUF_SIZE, DMA_FROM_DEVICE);
15021512 if (!HAVE_DMA_RXALIGN(lp) && NET_IP_ALIGN != 0)
15031513 memmove(skb->data, skb->data - NET_IP_ALIGN,
15041514 pkt_len);
....@@ -1752,7 +1762,9 @@
17521762 #endif
17531763 if (skb) {
17541764 dev->stats.tx_bytes += skb->len;
1755
- pci_unmap_single(lp->pci_dev, lp->tx_skbs[lp->tfd_end].skb_dma, skb->len, PCI_DMA_TODEVICE);
1765
+ dma_unmap_single(&lp->pci_dev->dev,
1766
+ lp->tx_skbs[lp->tfd_end].skb_dma,
1767
+ skb->len, DMA_TO_DEVICE);
17561768 lp->tx_skbs[lp->tfd_end].skb = NULL;
17571769 lp->tx_skbs[lp->tfd_end].skb_dma = 0;
17581770 dev_kfree_skb_any(skb);
....@@ -2003,15 +2015,6 @@
20032015 .get_link_ksettings = phy_ethtool_get_link_ksettings,
20042016 .set_link_ksettings = phy_ethtool_set_link_ksettings,
20052017 };
2006
-
2007
-static int tc35815_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
2008
-{
2009
- if (!netif_running(dev))
2010
- return -EINVAL;
2011
- if (!dev->phydev)
2012
- return -ENODEV;
2013
- return phy_mii_ioctl(dev->phydev, rq, cmd);
2014
-}
20152018
20162019 static void tc35815_chip_reset(struct net_device *dev)
20172020 {