Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

smsc9420: switch from 'pci_' to 'dma_' API

The wrappers in include/linux/pci-dma-compat.h should go away.

The patch has been generated with the coccinelle script below and has been
hand modified to replace GFP_ with a correct flag.
It has been compile tested.

When memory is allocated in 'smsc9420_probe()', GFP_KERNEL can be used
because it is a probe function and no lock is acquired.

While at it, rewrite the size passed to 'dma_alloc_coherent()' the same way
as the one passed to 'dma_free_coherent()'. This form is less verbose:
sizeof(struct smsc9420_dma_desc) * RX_RING_SIZE +
sizeof(struct smsc9420_dma_desc) * TX_RING_SIZE,
vs
sizeof(struct smsc9420_dma_desc) * (RX_RING_SIZE + TX_RING_SIZE)

@@
@@
- PCI_DMA_BIDIRECTIONAL
+ DMA_BIDIRECTIONAL

@@
@@
- PCI_DMA_TODEVICE
+ DMA_TO_DEVICE

@@
@@
- PCI_DMA_FROMDEVICE
+ DMA_FROM_DEVICE

@@
@@
- PCI_DMA_NONE
+ DMA_NONE

@@
expression e1, e2, e3;
@@
- pci_alloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3;
@@
- pci_zalloc_consistent(e1, e2, e3)
+ dma_alloc_coherent(&e1->dev, e2, e3, GFP_)

