From: Hector Martin <marcan@marcan.st> To: linux-arm-kernel@lists.infradead.org Cc: Hector Martin <marcan@marcan.st>, Marc Zyngier <maz@kernel.org>, Rob Herring <robh@kernel.org>, Arnd Bergmann <arnd@kernel.org>, Olof Johansson <olof@lixom.net>, Krzysztof Kozlowski <krzk@kernel.org>, Mark Kettenis <mark.kettenis@xs4all.nl>, Tony Lindgren <tony@atomide.com>, Mohamed Mediouni <mohamed.mediouni@caramail.com>, Stan Skowronek <stan@corellium.com>, Alexander Graf <graf@amazon.com>, Will Deacon <will@kernel.org>, Linus Walleij <linus.walleij@linaro.org>, Mark Rutland <mark.rutland@arm.com>, Andy Shevchenko <andy.shevchenko@gmail.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jonathan Corbet <corbet@lwn.net>, Catalin Marinas <catalin.marinas@arm.com>, Christoph Hellwig <hch@infradead.org>, "David S. Miller" <davem@davemloft.net>, devicetree@vger.kernel.org, linux-serial@vger.kernel.org, linux-doc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFT PATCH v3 08/27] asm-generic/io.h: Add a non-posted variant of ioremap() Date: Fri, 5 Mar 2021 06:38:43 +0900 [thread overview] Message-ID: <20210304213902.83903-9-marcan@marcan.st> (raw) In-Reply-To: <20210304213902.83903-1-marcan@marcan.st> ARM64 currently defaults to posted MMIO (nGnRnE), but some devices require the use of non-posted MMIO (nGnRE). Introduce a new ioremap() variant to handle this case. ioremap_np() is aliased to ioremap() by default on arches that do not implement this variant. sparc64 is the only architecture that needs to be touched directly, because it includes neither of the generic io.h or iomap.h headers. This adds the IORESOURCE_MEM_NONPOSTED flag, which maps to this variant and marks a given resource as requiring non-posted mappings. This is implemented in the resource system because it is a SoC-level requirement, so existing drivers do not need special-case code to pick this ioremap variant. Then this is implemented in devres by introducing devm_ioremap_np(), and making devm_ioremap_resource() automatically select this variant when the resource has the IORESOURCE_MEM_NONPOSTED flag set. Signed-off-by: Hector Martin <marcan@marcan.st> --- .../driver-api/driver-model/devres.rst | 1 + arch/sparc/include/asm/io_64.h | 4 ++++ include/asm-generic/io.h | 22 ++++++++++++++++++- include/asm-generic/iomap.h | 9 ++++++++ include/linux/io.h | 2 ++ include/linux/ioport.h | 1 + lib/devres.c | 22 +++++++++++++++++++ 7 files changed, 60 insertions(+), 1 deletion(-) diff --git a/Documentation/driver-api/driver-model/devres.rst b/Documentation/driver-api/driver-model/devres.rst index cd8b6e657b94..2f45877a539d 100644 --- a/Documentation/driver-api/driver-model/devres.rst +++ b/Documentation/driver-api/driver-model/devres.rst @@ -309,6 +309,7 @@ IOMAP devm_ioremap() devm_ioremap_uc() devm_ioremap_wc() + devm_ioremap_np() devm_ioremap_resource() : checks resource, requests memory region, ioremaps devm_ioremap_resource_wc() devm_platform_ioremap_resource() : calls devm_ioremap_resource() for platform device diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h index 9bb27e5c22f1..9fbfc9574432 100644 --- a/arch/sparc/include/asm/io_64.h +++ b/arch/sparc/include/asm/io_64.h @@ -409,6 +409,10 @@ static inline void __iomem *ioremap(unsigned long offset, unsigned long size) #define ioremap_uc(X,Y) ioremap((X),(Y)) #define ioremap_wc(X,Y) ioremap((X),(Y)) #define ioremap_wt(X,Y) ioremap((X),(Y)) +static inline void __iomem *ioremap_np(unsigned long offset, unsigned long size) +{ + return NULL; +} static inline void iounmap(volatile void __iomem *addr) { diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index c6af40ce03be..082e0c96db6e 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -942,7 +942,9 @@ static inline void *phys_to_virt(unsigned long address) * * ioremap_wc() and ioremap_wt() can provide more relaxed caching attributes * for specific drivers if the architecture choses to implement them. If they - * are not implemented we fall back to plain ioremap. + * are not implemented we fall back to plain ioremap. Conversely, ioremap_np() + * can provide stricter non-posted write semantics if the architecture + * implements them. */ #ifndef CONFIG_MMU #ifndef ioremap @@ -993,6 +995,24 @@ static inline void __iomem *ioremap_uc(phys_addr_t offset, size_t size) { return NULL; } + +/* + * ioremap_np needs an explicit architecture implementation, as it + * requests stronger semantics than regular ioremap(). Portable drivers + * should instead use one of the higher-level abstractions, like + * devm_ioremap_resource(), to choose the correct variant for any given + * device and bus. Portable drivers with a good reason to want non-posted + * write semantics should always provide an ioremap() fallback in case + * ioremap_np() is not available. + */ +#ifndef ioremap_np +#define ioremap_np ioremap_np +static inline void __iomem *ioremap_np(phys_addr_t offset, size_t size) +{ + return NULL; +} +#endif + #endif #ifdef CONFIG_HAS_IOPORT_MAP diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h index 649224664969..9b3eb6d86200 100644 --- a/include/asm-generic/iomap.h +++ b/include/asm-generic/iomap.h @@ -101,6 +101,15 @@ extern void ioport_unmap(void __iomem *); #define ioremap_wt ioremap #endif +#ifndef ARCH_HAS_IOREMAP_NP +/* See the comment in asm-generic/io.h about ioremap_np(). */ +#define ioremap_np ioremap_np +static inline void __iomem *ioremap_np(phys_addr_t offset, size_t size) +{ + return NULL; +} +#endif + #ifdef CONFIG_PCI /* Destroy a virtual mapping cookie for a PCI BAR (memory or IO) */ struct pci_dev; diff --git a/include/linux/io.h b/include/linux/io.h index 8394c56babc2..d718354ed3e1 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -68,6 +68,8 @@ void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset, resource_size_t size); void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); +void __iomem *devm_ioremap_np(struct device *dev, resource_size_t offset, + resource_size_t size); void devm_iounmap(struct device *dev, void __iomem *addr); int check_signature(const volatile void __iomem *io_addr, const unsigned char *signature, int length); diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 55de385c839c..1de6c2e40c32 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -108,6 +108,7 @@ struct resource { #define IORESOURCE_MEM_32BIT (3<<3) #define IORESOURCE_MEM_SHADOWABLE (1<<5) /* dup: IORESOURCE_SHADOWABLE */ #define IORESOURCE_MEM_EXPANSIONROM (1<<6) +#define IORESOURCE_MEM_NONPOSTED (1<<7) /* PnP I/O specific bits (IORESOURCE_BITS) */ #define IORESOURCE_IO_16BIT_ADDR (1<<0) diff --git a/lib/devres.c b/lib/devres.c index 2a4ff5d64288..4679dbb1bf5f 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -10,6 +10,7 @@ enum devm_ioremap_type { DEVM_IOREMAP = 0, DEVM_IOREMAP_UC, DEVM_IOREMAP_WC, + DEVM_IOREMAP_NP, }; void devm_ioremap_release(struct device *dev, void *res) @@ -42,6 +43,9 @@ static void __iomem *__devm_ioremap(struct device *dev, resource_size_t offset, case DEVM_IOREMAP_WC: addr = ioremap_wc(offset, size); break; + case DEVM_IOREMAP_NP: + addr = ioremap_np(offset, size); + break; } if (addr) { @@ -98,6 +102,21 @@ void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, } EXPORT_SYMBOL(devm_ioremap_wc); +/** + * devm_ioremap_np - Managed ioremap_np() + * @dev: Generic device to remap IO address for + * @offset: Resource address to map + * @size: Size of map + * + * Managed ioremap_np(). Map is automatically unmapped on driver detach. + */ +void __iomem *devm_ioremap_np(struct device *dev, resource_size_t offset, + resource_size_t size) +{ + return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_NP); +} +EXPORT_SYMBOL(devm_ioremap_np); + /** * devm_iounmap - Managed iounmap() * @dev: Generic device to unmap for @@ -128,6 +147,9 @@ __devm_ioremap_resource(struct device *dev, const struct resource *res, return IOMEM_ERR_PTR(-EINVAL); } + if (type == DEVM_IOREMAP && res->flags & IORESOURCE_MEM_NONPOSTED) + type = DEVM_IOREMAP_NP; + size = resource_size(res); if (res->name) -- 2.30.0
WARNING: multiple messages have this Message-ID (diff)
From: Hector Martin <marcan@marcan.st> To: linux-arm-kernel@lists.infradead.org Cc: Hector Martin <marcan@marcan.st>, Marc Zyngier <maz@kernel.org>, Rob Herring <robh@kernel.org>, Arnd Bergmann <arnd@kernel.org>, Olof Johansson <olof@lixom.net>, Krzysztof Kozlowski <krzk@kernel.org>, Mark Kettenis <mark.kettenis@xs4all.nl>, Tony Lindgren <tony@atomide.com>, Mohamed Mediouni <mohamed.mediouni@caramail.com>, Stan Skowronek <stan@corellium.com>, Alexander Graf <graf@amazon.com>, Will Deacon <will@kernel.org>, Linus Walleij <linus.walleij@linaro.org>, Mark Rutland <mark.rutland@arm.com>, Andy Shevchenko <andy.shevchenko@gmail.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jonathan Corbet <corbet@lwn.net>, Catalin Marinas <catalin.marinas@arm.com>, Christoph Hellwig <hch@infradead.org>, "David S. Miller" <davem@davemloft.net>, devicetree@vger.kernel.org, linux-serial@vger.kernel.org, linux-doc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFT PATCH v3 08/27] asm-generic/io.h: Add a non-posted variant of ioremap() Date: Fri, 5 Mar 2021 06:38:43 +0900 [thread overview] Message-ID: <20210304213902.83903-9-marcan@marcan.st> (raw) In-Reply-To: <20210304213902.83903-1-marcan@marcan.st> ARM64 currently defaults to posted MMIO (nGnRnE), but some devices require the use of non-posted MMIO (nGnRE). Introduce a new ioremap() variant to handle this case. ioremap_np() is aliased to ioremap() by default on arches that do not implement this variant. sparc64 is the only architecture that needs to be touched directly, because it includes neither of the generic io.h or iomap.h headers. This adds the IORESOURCE_MEM_NONPOSTED flag, which maps to this variant and marks a given resource as requiring non-posted mappings. This is implemented in the resource system because it is a SoC-level requirement, so existing drivers do not need special-case code to pick this ioremap variant. Then this is implemented in devres by introducing devm_ioremap_np(), and making devm_ioremap_resource() automatically select this variant when the resource has the IORESOURCE_MEM_NONPOSTED flag set. Signed-off-by: Hector Martin <marcan@marcan.st> --- .../driver-api/driver-model/devres.rst | 1 + arch/sparc/include/asm/io_64.h | 4 ++++ include/asm-generic/io.h | 22 ++++++++++++++++++- include/asm-generic/iomap.h | 9 ++++++++ include/linux/io.h | 2 ++ include/linux/ioport.h | 1 + lib/devres.c | 22 +++++++++++++++++++ 7 files changed, 60 insertions(+), 1 deletion(-) diff --git a/Documentation/driver-api/driver-model/devres.rst b/Documentation/driver-api/driver-model/devres.rst index cd8b6e657b94..2f45877a539d 100644 --- a/Documentation/driver-api/driver-model/devres.rst +++ b/Documentation/driver-api/driver-model/devres.rst @@ -309,6 +309,7 @@ IOMAP devm_ioremap() devm_ioremap_uc() devm_ioremap_wc() + devm_ioremap_np() devm_ioremap_resource() : checks resource, requests memory region, ioremaps devm_ioremap_resource_wc() devm_platform_ioremap_resource() : calls devm_ioremap_resource() for platform device diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h index 9bb27e5c22f1..9fbfc9574432 100644 --- a/arch/sparc/include/asm/io_64.h +++ b/arch/sparc/include/asm/io_64.h @@ -409,6 +409,10 @@ static inline void __iomem *ioremap(unsigned long offset, unsigned long size) #define ioremap_uc(X,Y) ioremap((X),(Y)) #define ioremap_wc(X,Y) ioremap((X),(Y)) #define ioremap_wt(X,Y) ioremap((X),(Y)) +static inline void __iomem *ioremap_np(unsigned long offset, unsigned long size) +{ + return NULL; +} static inline void iounmap(volatile void __iomem *addr) { diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index c6af40ce03be..082e0c96db6e 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -942,7 +942,9 @@ static inline void *phys_to_virt(unsigned long address) * * ioremap_wc() and ioremap_wt() can provide more relaxed caching attributes * for specific drivers if the architecture choses to implement them. If they - * are not implemented we fall back to plain ioremap. + * are not implemented we fall back to plain ioremap. Conversely, ioremap_np() + * can provide stricter non-posted write semantics if the architecture + * implements them. */ #ifndef CONFIG_MMU #ifndef ioremap @@ -993,6 +995,24 @@ static inline void __iomem *ioremap_uc(phys_addr_t offset, size_t size) { return NULL; } + +/* + * ioremap_np needs an explicit architecture implementation, as it + * requests stronger semantics than regular ioremap(). Portable drivers + * should instead use one of the higher-level abstractions, like + * devm_ioremap_resource(), to choose the correct variant for any given + * device and bus. Portable drivers with a good reason to want non-posted + * write semantics should always provide an ioremap() fallback in case + * ioremap_np() is not available. + */ +#ifndef ioremap_np +#define ioremap_np ioremap_np +static inline void __iomem *ioremap_np(phys_addr_t offset, size_t size) +{ + return NULL; +} +#endif + #endif #ifdef CONFIG_HAS_IOPORT_MAP diff --git a/include/asm-generic/iomap.h b/include/asm-generic/iomap.h index 649224664969..9b3eb6d86200 100644 --- a/include/asm-generic/iomap.h +++ b/include/asm-generic/iomap.h @@ -101,6 +101,15 @@ extern void ioport_unmap(void __iomem *); #define ioremap_wt ioremap #endif +#ifndef ARCH_HAS_IOREMAP_NP +/* See the comment in asm-generic/io.h about ioremap_np(). */ +#define ioremap_np ioremap_np +static inline void __iomem *ioremap_np(phys_addr_t offset, size_t size) +{ + return NULL; +} +#endif + #ifdef CONFIG_PCI /* Destroy a virtual mapping cookie for a PCI BAR (memory or IO) */ struct pci_dev; diff --git a/include/linux/io.h b/include/linux/io.h index 8394c56babc2..d718354ed3e1 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -68,6 +68,8 @@ void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset, resource_size_t size); void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); +void __iomem *devm_ioremap_np(struct device *dev, resource_size_t offset, + resource_size_t size); void devm_iounmap(struct device *dev, void __iomem *addr); int check_signature(const volatile void __iomem *io_addr, const unsigned char *signature, int length); diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 55de385c839c..1de6c2e40c32 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -108,6 +108,7 @@ struct resource { #define IORESOURCE_MEM_32BIT (3<<3) #define IORESOURCE_MEM_SHADOWABLE (1<<5) /* dup: IORESOURCE_SHADOWABLE */ #define IORESOURCE_MEM_EXPANSIONROM (1<<6) +#define IORESOURCE_MEM_NONPOSTED (1<<7) /* PnP I/O specific bits (IORESOURCE_BITS) */ #define IORESOURCE_IO_16BIT_ADDR (1<<0) diff --git a/lib/devres.c b/lib/devres.c index 2a4ff5d64288..4679dbb1bf5f 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -10,6 +10,7 @@ enum devm_ioremap_type { DEVM_IOREMAP = 0, DEVM_IOREMAP_UC, DEVM_IOREMAP_WC, + DEVM_IOREMAP_NP, }; void devm_ioremap_release(struct device *dev, void *res) @@ -42,6 +43,9 @@ static void __iomem *__devm_ioremap(struct device *dev, resource_size_t offset, case DEVM_IOREMAP_WC: addr = ioremap_wc(offset, size); break; + case DEVM_IOREMAP_NP: + addr = ioremap_np(offset, size); + break; } if (addr) { @@ -98,6 +102,21 @@ void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, } EXPORT_SYMBOL(devm_ioremap_wc); +/** + * devm_ioremap_np - Managed ioremap_np() + * @dev: Generic device to remap IO address for + * @offset: Resource address to map + * @size: Size of map + * + * Managed ioremap_np(). Map is automatically unmapped on driver detach. + */ +void __iomem *devm_ioremap_np(struct device *dev, resource_size_t offset, + resource_size_t size) +{ + return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_NP); +} +EXPORT_SYMBOL(devm_ioremap_np); + /** * devm_iounmap - Managed iounmap() * @dev: Generic device to unmap for @@ -128,6 +147,9 @@ __devm_ioremap_resource(struct device *dev, const struct resource *res, return IOMEM_ERR_PTR(-EINVAL); } + if (type == DEVM_IOREMAP && res->flags & IORESOURCE_MEM_NONPOSTED) + type = DEVM_IOREMAP_NP; + size = resource_size(res); if (res->name) -- 2.30.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-03-04 21:42 UTC|newest] Thread overview: 275+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-04 21:38 [RFT PATCH v3 00/27] Apple M1 SoC platform bring-up Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 01/27] arm64: Cope with CPUs stuck in VHE mode Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-24 18:05 ` Will Deacon 2021-03-24 18:05 ` Will Deacon 2021-03-24 20:00 ` Marc Zyngier 2021-03-24 20:00 ` Marc Zyngier 2021-03-26 7:54 ` Hector Martin 2021-03-26 7:54 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 02/27] dt-bindings: vendor-prefixes: Add apple prefix Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-08 20:26 ` Rob Herring 2021-03-08 20:26 ` Rob Herring 2021-03-04 21:38 ` [RFT PATCH v3 03/27] dt-bindings: arm: apple: Add bindings for Apple ARM platforms Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:16 ` Linus Walleij 2021-03-05 10:16 ` Linus Walleij 2021-03-08 20:27 ` Rob Herring 2021-03-08 20:27 ` Rob Herring 2021-03-04 21:38 ` [RFT PATCH v3 04/27] dt-bindings: arm: cpus: Add apple,firestorm & icestorm compatibles Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 04/27] dt-bindings: arm: cpus: Add apple, firestorm " Hector Martin 2021-03-08 20:27 ` [RFT PATCH v3 04/27] dt-bindings: arm: cpus: Add apple,firestorm " Rob Herring 2021-03-08 20:27 ` [RFT PATCH v3 04/27] dt-bindings: arm: cpus: Add apple, firestorm " Rob Herring 2021-03-04 21:38 ` [RFT PATCH v3 05/27] arm64: cputype: Add CPU implementor & types for the Apple M1 cores Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-24 18:13 ` Will Deacon 2021-03-24 18:13 ` Will Deacon 2021-03-04 21:38 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm,arch_timer: Add interrupt-names support Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm, arch_timer: " Hector Martin 2021-03-05 10:18 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm,arch_timer: " Linus Walleij 2021-03-05 10:18 ` Linus Walleij 2021-03-08 11:12 ` Marc Zyngier 2021-03-08 11:12 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm, arch_timer: " Marc Zyngier 2021-03-08 17:14 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm,arch_timer: " Tony Lindgren 2021-03-08 17:14 ` Tony Lindgren 2021-03-08 20:38 ` Rob Herring 2021-03-08 20:38 ` Rob Herring 2021-03-08 22:42 ` Marc Zyngier 2021-03-08 22:42 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm, arch_timer: " Marc Zyngier 2021-03-09 16:11 ` [RFT PATCH v3 06/27] dt-bindings: timer: arm,arch_timer: " Rob Herring 2021-03-09 16:11 ` Rob Herring 2021-03-09 20:28 ` Hector Martin 2021-03-09 20:28 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 07/27] arm64: arch_timer: implement support for interrupt-names Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:19 ` Linus Walleij 2021-03-05 10:19 ` Linus Walleij 2021-03-08 11:13 ` Marc Zyngier 2021-03-08 11:13 ` Marc Zyngier 2021-03-04 21:38 ` Hector Martin [this message] 2021-03-04 21:38 ` [RFT PATCH v3 08/27] asm-generic/io.h: Add a non-posted variant of ioremap() Hector Martin 2021-03-05 14:45 ` Andy Shevchenko 2021-03-05 14:45 ` Andy Shevchenko 2021-03-05 15:19 ` Hector Martin 2021-03-05 15:19 ` Hector Martin 2021-03-08 11:20 ` Marc Zyngier 2021-03-08 11:20 ` Marc Zyngier 2021-03-24 18:12 ` Will Deacon 2021-03-24 18:12 ` Will Deacon 2021-03-24 19:09 ` Arnd Bergmann 2021-03-24 19:09 ` Arnd Bergmann 2021-03-25 14:07 ` Hector Martin 2021-03-25 14:07 ` Hector Martin 2021-03-25 14:49 ` Will Deacon 2021-03-25 14:49 ` Will Deacon 2021-03-04 21:38 ` [RFT PATCH v3 09/27] docs: driver-api: device-io: Document I/O access functions Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:22 ` Linus Walleij 2021-03-05 10:22 ` Linus Walleij 2021-03-04 21:38 ` [RFT PATCH v3 10/27] docs: driver-api: device-io: Document ioremap() variants & access funcs Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:25 ` Linus Walleij 2021-03-05 10:25 ` Linus Walleij 2021-03-05 15:09 ` Andy Shevchenko 2021-03-05 15:09 ` Andy Shevchenko 2021-03-05 15:51 ` Arnd Bergmann 2021-03-05 15:51 ` Arnd Bergmann 2021-03-09 20:29 ` Hector Martin 2021-03-09 20:29 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 11/27] arm64: Implement ioremap_np() to map MMIO as nGnRnE Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-08 11:22 ` Marc Zyngier 2021-03-08 11:22 ` Marc Zyngier 2021-03-24 18:18 ` Will Deacon 2021-03-24 18:18 ` Will Deacon 2021-03-04 21:38 ` [RFT PATCH v3 12/27] of/address: Add infrastructure to declare MMIO as non-posted Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:28 ` Linus Walleij 2021-03-05 10:28 ` Linus Walleij 2021-03-05 15:13 ` Andy Shevchenko 2021-03-05 15:13 ` Andy Shevchenko 2021-03-05 15:55 ` Hector Martin 2021-03-05 15:55 ` Hector Martin 2021-03-05 16:08 ` Andy Shevchenko 2021-03-05 16:08 ` Andy Shevchenko 2021-03-05 16:43 ` Arnd Bergmann 2021-03-05 16:43 ` Arnd Bergmann 2021-03-05 17:19 ` Hector Martin 2021-03-05 17:19 ` Hector Martin 2021-03-05 16:05 ` Rob Herring 2021-03-05 16:05 ` Rob Herring 2021-03-05 17:39 ` Rob Herring 2021-03-05 17:39 ` Rob Herring 2021-03-05 18:18 ` Hector Martin 2021-03-05 18:18 ` Hector Martin 2021-03-05 21:17 ` Arnd Bergmann 2021-03-05 21:17 ` Arnd Bergmann 2021-03-08 15:56 ` Rob Herring 2021-03-08 15:56 ` Rob Herring 2021-03-08 20:29 ` Arnd Bergmann 2021-03-08 20:29 ` Arnd Bergmann 2021-03-08 21:13 ` Rob Herring 2021-03-08 21:13 ` Rob Herring 2021-03-08 21:56 ` Arnd Bergmann 2021-03-08 21:56 ` Arnd Bergmann 2021-03-09 15:48 ` Rob Herring 2021-03-09 15:48 ` Rob Herring 2021-03-09 20:23 ` Hector Martin 2021-03-09 20:23 ` Hector Martin 2021-03-09 22:06 ` Rob Herring 2021-03-09 22:06 ` Rob Herring 2021-03-10 8:26 ` Hector Martin 2021-03-10 8:26 ` Hector Martin 2021-03-10 17:01 ` Rob Herring 2021-03-10 17:01 ` Rob Herring 2021-03-11 9:12 ` Arnd Bergmann 2021-03-11 9:12 ` Arnd Bergmann 2021-03-11 12:11 ` Hector Martin 2021-03-11 12:11 ` Hector Martin 2021-03-11 13:35 ` Arnd Bergmann 2021-03-11 13:35 ` Arnd Bergmann 2021-03-11 16:07 ` Rob Herring 2021-03-11 16:07 ` Rob Herring 2021-03-11 16:48 ` Arnd Bergmann 2021-03-11 16:48 ` Arnd Bergmann 2021-03-11 18:10 ` Rob Herring 2021-03-11 18:10 ` Rob Herring 2021-03-12 10:20 ` Arnd Bergmann 2021-03-12 10:20 ` Arnd Bergmann 2021-03-09 11:14 ` Linus Walleij 2021-03-09 11:14 ` Linus Walleij 2021-03-09 12:41 ` Arnd Bergmann 2021-03-09 12:41 ` Arnd Bergmann 2021-03-09 15:40 ` Linus Walleij 2021-03-09 15:40 ` Linus Walleij 2021-03-04 21:38 ` [RFT PATCH v3 13/27] arm64: Add Apple vendor-specific system registers Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-24 18:38 ` Will Deacon 2021-03-24 18:38 ` Will Deacon 2021-03-24 18:59 ` Mark Rutland 2021-03-24 18:59 ` Mark Rutland 2021-03-24 19:04 ` Will Deacon 2021-03-24 19:04 ` Will Deacon 2021-03-26 6:23 ` Hector Martin 2021-03-26 6:23 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 14/27] arm64: move ICH_ sysreg bits from arm-gic-v3.h to sysreg.h Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-08 11:39 ` Marc Zyngier 2021-03-08 11:39 ` Marc Zyngier 2021-03-24 18:23 ` Will Deacon 2021-03-24 18:23 ` Will Deacon 2021-03-04 21:38 ` [RFT PATCH v3 15/27] dt-bindings: interrupt-controller: Add DT bindings for apple-aic Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-08 21:16 ` Rob Herring 2021-03-08 21:16 ` Rob Herring 2021-03-04 21:38 ` [RFT PATCH v3 16/27] irqchip/apple-aic: Add support for the Apple Interrupt Controller Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 15:05 ` Andy Shevchenko 2021-03-05 15:05 ` Andy Shevchenko 2021-03-08 11:50 ` Marc Zyngier 2021-03-08 11:50 ` Marc Zyngier 2021-03-08 12:02 ` Andy Shevchenko 2021-03-08 12:02 ` Andy Shevchenko 2021-03-26 13:40 ` Hector Martin 2021-03-26 13:40 ` Hector Martin 2021-03-08 13:31 ` Marc Zyngier 2021-03-08 13:31 ` Marc Zyngier 2021-03-26 7:57 ` Hector Martin 2021-03-26 7:57 ` Hector Martin 2021-03-24 19:57 ` Will Deacon 2021-03-24 19:57 ` Will Deacon 2021-03-26 8:58 ` Hector Martin 2021-03-26 8:58 ` Hector Martin 2021-03-29 12:04 ` Will Deacon 2021-03-29 12:04 ` Will Deacon 2021-04-01 13:16 ` Hector Martin 2021-04-01 13:16 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 17/27] arm64: Kconfig: Introduce CONFIG_ARCH_APPLE Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-08 15:35 ` Marc Zyngier 2021-03-08 15:35 ` Marc Zyngier 2021-03-09 20:30 ` Hector Martin 2021-03-09 20:30 ` Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 18/27] tty: serial: samsung_tty: Separate S3C64XX ops structure Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:30 ` Krzysztof Kozlowski 2021-03-05 10:30 ` Krzysztof Kozlowski 2021-03-04 21:38 ` [RFT PATCH v3 19/27] tty: serial: samsung_tty: Add ucon_mask parameter Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:34 ` Krzysztof Kozlowski 2021-03-05 10:34 ` Krzysztof Kozlowski 2021-03-04 21:38 ` [RFT PATCH v3 20/27] tty: serial: samsung_tty: Add s3c24xx_port_type Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:49 ` Krzysztof Kozlowski 2021-03-05 10:49 ` Krzysztof Kozlowski 2021-03-04 21:38 ` [RFT PATCH v3 21/27] tty: serial: samsung_tty: IRQ rework Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:51 ` Krzysztof Kozlowski 2021-03-05 10:51 ` Krzysztof Kozlowski 2021-03-05 15:17 ` Andy Shevchenko 2021-03-05 15:17 ` Andy Shevchenko 2021-03-05 16:16 ` Hector Martin 2021-03-05 16:16 ` Hector Martin 2021-03-05 16:20 ` Andy Shevchenko 2021-03-05 16:20 ` Andy Shevchenko 2021-03-05 16:29 ` Hector Martin 2021-03-05 16:29 ` Hector Martin 2021-03-07 11:34 ` Krzysztof Kozlowski 2021-03-07 11:34 ` Krzysztof Kozlowski 2021-03-07 16:01 ` Arnd Bergmann 2021-03-07 16:01 ` Arnd Bergmann 2021-03-07 19:51 ` Krzysztof Kozlowski 2021-03-07 19:51 ` Krzysztof Kozlowski 2021-03-04 21:38 ` [RFT PATCH v3 22/27] tty: serial: samsung_tty: Use devm_ioremap_resource Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:54 ` Krzysztof Kozlowski 2021-03-05 10:54 ` Krzysztof Kozlowski 2021-03-05 15:19 ` Andy Shevchenko 2021-03-05 15:19 ` Andy Shevchenko 2021-03-04 21:38 ` [RFT PATCH v3 23/27] dt-bindings: serial: samsung: Add apple,s5l-uart compatible Hector Martin 2021-03-04 21:38 ` [RFT PATCH v3 23/27] dt-bindings: serial: samsung: Add apple, s5l-uart compatible Hector Martin 2021-03-08 21:17 ` [RFT PATCH v3 23/27] dt-bindings: serial: samsung: Add apple,s5l-uart compatible Rob Herring 2021-03-08 21:17 ` Rob Herring 2021-03-04 21:38 ` [RFT PATCH v3 24/27] tty: serial: samsung_tty: Add support for Apple UARTs Hector Martin 2021-03-04 21:38 ` Hector Martin 2021-03-05 10:58 ` Krzysztof Kozlowski 2021-03-05 10:58 ` Krzysztof Kozlowski 2021-03-05 15:28 ` Andy Shevchenko 2021-03-05 15:28 ` Andy Shevchenko 2021-03-05 17:04 ` Hector Martin 2021-03-05 17:04 ` Hector Martin 2021-03-07 11:40 ` Krzysztof Kozlowski 2021-03-07 11:40 ` Krzysztof Kozlowski 2021-03-04 21:39 ` [RFT PATCH v3 25/27] tty: serial: samsung_tty: Add earlycon " Hector Martin 2021-03-04 21:39 ` Hector Martin 2021-03-05 10:55 ` Krzysztof Kozlowski 2021-03-05 10:55 ` Krzysztof Kozlowski 2021-03-10 23:11 ` Linus Walleij 2021-03-10 23:11 ` Linus Walleij 2021-03-04 21:39 ` [RFT PATCH v3 26/27] dt-bindings: display: Add apple,simple-framebuffer Hector Martin 2021-03-04 21:39 ` [RFT PATCH v3 26/27] dt-bindings: display: Add apple, simple-framebuffer Hector Martin 2021-03-08 21:18 ` [RFT PATCH v3 26/27] dt-bindings: display: Add apple,simple-framebuffer Rob Herring 2021-03-08 21:18 ` Rob Herring 2021-03-09 16:37 ` Linus Walleij 2021-03-09 16:37 ` [RFT PATCH v3 26/27] dt-bindings: display: Add apple, simple-framebuffer Linus Walleij 2021-03-09 20:35 ` [RFT PATCH v3 26/27] dt-bindings: display: Add apple,simple-framebuffer Hector Martin 2021-03-09 20:35 ` Hector Martin 2021-03-04 21:39 ` [RFT PATCH v3 27/27] arm64: apple: Add initial Apple Mac mini (M1, 2020) devicetree Hector Martin 2021-03-04 21:39 ` Hector Martin 2021-03-05 11:03 ` Krzysztof Kozlowski 2021-03-05 11:03 ` Krzysztof Kozlowski 2021-03-05 11:14 ` Hector Martin 2021-03-05 11:14 ` Hector Martin 2021-03-05 11:45 ` Krzysztof Kozlowski 2021-03-05 11:45 ` Krzysztof Kozlowski 2021-03-05 15:59 ` Mark Kettenis 2021-03-05 15:59 ` Mark Kettenis 2021-03-05 16:50 ` Hector Martin 2021-03-05 16:50 ` Hector Martin 2021-03-13 20:22 ` Konrad Dybcio 2021-04-05 5:50 ` Hector Martin 2021-04-06 7:14 ` Arnd Bergmann 2021-03-05 10:11 ` [RFT PATCH v3 00/27] Apple M1 SoC platform bring-up Hector Martin 2021-03-05 10:11 ` Hector Martin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210304213902.83903-9-marcan@marcan.st \ --to=marcan@marcan.st \ --cc=andy.shevchenko@gmail.com \ --cc=arnd@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=corbet@lwn.net \ --cc=davem@davemloft.net \ --cc=devicetree@vger.kernel.org \ --cc=graf@amazon.com \ --cc=gregkh@linuxfoundation.org \ --cc=hch@infradead.org \ --cc=krzk@kernel.org \ --cc=linus.walleij@linaro.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=mark.kettenis@xs4all.nl \ --cc=mark.rutland@arm.com \ --cc=maz@kernel.org \ --cc=mohamed.mediouni@caramail.com \ --cc=olof@lixom.net \ --cc=robh@kernel.org \ --cc=stan@corellium.com \ --cc=tony@atomide.com \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.