linux-mips
[Top] [All Lists]

ioremap() and CONFIG_SWAP_IO_SPACE

To: linux-mips@linux-mips.org
Subject: ioremap() and CONFIG_SWAP_IO_SPACE
From: Thomas Koeller <thomas.koeller@baslerweb.com>
Date: Wed, 25 Aug 2004 11:30:53 +0200
Organization: Basler AG
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
User-agent: KMail/1.6.2
Hi,

my platform (PMC-Sierra Yosemite in big endian mode),
like many others, uses ioremap() to map device
registers, such as the RM9000's OCD registers.
To access those registers, the return value of
ioremap() is casted to a suitable pointer type and
dereferenced. This of course works, but the return
value of ioremap() is documented not to be a
directly dereferenceable pointer value, and accesses
to ioremapped addresses should be performed using
the readx/writex APIs.

I therefore decided to straighten this out and use those
APIs throughout, but that did not work. The platform
defines 'CONFIG_SWAP_IO_SPACE=y', which causes all
accesses through readx/writex to be byte-swapped. That
is not really appropriate, as the registers are in big
endian order. I therefore tried to change that setting
in yosemite_defconfig, only to find that every time
I do 'make oldconfig' it returns to its original
value of 'y'.

So here are my questions:

1. Am I right to conclude that the platform configuration
   should not set CONFIG_SWAP_IO_SPACE, or am I missing
   something?

2. What is the mechanism that causes that setting to
   always revert to enabled when doing 'make oldconfig'?
   How do I avoid that?

thanks,
Thomas
-- 
--------------------------------------------------

Thomas Koeller, Software Development
Basler Vision Technologies

thomas dot koeller at baslerweb dot com
http://www.baslerweb.com

==============================

<Prev in Thread] Current Thread [Next in Thread>