On Thu, Apr 27, 2023, at 08:22, Thomas Zimmermann wrote:
Am 26.04.23 um 21:21 schrieb Sam Ravnborg:
On Wed, Apr 26, 2023 at 03:04:15PM +0200, Thomas Zimmermann wrote:
Fbdev provides helpers for framebuffer I/O, such as fb_readl(),
fb_writel() or fb_memcpy_to_fb(). The implementation of each helper
depends on the architecture. It's still all located in fbdev's main
header file <linux/fb.h>. Move all of it into each archtecture's
<asm/fb.h>, with shared code in <asm-generic/fb.h>.
For once I think this cleanup is moving things in the wrong direction.
The fb_* helpers predates the generic io.h support and try to
add a generic layer for read read / write operations.
The right fix would be to migrate fb_* to use the io helpers
we have today - so we use the existing way to handle the architecture
specific details.
I looked through the existing versions of the fb_() I/O helpers. They
can apparently be implemented with the regular helpers of similar names.
I'm not sure, but even Sparc looks compatible. At least these sbus_
functions seem to be equivalent to the __raw_() I/O helpers of similar
names. Do you still have that Sparc emulator?
I looked at the current code and came to the same conclusion: all
architectures we support today do the same thing in __raw_readl()
and fb_readl() etc, so we can completely remove the latter without
changing semantics.
I think the original list was necessary since not all architectures
supported the __raw_ accessors in the past, so they were open-coded
here for the rest. I thought there were also architectures on which
__raw_readl() does a byteswap to reverse the swap done in a PCI
host bridge, but it apears that none of those remain now, if we ever
had them.
Arnd