@@
expression e1, e2, e3, e4;
@@
- pci_free_consistent(e1, e2, e3, e4)
+ dma_free_coherent(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_map_single(e1, e2, e3, e4)
+ dma_map_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_single(e1, e2, e3, e4)
+ dma_unmap_single(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4, e5;
@@
- pci_map_page(e1, e2, e3, e4, e5)
+ dma_map_page(&e1->dev, e2, e3, e4, e5)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_page(e1, e2, e3, e4)
+ dma_unmap_page(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_map_sg(e1, e2, e3, e4)
+ dma_map_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_unmap_sg(e1, e2, e3, e4)
+ dma_unmap_sg(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
+ dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_single_for_device(e1, e2, e3, e4)
+ dma_sync_single_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
+ dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)

@@
expression e1, e2, e3, e4;
@@
- pci_dma_sync_sg_for_device(e1, e2, e3, e4)
+ dma_sync_sg_for_device(&e1->dev, e2, e3, e4)

@@
expression e1, e2;
@@
- pci_dma_mapping_error(e1, e2)
+ dma_mapping_error(&e1->dev, e2)

@@
expression e1, e2;
@@
- pci_set_dma_mask(e1, e2)
+ dma_set_mask(&e1->dev, e2)

@@
expression e1, e2;
@@
- pci_set_consistent_dma_mask(e1, e2)
+ dma_set_coherent_mask(&e1->dev, e2)

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Christophe JAILLET and committed by
David S. Miller
3ab1270b 63692803

+28 -23
+28 -23
drivers/net/ethernet/smsc/smsc9420.c
··· 497 497 498 498 if (skb) { 499 499 BUG_ON(!pd->tx_buffers[i].mapping); 500 - pci_unmap_single(pd->pdev, pd->tx_buffers[i].mapping, 501 - skb->len, PCI_DMA_TODEVICE); 500 + dma_unmap_single(&pd->pdev->dev, 501 + pd->tx_buffers[i].mapping, skb->len, 502 + DMA_TO_DEVICE); 502 503 dev_kfree_skb_any(skb); 503 504 } 504 505 ··· 531 530 dev_kfree_skb_any(pd->rx_buffers[i].skb); 532 531 533 532 if (pd->rx_buffers[i].mapping) 534 - pci_unmap_single(pd->pdev, pd->rx_buffers[i].mapping, 535 - PKT_BUF_SZ, PCI_DMA_FROMDEVICE); 533 + dma_unmap_single(&pd->pdev->dev, 534 + pd->rx_buffers[i].mapping, 535 + PKT_BUF_SZ, DMA_FROM_DEVICE); 536 536 537 537 pd->rx_ring[i].status = 0; 538 538 pd->rx_ring[i].length = 0; ··· 751 749 dev->stats.rx_packets++; 752 750 dev->stats.rx_bytes += packet_length; 753 751 754 - pci_unmap_single(pd->pdev, pd->rx_buffers[index].mapping, 755 - PKT_BUF_SZ, PCI_DMA_FROMDEVICE); 752 + dma_unmap_single(&pd->pdev->dev, pd->rx_buffers[index].mapping, 753 + PKT_BUF_SZ, DMA_FROM_DEVICE); 756 754 pd->rx_buffers[index].mapping = 0; 757 755 758 756 skb = pd->rx_buffers[index].skb; ··· 784 782 if (unlikely(!skb)) 785 783 return -ENOMEM; 786 784 787 - mapping = pci_map_single(pd->pdev, skb_tail_pointer(skb), 788 - PKT_BUF_SZ, PCI_DMA_FROMDEVICE); 789 - if (pci_dma_mapping_error(pd->pdev, mapping)) { 785 + mapping = dma_map_single(&pd->pdev->dev, skb_tail_pointer(skb), 786 + PKT_BUF_SZ, DMA_FROM_DEVICE); 787 + if (dma_mapping_error(&pd->pdev->dev, mapping)) { 790 788 dev_kfree_skb_any(skb); 791 789 netif_warn(pd, rx_err, pd->dev, "pci_map_single failed!\n"); 792 790 return -ENOMEM; ··· 903 901 BUG_ON(!pd->tx_buffers[index].skb); 904 902 BUG_ON(!pd->tx_buffers[index].mapping); 905 903 906 - pci_unmap_single(pd->pdev, pd->tx_buffers[index].mapping, 907 - pd->tx_buffers[index].skb->len, PCI_DMA_TODEVICE); 904 + dma_unmap_single(&pd->pdev->dev, 905 + pd->tx_buffers[index].mapping, 906 + pd->tx_buffers[index].skb->len, 907 + DMA_TO_DEVICE); 908 908 pd->tx_buffers[index].mapping = 0; 909 909 910 910 dev_kfree_skb_any(pd->tx_buffers[index].skb); ··· 936 932 BUG_ON(pd->tx_buffers[index].skb); 937 933 BUG_ON(pd->tx_buffers[index].mapping); 938 934 939 - mapping = pci_map_single(pd->pdev, skb->data, 940 - skb->len, PCI_DMA_TODEVICE); 941 - if (pci_dma_mapping_error(pd->pdev, mapping)) { 935 + mapping = dma_map_single(&pd->pdev->dev, skb->data, skb->len, 936 + DMA_TO_DEVICE); 937 + if (dma_mapping_error(&pd->pdev->dev, mapping)) { 942 938 netif_warn(pd, tx_err, pd->dev, 943 939 "pci_map_single failed, dropping packet\n"); 944 940 return NETDEV_TX_BUSY; ··· 1526 1522 goto out_free_netdev_2; 1527 1523 } 1528 1524 1529 - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { 1525 + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) { 1530 1526 netdev_err(dev, "No usable DMA configuration, aborting\n"); 1531 1527 goto out_free_regions_3; 1532 1528 } ··· 1544 1540 pd = netdev_priv(dev); 1545 1541 1546 1542 /* pci descriptors are created in the PCI consistent area */ 1547 - pd->rx_ring = pci_alloc_consistent(pdev, 1548 - sizeof(struct smsc9420_dma_desc) * RX_RING_SIZE + 1549 - sizeof(struct smsc9420_dma_desc) * TX_RING_SIZE, 1550 - &pd->rx_dma_addr); 1543 + pd->rx_ring = dma_alloc_coherent(&pdev->dev, 1544 + sizeof(struct smsc9420_dma_desc) * (RX_RING_SIZE + TX_RING_SIZE), 1545 + &pd->rx_dma_addr, GFP_KERNEL); 1551 1546 1552 1547 if (!pd->rx_ring) 1553 1548 goto out_free_io_4; ··· 1602 1599 return 0; 1603 1600 1604 1601 out_free_dmadesc_5: 1605 - pci_free_consistent(pdev, sizeof(struct smsc9420_dma_desc) * 1606 - (RX_RING_SIZE + TX_RING_SIZE), pd->rx_ring, pd->rx_dma_addr); 1602 + dma_free_coherent(&pdev->dev, 1603 + sizeof(struct smsc9420_dma_desc) * (RX_RING_SIZE + TX_RING_SIZE), 1604 + pd->rx_ring, pd->rx_dma_addr); 1607 1605 out_free_io_4: 1608 1606 iounmap(virt_addr - LAN9420_CPSR_ENDIAN_OFFSET); 1609 1607 out_free_regions_3: ··· 1636 1632 BUG_ON(!pd->tx_ring); 1637 1633 BUG_ON(!pd->rx_ring); 1638 1634 1639 - pci_free_consistent(pdev, sizeof(struct smsc9420_dma_desc) * 1640 - (RX_RING_SIZE + TX_RING_SIZE), pd->rx_ring, pd->rx_dma_addr); 1635 + dma_free_coherent(&pdev->dev, 1636 + sizeof(struct smsc9420_dma_desc) * (RX_RING_SIZE + TX_RING_SIZE), 1637 + pd->rx_ring, pd->rx_dma_addr); 1641 1638 1642 1639 iounmap(pd->ioaddr - LAN9420_CPSR_ENDIAN_OFFSET); 1643 1640 pci_release_regions(pdev);