.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * wanXL serial card driver for Linux |
---|
3 | 4 | * host part |
---|
4 | 5 | * |
---|
5 | 6 | * Copyright (C) 2003 Krzysztof Halasa <khc@pm.waw.pl> |
---|
6 | | - * |
---|
7 | | - * This program is free software; you can redistribute it and/or modify it |
---|
8 | | - * under the terms of version 2 of the GNU General Public License |
---|
9 | | - * as published by the Free Software Foundation. |
---|
10 | 7 | * |
---|
11 | 8 | * Status: |
---|
12 | 9 | * - Only DTE (external clock) support with NRZ and NRZI encodings |
---|
.. | .. |
---|
81 | 78 | struct sk_buff *rx_skbs[RX_QUEUE_LENGTH]; |
---|
82 | 79 | struct card_status *status; /* shared between host and card */ |
---|
83 | 80 | dma_addr_t status_address; |
---|
84 | | - struct port ports[0]; /* 1 - 4 port structures follow */ |
---|
| 81 | + struct port ports[]; /* 1 - 4 port structures follow */ |
---|
85 | 82 | }; |
---|
86 | 83 | |
---|
87 | 84 | |
---|
.. | .. |
---|
102 | 99 | static inline dma_addr_t pci_map_single_debug(struct pci_dev *pdev, void *ptr, |
---|
103 | 100 | size_t size, int direction) |
---|
104 | 101 | { |
---|
105 | | - dma_addr_t addr = pci_map_single(pdev, ptr, size, direction); |
---|
| 102 | + dma_addr_t addr = dma_map_single(&pdev->dev, ptr, size, direction); |
---|
106 | 103 | if (addr + size > 0x100000000LL) |
---|
107 | 104 | pr_crit("%s: pci_map_single() returned memory at 0x%llx!\n", |
---|
108 | 105 | pci_name(pdev), (unsigned long long)addr); |
---|
.. | .. |
---|
183 | 180 | dev->stats.tx_bytes += skb->len; |
---|
184 | 181 | } |
---|
185 | 182 | desc->stat = PACKET_EMPTY; /* Free descriptor */ |
---|
186 | | - pci_unmap_single(port->card->pdev, desc->address, skb->len, |
---|
187 | | - PCI_DMA_TODEVICE); |
---|
188 | | - dev_kfree_skb_irq(skb); |
---|
| 183 | + dma_unmap_single(&port->card->pdev->dev, desc->address, |
---|
| 184 | + skb->len, DMA_TO_DEVICE); |
---|
| 185 | + dev_consume_skb_irq(skb); |
---|
189 | 186 | port->tx_in = (port->tx_in + 1) % TX_BUFFERS; |
---|
190 | 187 | } |
---|
191 | 188 | } |
---|
.. | .. |
---|
210 | 207 | if (!skb) |
---|
211 | 208 | dev->stats.rx_dropped++; |
---|
212 | 209 | else { |
---|
213 | | - pci_unmap_single(card->pdev, desc->address, |
---|
214 | | - BUFFER_LENGTH, |
---|
215 | | - PCI_DMA_FROMDEVICE); |
---|
| 210 | + dma_unmap_single(&card->pdev->dev, |
---|
| 211 | + desc->address, BUFFER_LENGTH, |
---|
| 212 | + DMA_FROM_DEVICE); |
---|
216 | 213 | skb_put(skb, desc->length); |
---|
217 | 214 | |
---|
218 | 215 | #ifdef DEBUG_PKT |
---|
.. | .. |
---|
230 | 227 | if (!skb) { |
---|
231 | 228 | skb = dev_alloc_skb(BUFFER_LENGTH); |
---|
232 | 229 | desc->address = skb ? |
---|
233 | | - pci_map_single(card->pdev, skb->data, |
---|
| 230 | + dma_map_single(&card->pdev->dev, |
---|
| 231 | + skb->data, |
---|
234 | 232 | BUFFER_LENGTH, |
---|
235 | | - PCI_DMA_FROMDEVICE) : 0; |
---|
| 233 | + DMA_FROM_DEVICE) : 0; |
---|
236 | 234 | card->rx_skbs[card->rx_in] = skb; |
---|
237 | 235 | } |
---|
238 | 236 | } |
---|
.. | .. |
---|
294 | 292 | #endif |
---|
295 | 293 | |
---|
296 | 294 | port->tx_skbs[port->tx_out] = skb; |
---|
297 | | - desc->address = pci_map_single(port->card->pdev, skb->data, skb->len, |
---|
298 | | - PCI_DMA_TODEVICE); |
---|
| 295 | + desc->address = dma_map_single(&port->card->pdev->dev, skb->data, |
---|
| 296 | + skb->len, DMA_TO_DEVICE); |
---|
299 | 297 | desc->length = skb->len; |
---|
300 | 298 | desc->stat = PACKET_FULL; |
---|
301 | 299 | writel(1 << (DOORBELL_TO_CARD_TX_0 + port->node), |
---|
.. | .. |
---|
454 | 452 | |
---|
455 | 453 | if (desc->stat != PACKET_EMPTY) { |
---|
456 | 454 | desc->stat = PACKET_EMPTY; |
---|
457 | | - pci_unmap_single(port->card->pdev, desc->address, |
---|
458 | | - port->tx_skbs[i]->len, |
---|
459 | | - PCI_DMA_TODEVICE); |
---|
| 455 | + dma_unmap_single(&port->card->pdev->dev, |
---|
| 456 | + desc->address, port->tx_skbs[i]->len, |
---|
| 457 | + DMA_TO_DEVICE); |
---|
460 | 458 | dev_kfree_skb(port->tx_skbs[i]); |
---|
461 | 459 | } |
---|
462 | 460 | } |
---|
.. | .. |
---|
527 | 525 | |
---|
528 | 526 | for (i = 0; i < RX_QUEUE_LENGTH; i++) |
---|
529 | 527 | if (card->rx_skbs[i]) { |
---|
530 | | - pci_unmap_single(card->pdev, |
---|
| 528 | + dma_unmap_single(&card->pdev->dev, |
---|
531 | 529 | card->status->rx_descs[i].address, |
---|
532 | | - BUFFER_LENGTH, PCI_DMA_FROMDEVICE); |
---|
| 530 | + BUFFER_LENGTH, DMA_FROM_DEVICE); |
---|
533 | 531 | dev_kfree_skb(card->rx_skbs[i]); |
---|
534 | 532 | } |
---|
535 | 533 | |
---|
.. | .. |
---|
537 | 535 | iounmap(card->plx); |
---|
538 | 536 | |
---|
539 | 537 | if (card->status) |
---|
540 | | - pci_free_consistent(pdev, sizeof(struct card_status), |
---|
541 | | - card->status, card->status_address); |
---|
| 538 | + dma_free_coherent(&pdev->dev, sizeof(struct card_status), |
---|
| 539 | + card->status, card->status_address); |
---|
542 | 540 | |
---|
543 | 541 | pci_release_regions(pdev); |
---|
544 | 542 | pci_disable_device(pdev); |
---|
.. | .. |
---|
565 | 563 | u32 plx_phy; /* PLX PCI base address */ |
---|
566 | 564 | u32 mem_phy; /* memory PCI base addr */ |
---|
567 | 565 | u8 __iomem *mem; /* memory virtual base addr */ |
---|
568 | | - int i, ports, alloc_size; |
---|
| 566 | + int i, ports; |
---|
569 | 567 | |
---|
570 | 568 | #ifndef MODULE |
---|
571 | 569 | pr_info_once("%s\n", version); |
---|
.. | .. |
---|
582 | 580 | We set both dma_mask and consistent_dma_mask to 28 bits |
---|
583 | 581 | and pray pci_alloc_consistent() will use this info. It should |
---|
584 | 582 | work on most platforms */ |
---|
585 | | - if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(28)) || |
---|
586 | | - pci_set_dma_mask(pdev, DMA_BIT_MASK(28))) { |
---|
| 583 | + if (dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(28)) || |
---|
| 584 | + dma_set_mask(&pdev->dev, DMA_BIT_MASK(28))) { |
---|
587 | 585 | pr_err("No usable DMA configuration\n"); |
---|
588 | 586 | pci_disable_device(pdev); |
---|
589 | 587 | return -EIO; |
---|
.. | .. |
---|
601 | 599 | default: ports = 4; |
---|
602 | 600 | } |
---|
603 | 601 | |
---|
604 | | - alloc_size = sizeof(struct card) + ports * sizeof(struct port); |
---|
605 | | - card = kzalloc(alloc_size, GFP_KERNEL); |
---|
| 602 | + card = kzalloc(struct_size(card, ports, ports), GFP_KERNEL); |
---|
606 | 603 | if (card == NULL) { |
---|
607 | 604 | pci_release_regions(pdev); |
---|
608 | 605 | pci_disable_device(pdev); |
---|
.. | .. |
---|
612 | 609 | pci_set_drvdata(pdev, card); |
---|
613 | 610 | card->pdev = pdev; |
---|
614 | 611 | |
---|
615 | | - card->status = pci_alloc_consistent(pdev, |
---|
616 | | - sizeof(struct card_status), |
---|
617 | | - &card->status_address); |
---|
| 612 | + card->status = dma_alloc_coherent(&pdev->dev, |
---|
| 613 | + sizeof(struct card_status), |
---|
| 614 | + &card->status_address, GFP_KERNEL); |
---|
618 | 615 | if (card->status == NULL) { |
---|
619 | 616 | wanxl_pci_remove_one(pdev); |
---|
620 | 617 | return -ENOBUFS; |
---|
.. | .. |
---|
629 | 626 | /* FIXME when PCI/DMA subsystems are fixed. |
---|
630 | 627 | We set both dma_mask and consistent_dma_mask back to 32 bits |
---|
631 | 628 | to indicate the card can do 32-bit DMA addressing */ |
---|
632 | | - if (pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) || |
---|
633 | | - pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { |
---|
| 629 | + if (dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)) || |
---|
| 630 | + dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) { |
---|
634 | 631 | pr_err("No usable DMA configuration\n"); |
---|
635 | 632 | wanxl_pci_remove_one(pdev); |
---|
636 | 633 | return -EIO; |
---|
.. | .. |
---|
639 | 636 | /* set up PLX mapping */ |
---|
640 | 637 | plx_phy = pci_resource_start(pdev, 0); |
---|
641 | 638 | |
---|
642 | | - card->plx = ioremap_nocache(plx_phy, 0x70); |
---|
| 639 | + card->plx = ioremap(plx_phy, 0x70); |
---|
643 | 640 | if (!card->plx) { |
---|
644 | 641 | pr_err("ioremap() failed\n"); |
---|
645 | 642 | wanxl_pci_remove_one(pdev); |
---|
.. | .. |
---|
703 | 700 | card->rx_skbs[i] = skb; |
---|
704 | 701 | if (skb) |
---|
705 | 702 | card->status->rx_descs[i].address = |
---|
706 | | - pci_map_single(card->pdev, skb->data, |
---|
707 | | - BUFFER_LENGTH, |
---|
708 | | - PCI_DMA_FROMDEVICE); |
---|
| 703 | + dma_map_single(&card->pdev->dev, skb->data, |
---|
| 704 | + BUFFER_LENGTH, DMA_FROM_DEVICE); |
---|
709 | 705 | } |
---|
710 | 706 | |
---|
711 | | - mem = ioremap_nocache(mem_phy, PDM_OFFSET + sizeof(firmware)); |
---|
| 707 | + mem = ioremap(mem_phy, PDM_OFFSET + sizeof(firmware)); |
---|
712 | 708 | if (!mem) { |
---|
713 | 709 | pr_err("ioremap() failed\n"); |
---|
714 | 710 | wanxl_pci_remove_one(pdev); |
---|