Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp954158pxk; Thu, 17 Sep 2020 22:58:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzauxI3Am0Vamgy4H0b51qPc3+iehjiGUNwqkpvaNJcOqd5kbDBuZjg1dIFqFVMgmvlv9h0 X-Received: by 2002:a50:aaca:: with SMTP id r10mr38093322edc.307.1600408733678; Thu, 17 Sep 2020 22:58:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600408733; cv=none; d=google.com; s=arc-20160816; b=h5nycc51/vbh+/eJFy0EmFlES1cXgnoOJ0lj2oApIN7wcb2hwKgvIVXOuOpKSVL2+I RAfrK+ROdvjl7aXg5GZqjk2vfr/ZRizcuJJz75W97RfFOozIvCfhnjULI1ibxjDqgcL6 X29uuRteHkbi8lUQ7oIfA+7j3EQEUGqwGuAZLZZpHkMOr7CwyOJUthbJNDyUhUUm/CyJ YL48oU3XC53P38hc4zBgM+l090iZ4M23W1EohfHNP19UqOIsSKES/gWdzlpBdtzK+jza mLyhurEZXucsC+tFXHzD297sjewg9u73ug8eWsGK9KJ7xHvSffGKmOhBQi9EroBIk3A7 VEPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=coEmh8QnEsffZzjE5HutwlcpmcaG6SMB/JEaPEOSaqk=; b=grvpHgTJWhiukJwgEWeY+W1ibGtrNp7LrSkzU9ERn83JE8PlwuU7h8xX3zouIPmTE/ xfUccaJ0zXMWm2CFPevQ/cL5ygyi16J0OFCR7XnYO9FHgKIGVE6hHa9pe8pvJN7l351L vo3X/HzPWhRp/dsUlfq1u9ZNK+tX8HYP6tV1Q/97hCKSKPHcJ3Tw53xNlVYzSjEG+tpR vLYgqowHjwIo6j8v0o9KtmPkCmdTm9KvACv6PcpnC96XTrUy9HXMUE6cIlfi9Ozc2si3 uVOrQI6/nnW0NoiIdJXo6eE5z6AW4+SvG3H6MMtwE+6jLYhNPQZbg8BM/XDZeTBZ9DaB z3xA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e4si1302978edq.182.2020.09.17.22.58.29; Thu, 17 Sep 2020 22:58:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726586AbgIRFzZ (ORCPT + 99 others); Fri, 18 Sep 2020 01:55:25 -0400 Received: from muru.com ([72.249.23.125]:44804 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725886AbgIRFzZ (ORCPT ); Fri, 18 Sep 2020 01:55:25 -0400 X-Greylist: delayed 400 seconds by postgrey-1.27 at vger.kernel.org; Fri, 18 Sep 2020 01:55:24 EDT Received: from atomide.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTPS id 2880880C2; Fri, 18 Sep 2020 05:48:43 +0000 (UTC) Date: Fri, 18 Sep 2020 08:49:33 +0300 From: Tony Lindgren To: Christoph Hellwig Cc: Russell King , Aaro Koskinen , Robin Murphy , iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, linux-usb@vger.kernel.org, Janusz Krzysztofik Subject: Re: [PATCH 1/4] ARM/omap1: switch to use dma_direct_set_offset for lbus DMA offsets Message-ID: <20200918054933.GK7101@atomide.com> References: <20200917173229.3311382-1-hch@lst.de> <20200917173229.3311382-2-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200917173229.3311382-2-hch@lst.de> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Christoph Hellwig [200917 17:37]: > Switch the omap1510 platform ohci device to use dma_direct_set_offset > to set the DMA offset instead of using direct hooks into the DMA > mapping code and remove the now unused hooks. Looks nice to me :) I still can't test this probably for few more weeks though but hopefully Aaro or Janusz (Added to Cc) can test it. Regards, Tony > Signed-off-by: Christoph Hellwig > --- > arch/arm/include/asm/dma-direct.h | 18 ------------- > arch/arm/mach-omap1/include/mach/memory.h | 31 ----------------------- > arch/arm/mach-omap1/usb.c | 22 ++++++++++++++++ > 3 files changed, 22 insertions(+), 49 deletions(-) > > diff --git a/arch/arm/include/asm/dma-direct.h b/arch/arm/include/asm/dma-direct.h > index 436544aeb83405..77fcb7ee5ec907 100644 > --- a/arch/arm/include/asm/dma-direct.h > +++ b/arch/arm/include/asm/dma-direct.h > @@ -9,7 +9,6 @@ > * functions used internally by the DMA-mapping API to provide DMA > * addresses. They must not be used by drivers. > */ > -#ifndef __arch_pfn_to_dma > static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn) > { > if (dev && dev->dma_range_map) > @@ -34,23 +33,6 @@ static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) > return (dma_addr_t)__virt_to_bus((unsigned long)(addr)); > } > > -#else > -static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn) > -{ > - return __arch_pfn_to_dma(dev, pfn); > -} > - > -static inline unsigned long dma_to_pfn(struct device *dev, dma_addr_t addr) > -{ > - return __arch_dma_to_pfn(dev, addr); > -} > - > -static inline dma_addr_t virt_to_dma(struct device *dev, void *addr) > -{ > - return __arch_virt_to_dma(dev, addr); > -} > -#endif > - > static inline dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr) > { > unsigned int offset = paddr & ~PAGE_MASK; > diff --git a/arch/arm/mach-omap1/include/mach/memory.h b/arch/arm/mach-omap1/include/mach/memory.h > index 1142560e0078f5..36bc0000cb6ab8 100644 > --- a/arch/arm/mach-omap1/include/mach/memory.h > +++ b/arch/arm/mach-omap1/include/mach/memory.h > @@ -14,42 +14,11 @@ > * OMAP-1510 bus address is translated into a Local Bus address if the > * OMAP bus type is lbus. We do the address translation based on the > * device overriding the defaults used in the dma-mapping API. > - * Note that the is_lbus_device() test is not very efficient on 1510 > - * because of the strncmp(). > */ > -#if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) > > /* > * OMAP-1510 Local Bus address offset > */ > #define OMAP1510_LB_OFFSET UL(0x30000000) > > -#define virt_to_lbus(x) ((x) - PAGE_OFFSET + OMAP1510_LB_OFFSET) > -#define lbus_to_virt(x) ((x) - OMAP1510_LB_OFFSET + PAGE_OFFSET) > -#define is_lbus_device(dev) (cpu_is_omap15xx() && dev && (strncmp(dev_name(dev), "ohci", 4) == 0)) > - > -#define __arch_pfn_to_dma(dev, pfn) \ > - ({ dma_addr_t __dma = __pfn_to_phys(pfn); \ > - if (is_lbus_device(dev)) \ > - __dma = __dma - PHYS_OFFSET + OMAP1510_LB_OFFSET; \ > - __dma; }) > - > -#define __arch_dma_to_pfn(dev, addr) \ > - ({ dma_addr_t __dma = addr; \ > - if (is_lbus_device(dev)) \ > - __dma += PHYS_OFFSET - OMAP1510_LB_OFFSET; \ > - __phys_to_pfn(__dma); \ > - }) > - > -#define __arch_dma_to_virt(dev, addr) ({ (void *) (is_lbus_device(dev) ? \ > - lbus_to_virt(addr) : \ > - __phys_to_virt(addr)); }) > - > -#define __arch_virt_to_dma(dev, addr) ({ unsigned long __addr = (unsigned long)(addr); \ > - (dma_addr_t) (is_lbus_device(dev) ? \ > - virt_to_lbus(__addr) : \ > - __virt_to_phys(__addr)); }) > - > -#endif /* CONFIG_ARCH_OMAP15XX */ > - > #endif > diff --git a/arch/arm/mach-omap1/usb.c b/arch/arm/mach-omap1/usb.c > index d8e9bbda8f7bdd..ba8566204ea9f4 100644 > --- a/arch/arm/mach-omap1/usb.c > +++ b/arch/arm/mach-omap1/usb.c > @@ -9,6 +9,7 @@ > #include > #include > #include > +#include > #include > > #include > @@ -542,6 +543,25 @@ static u32 __init omap1_usb2_init(unsigned nwires, unsigned alt_pingroup) > /* ULPD_APLL_CTRL */ > #define APLL_NDPLL_SWITCH (1 << 0) > > +static int omap_1510_usb_ohci_notifier(struct notifier_block *nb, > + unsigned long event, void *data) > +{ > + struct device *dev = data; > + > + if (event != BUS_NOTIFY_ADD_DEVICE) > + return NOTIFY_DONE; > + > + if (strncmp(dev_name(dev), "ohci", 4) == 0 && > + dma_direct_set_offset(dev, PHYS_OFFSET, OMAP1510_LB_OFFSET, > + (u64)-1)) > + WARN_ONCE(1, "failed to set DMA offset\n"); > + return NOTIFY_OK; > +} > + > +static struct notifier_block omap_1510_usb_ohci_nb = { > + .notifier_call = omap_1510_usb_ohci_notifier, > +}; > + > static void __init omap_1510_usb_init(struct omap_usb_config *config) > { > unsigned int val; > @@ -600,6 +620,8 @@ static void __init omap_1510_usb_init(struct omap_usb_config *config) > if (config->register_host) { > int status; > > + bus_register_notifier(&platform_bus_type, > + &omap_1510_usb_ohci_nb); > ohci_device.dev.platform_data = config; > status = platform_device_register(&ohci_device); > if (status) > -- > 2.28.0 >