From 81c0386c1376da54f05d6916936db5220df9f97d Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Tue, 16 Aug 2022 22:48:32 +0200 Subject: regmap: mmio: Support accelerared noinc operations Use the newly added callback for accelerated noinc MMIO to provide writesb, writesw, writesl, writesq, readsb, readsw, readsl and readsq. A special quirk is needed to deal with big endian regmaps: there are no accelerated operations defined for big endian, so fall back to calling the big endian operations itereatively for this case. The Hexagon architecture turns out to have an incomplete : writesb() is not implemented. Fix this by doing what other architectures do: include into the file. Cc: Brian Cain Cc: linux-hexagon@vger.kernel.org Cc: Arnd Bergmann Signed-off-by: Linus Walleij Link: https://lore.kernel.org/r/20220816204832.265837-2-linus.walleij@linaro.org Signed-off-by: Mark Brown --- arch/hexagon/include/asm/io.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch/hexagon/include') diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h index c33241425a5c..8e938dc1ca4b 100644 --- a/arch/hexagon/include/asm/io.h +++ b/arch/hexagon/include/asm/io.h @@ -308,6 +308,8 @@ static inline void outsl(unsigned long port, const void *buffer, int count) } } +#include + #endif /* __KERNEL__ */ #endif -- cgit From f8f60615379c1b36d9220f3886fb9b229e95d8cd Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Thu, 18 Aug 2022 14:12:27 +0200 Subject: regmap/hexagon: Properly fix the generic IO helpers I was too naive in just including into hexagon: one has to specify defines for every call that uses a (static) inline or this will not work. Fix it up by providing proper defines for all shorthands that hexagon provides. Compile-tested with hexagon LLVM which is the only working cross compiler for hexagon ATM after commenting out the -fno-inline-functions-called-once switch which isn't working with LLVM. Cc: Brian Cain Cc: linux-hexagon@vger.kernel.org Cc: Arnd Bergmann Fixes: 81c0386c1376 ("regmap: mmio: Support accelerared noinc operations") Signed-off-by: Linus Walleij Link: https://lore.kernel.org/r/20220818121227.151016-1-linus.walleij@linaro.org Signed-off-by: Mark Brown --- arch/hexagon/include/asm/io.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'arch/hexagon/include') diff --git a/arch/hexagon/include/asm/io.h b/arch/hexagon/include/asm/io.h index 8e938dc1ca4b..46a099de85b7 100644 --- a/arch/hexagon/include/asm/io.h +++ b/arch/hexagon/include/asm/io.h @@ -308,6 +308,29 @@ static inline void outsl(unsigned long port, const void *buffer, int count) } } +/* + * These defines are necessary to use the generic io.h for filling in + * the missing parts of the API contract. This is because the platform + * uses (inline) functions rather than defines and the generic helper + * fills in the undefined. + */ +#define virt_to_phys virt_to_phys +#define phys_to_virt phys_to_virt +#define memset_io memset_io +#define memcpy_fromio memcpy_fromio +#define memcpy_toio memcpy_toio +#define readb readb +#define readw readw +#define readl readl +#define writeb writeb +#define writew writew +#define writel writel +#define insb insb +#define insw insw +#define insl insl +#define outsb outsb +#define outsw outsw +#define outsl outsl #include #endif /* __KERNEL__ */ -- cgit