From patchwork Wed Oct 10 15:35:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10634765 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7375B69B1 for ; Wed, 10 Oct 2018 15:35:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7051A2A71F for ; Wed, 10 Oct 2018 15:35:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 64A0F2A730; Wed, 10 Oct 2018 15:35:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E373C2A71F for ; Wed, 10 Oct 2018 15:35:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727039AbeJJW56 (ORCPT ); Wed, 10 Oct 2018 18:57:58 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:47910 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726689AbeJJW56 (ORCPT ); Wed, 10 Oct 2018 18:57:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=zCOvsmTLxYzZUSWxuAowgDln3+PDg8dssUSXb3BMPGo=; b=cLKxv975+UrYk5QVtLZNYFXIry QGTxLwWFe1XAJihyuVMUOdlnDXmrwaLY1u+GsjatvbSJHcmIW2nKjymJucaBnkx1Q0Grtc+5yI/L0 mHCeoimUbRaZfrHv4wDQ0tfbNlcj+0YQihrQwilLxQJA7mJ8CIeiHyWhIE+2d5Y9aixtr+xEYf38L ZFdL2ck8GLziKx+QKOMPSUIO+LYiJa893v1tlnLK7vVoxCRSc0lTc8CiN94myJddfb6siG9Rufxx+ b6vTZth5b6X1JoU7g871NpjAE5O8BcBy9nd1E1+OQp93lViWQP55UNz554OjY4jbNYUNEBxd5Pp1X Uc3Nvn+g==; Received: from 089144207060.atnat0016.highway.bob.at ([89.144.207.60] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gAGW1-0001xN-TC; Wed, 10 Oct 2018 15:35:14 +0000 From: Christoph Hellwig To: linux-scsi@vger.kernel.org Cc: Michael Schmitz , Finn Thain , Hannes Reinecke , Thomas Bogendoerfer , "David S . Miller" Subject: [PATCH 1/4] am53c974: use the generic DMA API Date: Wed, 10 Oct 2018 17:35:04 +0200 Message-Id: <20181010153507.8020-2-hch@lst.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181010153507.8020-1-hch@lst.de> References: <20181010153507.8020-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Remove usage of the legacy PCI DMA API. To make this easier we also store a struct device instead of pci_dev in the dev field of struct esp. Signed-off-by: Christoph Hellwig --- drivers/scsi/am53c974.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/drivers/scsi/am53c974.c b/drivers/scsi/am53c974.c index d81ca66e24d6..3890ea5cd4a6 100644 --- a/drivers/scsi/am53c974.c +++ b/drivers/scsi/am53c974.c @@ -96,9 +96,7 @@ static void pci_esp_dma_drain(struct esp *esp); static inline struct pci_esp_priv *pci_esp_get_priv(struct esp *esp) { - struct pci_dev *pdev = esp->dev; - - return pci_get_drvdata(pdev); + return dev_get_drvdata(esp->dev); } static void pci_esp_write8(struct esp *esp, u8 val, unsigned long reg) @@ -119,25 +117,25 @@ static void pci_esp_write32(struct esp *esp, u32 val, unsigned long reg) static dma_addr_t pci_esp_map_single(struct esp *esp, void *buf, size_t sz, int dir) { - return pci_map_single(esp->dev, buf, sz, dir); + return dma_map_single(esp->dev, buf, sz, dir); } static int pci_esp_map_sg(struct esp *esp, struct scatterlist *sg, int num_sg, int dir) { - return pci_map_sg(esp->dev, sg, num_sg, dir); + return dma_map_sg(esp->dev, sg, num_sg, dir); } static void pci_esp_unmap_single(struct esp *esp, dma_addr_t addr, size_t sz, int dir) { - pci_unmap_single(esp->dev, addr, sz, dir); + dma_unmap_single(esp->dev, addr, sz, dir); } static void pci_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, int num_sg, int dir) { - pci_unmap_sg(esp->dev, sg, num_sg, dir); + dma_unmap_sg(esp->dev, sg, num_sg, dir); } static int pci_esp_irq_pending(struct esp *esp) @@ -375,18 +373,18 @@ static void dc390_read_eeprom(struct pci_dev *pdev, u16 *ptr) static void dc390_check_eeprom(struct esp *esp) { + struct pci_dev *pdev = to_pci_dev(esp->dev); u8 EEbuf[128]; u16 *ptr = (u16 *)EEbuf, wval = 0; int i; - dc390_read_eeprom((struct pci_dev *)esp->dev, ptr); + dc390_read_eeprom(pdev, ptr); for (i = 0; i < DC390_EEPROM_LEN; i++, ptr++) wval += *ptr; /* no Tekram EEprom found */ if (wval != 0x1234) { - struct pci_dev *pdev = esp->dev; dev_printk(KERN_INFO, &pdev->dev, "No valid Tekram EEprom found\n"); return; @@ -411,7 +409,7 @@ static int pci_esp_probe_one(struct pci_dev *pdev, return -ENODEV; } - if (pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) { + if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) { dev_printk(KERN_INFO, &pdev->dev, "failed to set 32bit DMA mask\n"); goto fail_disable_device; @@ -435,7 +433,7 @@ static int pci_esp_probe_one(struct pci_dev *pdev, esp = shost_priv(shost); esp->host = shost; - esp->dev = pdev; + esp->dev = &pdev->dev; esp->ops = &pci_esp_ops; /* * The am53c974 HBA has a design flaw of generating @@ -467,8 +465,8 @@ static int pci_esp_probe_one(struct pci_dev *pdev, pci_set_master(pdev); - esp->command_block = pci_alloc_consistent(pdev, 16, - &esp->command_block_dma); + esp->command_block = dma_alloc_coherent(&pdev->dev, 16, + &esp->command_block_dma, GFP_KERNEL); if (!esp->command_block) { dev_printk(KERN_ERR, &pdev->dev, "failed to allocate command block\n"); @@ -508,8 +506,8 @@ static int pci_esp_probe_one(struct pci_dev *pdev, free_irq(pdev->irq, esp); fail_unmap_command_block: pci_set_drvdata(pdev, NULL); - pci_free_consistent(pdev, 16, esp->command_block, - esp->command_block_dma); + dma_free_coherent(&pdev->dev, 16, esp->command_block, + esp->command_block_dma); fail_unmap_regs: pci_iounmap(pdev, esp->regs); fail_release_regions: @@ -532,8 +530,8 @@ static void pci_esp_remove_one(struct pci_dev *pdev) scsi_esp_unregister(esp); free_irq(pdev->irq, esp); pci_set_drvdata(pdev, NULL); - pci_free_consistent(pdev, 16, esp->command_block, - esp->command_block_dma); + dma_free_coherent(&pdev->dev, 16, esp->command_block, + esp->command_block_dma); pci_iounmap(pdev, esp->regs); pci_release_regions(pdev); pci_disable_device(pdev); From patchwork Wed Oct 10 15:35:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10634767 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3F26C13AD for ; Wed, 10 Oct 2018 15:35:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E378C2A71F for ; Wed, 10 Oct 2018 15:35:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D7B9B2A722; Wed, 10 Oct 2018 15:35:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 100512A720 for ; Wed, 10 Oct 2018 15:35:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726840AbeJJW6B (ORCPT ); Wed, 10 Oct 2018 18:58:01 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:47938 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726479AbeJJW6A (ORCPT ); Wed, 10 Oct 2018 18:58:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=hSpYJEpcolzqjEw6RQAzVzcr/jcdCB4VUg1+lNVAvwU=; b=hUiSM16DuerCbvqarzuIXzdNBl 2gn98JFywFk2/kHfdR8ZL7yC3fMwvZsH/QXb0Xhz+QQTAr96Bcjoy/gjZTEenBDJUE8uLDlvljdCJ WKKj6/7rhd8mGd5FgOpXR7nG0+PQ+J3mcy+B+yk+iACcIOpEasATLteMM3Qr1OMpaV1pJw+wbqH+7 akTne9tbu4VqDmS5hg9VmQ5RXbBo5OXwcPT6atKd1ucg6JGf/tLhgsye49lvxjSlIE0XtVMaP+gzL 6W0OVyBHZAqXszELnqMa+3QrLy6iWXWUUGf7l0sEUo/pRdYQtZ1bAhSPyULw/M6yuw61z0yipoHSR mhCTuLlw==; Received: from 089144207060.atnat0016.highway.bob.at ([89.144.207.60] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gAGW4-00025h-PO; Wed, 10 Oct 2018 15:35:17 +0000 From: Christoph Hellwig To: linux-scsi@vger.kernel.org Cc: Michael Schmitz , Finn Thain , Hannes Reinecke , Thomas Bogendoerfer , "David S . Miller" Subject: [PATCH 2/4] sun_esp: don't use GFP_ATOMIC for command block allocation Date: Wed, 10 Oct 2018 17:35:05 +0200 Message-Id: <20181010153507.8020-3-hch@lst.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181010153507.8020-1-hch@lst.de> References: <20181010153507.8020-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP esp_sbus_map_command_block is called straight from the probe routine without any locks held, so we can safely use GFP_KERNEL here. Signed-off-by: Christoph Hellwig --- drivers/scsi/sun_esp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/scsi/sun_esp.c b/drivers/scsi/sun_esp.c index 747ee64a78e1..c7b60ed61c38 100644 --- a/drivers/scsi/sun_esp.c +++ b/drivers/scsi/sun_esp.c @@ -104,7 +104,7 @@ static int esp_sbus_map_command_block(struct esp *esp) esp->command_block = dma_alloc_coherent(&op->dev, 16, &esp->command_block_dma, - GFP_ATOMIC); + GFP_KERNEL); if (!esp->command_block) return -ENOMEM; return 0; From patchwork Wed Oct 10 15:35:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10634769 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 77889679F for ; Wed, 10 Oct 2018 15:35:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6A1C92A71F for ; Wed, 10 Oct 2018 15:35:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5E0A12A722; Wed, 10 Oct 2018 15:35:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BFC932A71F for ; Wed, 10 Oct 2018 15:35:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727059AbeJJW6E (ORCPT ); Wed, 10 Oct 2018 18:58:04 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:47960 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726479AbeJJW6D (ORCPT ); Wed, 10 Oct 2018 18:58:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=5ne0mRcZ9hc37GMvYIXd1xcbQBQ8H17TL2OUg0882vk=; b=Soce65XkYZ1WFq7aUuuYROnAZG u8jhqCjsD/9YnRuEGdPNJsbqObgLuxQs+voIHLjGbtu+oXqUcrdeH5G2iEYY2l9grv7h5zXZ77fpH mpWEZ5lNjHMep+J5Tq5rPYiVqkW2NKhqKLA4KgARV9MXMrKc/lUe/E27xssHxdaM0q6IKD1lFNn1B qDaaaigdOkNBNXJm4biygYtkYr7lJSX9JkwI4fM5ixHyAG8QRn4JDo1aDRjgMrGkC/s4MjE5Pfah0 Y8ARwf/mi4xMTgsIJQzNd5hZV5DiEubDr89/ue/gI4DiACJol6pW3qXbUDpby5GtZ56lLswSi46RK 1SsreJRQ==; Received: from 089144207060.atnat0016.highway.bob.at ([89.144.207.60] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gAGW7-0002Hb-Mr; Wed, 10 Oct 2018 15:35:20 +0000 From: Christoph Hellwig To: linux-scsi@vger.kernel.org Cc: Michael Schmitz , Finn Thain , Hannes Reinecke , Thomas Bogendoerfer , "David S . Miller" Subject: [PATCH 3/4] esp_scsi: use strong typing for the dev field Date: Wed, 10 Oct 2018 17:35:06 +0200 Message-Id: <20181010153507.8020-4-hch@lst.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181010153507.8020-1-hch@lst.de> References: <20181010153507.8020-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP esp->dev is a void pointer that points either to a struct device, or a struct platform_device. As we can easily get from the device to the platform_device if needed change it to always point to a struct device and properly type the pointer to avoid errors. Signed-off-by: Christoph Hellwig --- drivers/scsi/esp_scsi.h | 2 +- drivers/scsi/mac_esp.c | 5 ++--- drivers/scsi/sun_esp.c | 37 ++++++++++++++----------------------- 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/drivers/scsi/esp_scsi.h b/drivers/scsi/esp_scsi.h index 8163dca2071b..f98abd0ead57 100644 --- a/drivers/scsi/esp_scsi.h +++ b/drivers/scsi/esp_scsi.h @@ -435,7 +435,7 @@ struct esp { const struct esp_driver_ops *ops; struct Scsi_Host *host; - void *dev; + struct device *dev; struct esp_cmd_entry *active_cmd; diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c index eb551f3cc471..85d067889a9b 100644 --- a/drivers/scsi/mac_esp.c +++ b/drivers/scsi/mac_esp.c @@ -58,8 +58,7 @@ static struct esp *esp_chips[2]; static DEFINE_SPINLOCK(esp_chips_lock); #define MAC_ESP_GET_PRIV(esp) ((struct mac_esp_priv *) \ - platform_get_drvdata((struct platform_device *) \ - (esp->dev))) + dev_get_drvdata((esp)->dev)) static inline void mac_esp_write8(struct esp *esp, u8 val, unsigned long reg) { @@ -508,7 +507,7 @@ static int esp_mac_probe(struct platform_device *dev) esp = shost_priv(host); esp->host = host; - esp->dev = dev; + esp->dev = &dev->dev; esp->command_block = kzalloc(16, GFP_KERNEL); if (!esp->command_block) diff --git a/drivers/scsi/sun_esp.c b/drivers/scsi/sun_esp.c index c7b60ed61c38..c025f7ddaeb0 100644 --- a/drivers/scsi/sun_esp.c +++ b/drivers/scsi/sun_esp.c @@ -80,7 +80,7 @@ static int esp_sbus_setup_dma(struct esp *esp, struct platform_device *dma_of) static int esp_sbus_map_regs(struct esp *esp, int hme) { - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); struct resource *res; /* On HME, two reg sets exist, first is DVMA, @@ -100,9 +100,9 @@ static int esp_sbus_map_regs(struct esp *esp, int hme) static int esp_sbus_map_command_block(struct esp *esp) { - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); - esp->command_block = dma_alloc_coherent(&op->dev, 16, + esp->command_block = dma_alloc_coherent(dev, 16, &esp->command_block_dma, GFP_KERNEL); if (!esp->command_block) @@ -113,7 +113,7 @@ static int esp_sbus_map_command_block(struct esp *esp) static int esp_sbus_register_irq(struct esp *esp) { struct Scsi_Host *host = esp->host; - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); host->irq = op->archdata.irqs[0]; return request_irq(host->irq, scsi_esp_intr, IRQF_SHARED, "ESP", esp); @@ -121,7 +121,7 @@ static int esp_sbus_register_irq(struct esp *esp) static void esp_get_scsi_id(struct esp *esp, struct platform_device *espdma) { - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); struct device_node *dp; dp = op->dev.of_node; @@ -143,7 +143,7 @@ static void esp_get_scsi_id(struct esp *esp, struct platform_device *espdma) static void esp_get_differential(struct esp *esp) { - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); struct device_node *dp; dp = op->dev.of_node; @@ -155,7 +155,7 @@ static void esp_get_differential(struct esp *esp) static void esp_get_clock_params(struct esp *esp) { - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); struct device_node *bus_dp, *dp; int fmhz; @@ -172,7 +172,7 @@ static void esp_get_clock_params(struct esp *esp) static void esp_get_bursts(struct esp *esp, struct platform_device *dma_of) { struct device_node *dma_dp = dma_of->dev.of_node; - struct platform_device *op = esp->dev; + struct platform_device *op = to_platform_device(esp->dev); struct device_node *dp; u8 bursts, val; @@ -215,33 +215,25 @@ static u8 sbus_esp_read8(struct esp *esp, unsigned long reg) static dma_addr_t sbus_esp_map_single(struct esp *esp, void *buf, size_t sz, int dir) { - struct platform_device *op = esp->dev; - - return dma_map_single(&op->dev, buf, sz, dir); + return dma_map_single(esp->dev, buf, sz, dir); } static int sbus_esp_map_sg(struct esp *esp, struct scatterlist *sg, int num_sg, int dir) { - struct platform_device *op = esp->dev; - - return dma_map_sg(&op->dev, sg, num_sg, dir); + return dma_map_sg(esp->dev, sg, num_sg, dir); } static void sbus_esp_unmap_single(struct esp *esp, dma_addr_t addr, size_t sz, int dir) { - struct platform_device *op = esp->dev; - - dma_unmap_single(&op->dev, addr, sz, dir); + dma_unmap_single(esp->dev, addr, sz, dir); } static void sbus_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, int num_sg, int dir) { - struct platform_device *op = esp->dev; - - dma_unmap_sg(&op->dev, sg, num_sg, dir); + dma_unmap_sg(esp->dev, sg, num_sg, dir); } static int sbus_esp_irq_pending(struct esp *esp) @@ -255,14 +247,13 @@ static void sbus_esp_reset_dma(struct esp *esp) { int can_do_burst16, can_do_burst32, can_do_burst64; int can_do_sbus64, lim; - struct platform_device *op; + struct platform_device *op = to_platform_device(esp->dev); u32 val; can_do_burst16 = (esp->bursts & DMA_BURST16) != 0; can_do_burst32 = (esp->bursts & DMA_BURST32) != 0; can_do_burst64 = 0; can_do_sbus64 = 0; - op = esp->dev; if (sbus_can_dma_64bit()) can_do_sbus64 = 1; if (sbus_can_burst64()) @@ -504,7 +495,7 @@ static int esp_sbus_probe_one(struct platform_device *op, esp = shost_priv(host); esp->host = host; - esp->dev = op; + esp->dev = &op->dev; esp->ops = &sbus_esp_ops; if (hme) From patchwork Wed Oct 10 15:35:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 10634771 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A406769B4 for ; Wed, 10 Oct 2018 15:35:26 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A1BB2A71F for ; Wed, 10 Oct 2018 15:35:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8E29D2A722; Wed, 10 Oct 2018 15:35:26 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 68C352A71F for ; Wed, 10 Oct 2018 15:35:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726725AbeJJW6G (ORCPT ); Wed, 10 Oct 2018 18:58:06 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:47992 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726479AbeJJW6G (ORCPT ); Wed, 10 Oct 2018 18:58:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Y2ZzfAupc8ExNfDzsObYcbJsuq10jOY4IRtWn+8D/M4=; b=jrD0Ixfz3aHdmyaiTgVNHDsqmr Qxjos5SM6pxPvwDwDeEQUHIMpdK+Q9sDzGHge4yFxUlZJiacSkMaD2KMsKMY3sU86gaGMqB+Nru0/ Oq/Hk7MyR5wKL86mHo125lYKTvfgQsv0mN664Olz7jtivTRtnVFp/rJaNu9ltLPmXZZVfdobtcsbl aq47xSe52V/GWCeRVgSYJd3ZHAGOLN0Hwfw6nDl+L2SrAd1gCCuwK0gdINDhfE7V9X4TNYYN4Q08E Yngu7lkoYfp8x3y1yrV9v7N2iQAL97OmQSXjfLIztZERMxaFb6/QMYrmWI0ANTiFOY4ONAj/9Vsom DDoH5zAQ==; Received: from 089144207060.atnat0016.highway.bob.at ([89.144.207.60] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.90_1 #2 (Red Hat Linux)) id 1gAGWA-0002Tm-JJ; Wed, 10 Oct 2018 15:35:23 +0000 From: Christoph Hellwig To: linux-scsi@vger.kernel.org Cc: Michael Schmitz , Finn Thain , Hannes Reinecke , Thomas Bogendoerfer , "David S . Miller" Subject: [PATCH 4/4] esp_scsi: move dma mapping into the core code Date: Wed, 10 Oct 2018 17:35:07 +0200 Message-Id: <20181010153507.8020-5-hch@lst.de> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181010153507.8020-1-hch@lst.de> References: <20181010153507.8020-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Except for the mac_esp driver, which uses PIO or pseudo DMA, all drivers share the same dma mapping calls. Move the dma mapping into the core code using the scsi_dma_map / scsi_dma_unmap helpers, with a special identify mapping variant triggered off a new ESP_FLAG_NO_DMA_MAP flag for mac_esp. Signed-off-by: Christoph Hellwig --- drivers/scsi/am53c974.c | 28 -------------- drivers/scsi/esp_scsi.c | 80 ++++++++++++++++++++++------------------ drivers/scsi/esp_scsi.h | 14 +------ drivers/scsi/jazz_esp.c | 28 -------------- drivers/scsi/mac_esp.c | 39 +------------------- drivers/scsi/sun3x_esp.c | 28 -------------- drivers/scsi/sun_esp.c | 28 -------------- drivers/scsi/zorro_esp.c | 48 ------------------------ 8 files changed, 48 insertions(+), 245 deletions(-) diff --git a/drivers/scsi/am53c974.c b/drivers/scsi/am53c974.c index 3890ea5cd4a6..49f6a6377517 100644 --- a/drivers/scsi/am53c974.c +++ b/drivers/scsi/am53c974.c @@ -114,30 +114,6 @@ static void pci_esp_write32(struct esp *esp, u32 val, unsigned long reg) return iowrite32(val, esp->regs + (reg * 4UL)); } -static dma_addr_t pci_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return dma_map_single(esp->dev, buf, sz, dir); -} - -static int pci_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - return dma_map_sg(esp->dev, sg, num_sg, dir); -} - -static void pci_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - dma_unmap_single(esp->dev, addr, sz, dir); -} - -static void pci_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - dma_unmap_sg(esp->dev, sg, num_sg, dir); -} - static int pci_esp_irq_pending(struct esp *esp) { struct pci_esp_priv *pep = pci_esp_get_priv(esp); @@ -293,10 +269,6 @@ static u32 pci_esp_dma_length_limit(struct esp *esp, u32 dma_addr, u32 dma_len) static const struct esp_driver_ops pci_esp_ops = { .esp_write8 = pci_esp_write8, .esp_read8 = pci_esp_read8, - .map_single = pci_esp_map_single, - .map_sg = pci_esp_map_sg, - .unmap_single = pci_esp_unmap_single, - .unmap_sg = pci_esp_unmap_sg, .irq_pending = pci_esp_irq_pending, .reset_dma = pci_esp_reset_dma, .dma_drain = pci_esp_dma_drain, diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c index c3fc34b9964d..7cdf7b8d1c81 100644 --- a/drivers/scsi/esp_scsi.c +++ b/drivers/scsi/esp_scsi.c @@ -369,19 +369,25 @@ static void esp_map_dma(struct esp *esp, struct scsi_cmnd *cmd) { struct esp_cmd_priv *spriv = ESP_CMD_PRIV(cmd); struct scatterlist *sg = scsi_sglist(cmd); - int dir = cmd->sc_data_direction; - int total, i; + int total = 0, i; - if (dir == DMA_NONE) - return; - - spriv->u.num_sg = esp->ops->map_sg(esp, sg, scsi_sg_count(cmd), dir); + if (esp->flags & ESP_FLAG_NO_DMA_MAP) { + /* + * For pseudo DMA and PIO we need the virtual address instead of + * a dma address, so perform an identity mapping. + */ + spriv->u.num_sg = scsi_sg_count(cmd); + for (i = 0; i < spriv->u.num_sg; i++) { + sg[i].dma_address = (uintptr_t)sg_virt(&sg[i]); + total += sg_dma_len(&sg[i]); + } + } else { + spriv->u.num_sg = scsi_dma_map(cmd); + for (i = 0; i < spriv->u.num_sg; i++) + total += sg_dma_len(&sg[i]); + } spriv->cur_residue = sg_dma_len(sg); spriv->cur_sg = sg; - - total = 0; - for (i = 0; i < spriv->u.num_sg; i++) - total += sg_dma_len(&sg[i]); spriv->tot_residue = total; } @@ -441,13 +447,8 @@ static void esp_advance_dma(struct esp *esp, struct esp_cmd_entry *ent, static void esp_unmap_dma(struct esp *esp, struct scsi_cmnd *cmd) { - struct esp_cmd_priv *spriv = ESP_CMD_PRIV(cmd); - int dir = cmd->sc_data_direction; - - if (dir == DMA_NONE) - return; - - esp->ops->unmap_sg(esp, scsi_sglist(cmd), spriv->u.num_sg, dir); + if (!(esp->flags & ESP_FLAG_NO_DMA_MAP)) + scsi_dma_unmap(cmd); } static void esp_save_pointers(struct esp *esp, struct esp_cmd_entry *ent) @@ -624,6 +625,28 @@ static void esp_free_lun_tag(struct esp_cmd_entry *ent, } } +static void esp_map_sense(struct esp *esp, struct esp_cmd_entry *ent) +{ + ent->sense_ptr = ent->cmd->sense_buffer; + if (esp->flags & ESP_FLAG_NO_DMA_MAP) { + ent->sense_dma = (uintptr_t)ent->sense_ptr; + return; + } + + ent->sense_dma = dma_map_single(esp->dev, ent->sense_ptr, + SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); +} + +static void esp_unmap_sense(struct esp *esp, struct esp_cmd_entry *ent) +{ + if (esp->flags & ESP_FLAG_NO_DMA_MAP) + return; + + dma_unmap_single(esp->dev, ent->sense_dma, SCSI_SENSE_BUFFERSIZE, + DMA_FROM_DEVICE); + ent->sense_ptr = NULL; +} + /* When a contingent allegiance conditon is created, we force feed a * REQUEST_SENSE command to the device to fetch the sense data. I * tried many other schemes, relying on the scsi error handling layer @@ -645,12 +668,7 @@ static void esp_autosense(struct esp *esp, struct esp_cmd_entry *ent) if (!ent->sense_ptr) { esp_log_autosense("Doing auto-sense for tgt[%d] lun[%d]\n", tgt, lun); - - ent->sense_ptr = cmd->sense_buffer; - ent->sense_dma = esp->ops->map_single(esp, - ent->sense_ptr, - SCSI_SENSE_BUFFERSIZE, - DMA_FROM_DEVICE); + esp_map_sense(esp, ent); } ent->saved_sense_ptr = ent->sense_ptr; @@ -902,9 +920,7 @@ static void esp_cmd_is_done(struct esp *esp, struct esp_cmd_entry *ent, } if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) { - esp->ops->unmap_single(esp, ent->sense_dma, - SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); - ent->sense_ptr = NULL; + esp_unmap_sense(esp, ent); /* Restore the message/status bytes to what we actually * saw originally. Also, report that we are providing @@ -1256,10 +1272,7 @@ static int esp_finish_select(struct esp *esp) esp->cmd_bytes_ptr = NULL; esp->cmd_bytes_left = 0; } else { - esp->ops->unmap_single(esp, ent->sense_dma, - SCSI_SENSE_BUFFERSIZE, - DMA_FROM_DEVICE); - ent->sense_ptr = NULL; + esp_unmap_sense(esp, ent); } /* Now that the state is unwound properly, put back onto @@ -2039,11 +2052,8 @@ static void esp_reset_cleanup_one(struct esp *esp, struct esp_cmd_entry *ent) esp_free_lun_tag(ent, cmd->device->hostdata); cmd->result = DID_RESET << 16; - if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) { - esp->ops->unmap_single(esp, ent->sense_dma, - SCSI_SENSE_BUFFERSIZE, DMA_FROM_DEVICE); - ent->sense_ptr = NULL; - } + if (ent->flags & ESP_CMD_FLAG_AUTOSENSE) + esp_unmap_sense(esp, ent); cmd->scsi_done(cmd); list_del(&ent->list); diff --git a/drivers/scsi/esp_scsi.h b/drivers/scsi/esp_scsi.h index f98abd0ead57..8d030038477e 100644 --- a/drivers/scsi/esp_scsi.h +++ b/drivers/scsi/esp_scsi.h @@ -363,19 +363,6 @@ struct esp_driver_ops { void (*esp_write8)(struct esp *esp, u8 val, unsigned long reg); u8 (*esp_read8)(struct esp *esp, unsigned long reg); - /* Map and unmap DMA memory. Eventually the driver will be - * converted to the generic DMA API as soon as SBUS is able to - * cope with that. At such time we can remove this. - */ - dma_addr_t (*map_single)(struct esp *esp, void *buf, - size_t sz, int dir); - int (*map_sg)(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir); - void (*unmap_single)(struct esp *esp, dma_addr_t addr, - size_t sz, int dir); - void (*unmap_sg)(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir); - /* Return non-zero if there is an IRQ pending. Usually this * status bit lives in the DMA controller sitting in front of * the ESP. This has to be accurate or else the ESP interrupt @@ -495,6 +482,7 @@ struct esp { #define ESP_FLAG_QUICKIRQ_CHECK 0x00000010 #define ESP_FLAG_DISABLE_SYNC 0x00000020 #define ESP_FLAG_USE_FIFO 0x00000040 +#define ESP_FLAG_NO_DMA_MAP 0x00000080 u8 select_state; #define ESP_SELECT_NONE 0x00 /* Not selecting */ diff --git a/drivers/scsi/jazz_esp.c b/drivers/scsi/jazz_esp.c index 6eb5ff3e2e61..d4e49dd60f0c 100644 --- a/drivers/scsi/jazz_esp.c +++ b/drivers/scsi/jazz_esp.c @@ -38,30 +38,6 @@ static u8 jazz_esp_read8(struct esp *esp, unsigned long reg) return *(volatile u8 *)(esp->regs + reg); } -static dma_addr_t jazz_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return dma_map_single(esp->dev, buf, sz, dir); -} - -static int jazz_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - return dma_map_sg(esp->dev, sg, num_sg, dir); -} - -static void jazz_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - dma_unmap_single(esp->dev, addr, sz, dir); -} - -static void jazz_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - dma_unmap_sg(esp->dev, sg, num_sg, dir); -} - static int jazz_esp_irq_pending(struct esp *esp) { if (jazz_esp_read8(esp, ESP_STATUS) & ESP_STAT_INTR) @@ -117,10 +93,6 @@ static int jazz_esp_dma_error(struct esp *esp) static const struct esp_driver_ops jazz_esp_ops = { .esp_write8 = jazz_esp_write8, .esp_read8 = jazz_esp_read8, - .map_single = jazz_esp_map_single, - .map_sg = jazz_esp_map_sg, - .unmap_single = jazz_esp_unmap_single, - .unmap_sg = jazz_esp_unmap_sg, .irq_pending = jazz_esp_irq_pending, .reset_dma = jazz_esp_reset_dma, .dma_drain = jazz_esp_dma_drain, diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c index 85d067889a9b..f7340f476fa0 100644 --- a/drivers/scsi/mac_esp.c +++ b/drivers/scsi/mac_esp.c @@ -70,38 +70,6 @@ static inline u8 mac_esp_read8(struct esp *esp, unsigned long reg) return nubus_readb(esp->regs + reg * 16); } -/* For pseudo DMA and PIO we need the virtual address - * so this address mapping is the identity mapping. - */ - -static dma_addr_t mac_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return (dma_addr_t)buf; -} - -static int mac_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - int i; - - for (i = 0; i < num_sg; i++) - sg[i].dma_address = (u32)sg_virt(&sg[i]); - return num_sg; -} - -static void mac_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - /* Nothing to do. */ -} - -static void mac_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - /* Nothing to do. */ -} - static void mac_esp_reset_dma(struct esp *esp) { /* Nothing to do. */ @@ -469,10 +437,6 @@ static irqreturn_t mac_scsi_esp_intr(int irq, void *dev_id) static struct esp_driver_ops mac_esp_ops = { .esp_write8 = mac_esp_write8, .esp_read8 = mac_esp_read8, - .map_single = mac_esp_map_single, - .map_sg = mac_esp_map_sg, - .unmap_single = mac_esp_unmap_single, - .unmap_sg = mac_esp_unmap_sg, .irq_pending = mac_esp_irq_pending, .dma_length_limit = mac_esp_dma_length_limit, .reset_dma = mac_esp_reset_dma, @@ -552,11 +516,12 @@ static int esp_mac_probe(struct platform_device *dev) } esp->ops = &mac_esp_ops; + esp->flags = ESP_FLAG_NO_DMA_MAP; if (mep->pdma_io == NULL) { printk(KERN_INFO PFX "using PIO for controller %d\n", dev->id); esp_write8(0, ESP_TCLOW); esp_write8(0, ESP_TCMED); - esp->flags = ESP_FLAG_DISABLE_SYNC; + esp->flags |= ESP_FLAG_DISABLE_SYNC; mac_esp_ops.send_dma_cmd = mac_esp_send_pio_cmd; } else { printk(KERN_INFO PFX "using PDMA for controller %d\n", dev->id); diff --git a/drivers/scsi/sun3x_esp.c b/drivers/scsi/sun3x_esp.c index 0b1421cdf8a0..fd17570cdb5a 100644 --- a/drivers/scsi/sun3x_esp.c +++ b/drivers/scsi/sun3x_esp.c @@ -60,30 +60,6 @@ static u8 sun3x_esp_read8(struct esp *esp, unsigned long reg) return readb(esp->regs + (reg * 4UL)); } -static dma_addr_t sun3x_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return dma_map_single(esp->dev, buf, sz, dir); -} - -static int sun3x_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - return dma_map_sg(esp->dev, sg, num_sg, dir); -} - -static void sun3x_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - dma_unmap_single(esp->dev, addr, sz, dir); -} - -static void sun3x_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - dma_unmap_sg(esp->dev, sg, num_sg, dir); -} - static int sun3x_esp_irq_pending(struct esp *esp) { if (dma_read32(DMA_CSR) & (DMA_HNDL_INTR | DMA_HNDL_ERROR)) @@ -182,10 +158,6 @@ static int sun3x_esp_dma_error(struct esp *esp) static const struct esp_driver_ops sun3x_esp_ops = { .esp_write8 = sun3x_esp_write8, .esp_read8 = sun3x_esp_read8, - .map_single = sun3x_esp_map_single, - .map_sg = sun3x_esp_map_sg, - .unmap_single = sun3x_esp_unmap_single, - .unmap_sg = sun3x_esp_unmap_sg, .irq_pending = sun3x_esp_irq_pending, .reset_dma = sun3x_esp_reset_dma, .dma_drain = sun3x_esp_dma_drain, diff --git a/drivers/scsi/sun_esp.c b/drivers/scsi/sun_esp.c index c025f7ddaeb0..0f116a5ee935 100644 --- a/drivers/scsi/sun_esp.c +++ b/drivers/scsi/sun_esp.c @@ -212,30 +212,6 @@ static u8 sbus_esp_read8(struct esp *esp, unsigned long reg) return sbus_readb(esp->regs + (reg * 4UL)); } -static dma_addr_t sbus_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return dma_map_single(esp->dev, buf, sz, dir); -} - -static int sbus_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - return dma_map_sg(esp->dev, sg, num_sg, dir); -} - -static void sbus_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - dma_unmap_single(esp->dev, addr, sz, dir); -} - -static void sbus_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - dma_unmap_sg(esp->dev, sg, num_sg, dir); -} - static int sbus_esp_irq_pending(struct esp *esp) { if (dma_read32(DMA_CSR) & (DMA_HNDL_INTR | DMA_HNDL_ERROR)) @@ -465,10 +441,6 @@ static int sbus_esp_dma_error(struct esp *esp) static const struct esp_driver_ops sbus_esp_ops = { .esp_write8 = sbus_esp_write8, .esp_read8 = sbus_esp_read8, - .map_single = sbus_esp_map_single, - .map_sg = sbus_esp_map_sg, - .unmap_single = sbus_esp_unmap_single, - .unmap_sg = sbus_esp_unmap_sg, .irq_pending = sbus_esp_irq_pending, .reset_dma = sbus_esp_reset_dma, .dma_drain = sbus_esp_dma_drain, diff --git a/drivers/scsi/zorro_esp.c b/drivers/scsi/zorro_esp.c index bb70882e6b56..5078623852f4 100644 --- a/drivers/scsi/zorro_esp.c +++ b/drivers/scsi/zorro_esp.c @@ -182,30 +182,6 @@ static u8 zorro_esp_read8(struct esp *esp, unsigned long reg) return readb(esp->regs + (reg * 4UL)); } -static dma_addr_t zorro_esp_map_single(struct esp *esp, void *buf, - size_t sz, int dir) -{ - return dma_map_single(esp->dev, buf, sz, dir); -} - -static int zorro_esp_map_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - return dma_map_sg(esp->dev, sg, num_sg, dir); -} - -static void zorro_esp_unmap_single(struct esp *esp, dma_addr_t addr, - size_t sz, int dir) -{ - dma_unmap_single(esp->dev, addr, sz, dir); -} - -static void zorro_esp_unmap_sg(struct esp *esp, struct scatterlist *sg, - int num_sg, int dir) -{ - dma_unmap_sg(esp->dev, sg, num_sg, dir); -} - static int zorro_esp_irq_pending(struct esp *esp) { /* check ESP status register; DMA has no status reg. */ @@ -739,10 +715,6 @@ static int zorro_esp_dma_error(struct esp *esp) static const struct esp_driver_ops blz1230_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = zorro_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma, @@ -755,10 +727,6 @@ static const struct esp_driver_ops blz1230_esp_ops = { static const struct esp_driver_ops blz1230II_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = zorro_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma, @@ -771,10 +739,6 @@ static const struct esp_driver_ops blz1230II_esp_ops = { static const struct esp_driver_ops blz2060_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = zorro_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma, @@ -787,10 +751,6 @@ static const struct esp_driver_ops blz2060_esp_ops = { static const struct esp_driver_ops cyber_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = cyber_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma, @@ -803,10 +763,6 @@ static const struct esp_driver_ops cyber_esp_ops = { static const struct esp_driver_ops cyberII_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = zorro_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma, @@ -819,10 +775,6 @@ static const struct esp_driver_ops cyberII_esp_ops = { static const struct esp_driver_ops fastlane_esp_ops = { .esp_write8 = zorro_esp_write8, .esp_read8 = zorro_esp_read8, - .map_single = zorro_esp_map_single, - .map_sg = zorro_esp_map_sg, - .unmap_single = zorro_esp_unmap_single, - .unmap_sg = zorro_esp_unmap_sg, .irq_pending = fastlane_esp_irq_pending, .dma_length_limit = zorro_esp_dma_length_limit, .reset_dma = zorro_esp_reset_dma,