]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
m68k: coldfire: create IO access functions for internal registers
authorGreg Ungerer <gerg@linux-m68k.org>
Fri, 17 Apr 2026 13:35:52 +0000 (23:35 +1000)
committerGreg Ungerer <gerg@kernel.org>
Mon, 8 Jun 2026 03:15:18 +0000 (13:15 +1000)
The internal peripheral registers contained in all varieties of ColdFire
SoCs require simple big endian access ranging in sizes from 8, 16 and 32
bit. Currently there is a mixture of IO access methods used across the
various CPU support code, some using readx/writex and some using the
simpler __raw_readx/__raw_writew.

The readx/writex use cases are particularly kludgy in that they contain
code to differentiate internal register access and other general attached
peripheral register access - say on a PCI bus. In effect this means that
the readx/writex family for ColdFire is non-standard. This ultimately
ends up causing problems with definitions of other IO access support
functions like ioreadx/ioreadxbe/iowritex/iowritexbe which in the
generic case are defined in terms of readx/writex.

Create a set of internal only register access methods to ultimately
replace all internal register access code. The new access functions
mirror the existing readx/writex family but using the preferred 8/16/32
suffixes.

Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
arch/m68k/include/asm/io_no.h

index 516371d5587aa30e26b172f74a727ebae88c200e..4f0f34b06e37c3fed3067c5a8e8432f54d11fc2b 100644 (file)
@@ -107,6 +107,22 @@ static inline void writel(u32 value, volatile void __iomem *addr)
 
 #endif /* IOMEMBASE */
 
+#if defined(CONFIG_COLDFIRE)
+/*
+ * The ColdFire internal peripheral registers are big-endian, so you
+ * cannot use the conventional little-endian readb/readw/readl and
+ * writeb/writew/writel access functions. Define a family of access
+ * functions to give correct endian access that can be used by all
+ * architecture code.
+ */
+#define mcf_read8      __raw_readb
+#define mcf_read16     __raw_readw
+#define mcf_read32     __raw_readl
+#define mcf_write8     __raw_writeb
+#define mcf_write16    __raw_writew
+#define mcf_write32    __raw_writel
+#endif /* CONFIG_COLDFIRE */
+
 #if defined(CONFIG_PCI)
 /*
  * Support for PCI bus access uses the asm-generic access functions.