[PATCH 1/7] m68k: coldfire: create IO access functions for internal registers

Greg Ungerer
2026-04-30T05:23:17Z

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.

Signed-off-by: Greg Ungerer <gerg@kernel.org>
---
arch/m68k/include/asm/io_no.h | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h
index 516371d5587a..4f0f34b06e37 100644
--- a/arch/m68k/include/asm/io_no.h
+++ b/arch/m68k/include/asm/io_no.h
@@ -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.
--
2.54.0