Linux MultiMedia Card development
 help / color / mirror / Atom feed
* [RFC 0/4] m68k: coldfire: fix non-standard readX()/writeX() functions
@ 2026-05-06 14:11 Greg Ungerer
  0 siblings, 0 replies; only message in thread
From: Greg Ungerer @ 2026-05-06 14:11 UTC (permalink / raw)
  To: linux-m68k
  Cc: linux-kernel, arnd, netdev, linux-mmc, dmaengine, linux-can,
	linux-spi, olteanv, wei.fang, frank.li, shenwei.wang, nico,
	adureghello, Greg Ungerer

This odd collection of patches is aimed at fixing the non-standard ColdFire
set of readX()/writeX() IO access functions. Instead switching to using the
asm-generic definitions in include/asm-generic/io.h. The difficulty comes
in trying not to break any drivers with this change.

The implementation of the readX()/writeX() family of IO access functions
is non-standard on ColdFire platforms. They either return big-endian (that
is native endian) data, or on platforms with PCI bus support check the
supplied address and return either big or little endian data based on that
check. This is non-standard, they are expected to always return
little-endian byte ordered data. Unfortunately this behavior also means
that ioreadX()/iowroteX() and their big-endian counter parts
ioreadXbe()/iowriteXbe() are currently broken because they are implemented
using the readX()/writeX() functions.

Patches 1, 2 and 3 in this series are specific driver changes that can be
made independently of the final ColdFire readX()/writeX() change.

Patch 4 is the actual switch to ColdFire building using asm-generic
readX()/writeX(), but also contains three driver fixes that are not easily
handled independently.

Looking for comments on the approach taken here, or if there is a better
way forward?

Note also that I don't have access to all supported hardware needed to
fully test all these changes. I have tested what I have, a bunch of the
standard Freescale ColdFire eval boards, and inspected generated code
for differences.

Signed-off-by: Greg Ungerer <gerg@linux-m68k.org>
---
 arch/m68k/include/asm/io_no.h             |   68 --------
 drivers/dma/mcf-edma-main.c               |   14 -
 drivers/mmc/host/sdhci-esdhc-mcf.c        |   24 +-
 drivers/net/can/flexcan/flexcan-core.c    |    1 
 drivers/net/ethernet/freescale/fec.h      |   15 +
 drivers/net/ethernet/freescale/fec_main.c |  254 +++++++++++++++---------------
 drivers/net/ethernet/freescale/fec_ptp.c  |   78 ++++-----
 drivers/net/ethernet/smsc/smc91x.h        |   12 -
 drivers/spi/spi-fsl-dspi.c                |    2 
 9 files changed, 217 insertions(+), 251 deletions(-)


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-06 14:17 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-06 14:11 [RFC 0/4] m68k: coldfire: fix non-standard readX()/writeX() functions Greg Ungerer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox