Thread (8 messages) 8 messages, 3 authors, 2012-09-19

Re: [PATCH 17/24] ARM: OMAP: use __iomem pointers for MMIO

From: Tony Lindgren <tony@atomide.com>
Date: 2012-09-19 16:44:36
Also in: linux-arm-kernel

* Felipe Balbi [off-list ref] [120919 06:42]:
On Wed, Sep 19, 2012 at 01:35:47PM +0000, Arnd Bergmann wrote:
quoted
On Monday 17 September 2012, Tony Lindgren wrote:
quoted
* Tony Lindgren [off-list ref] [120916 13:39]:
quoted
* Arnd Bergmann [off-list ref] [120915 13:15]:
quoted
On Saturday 15 September 2012, Tony Lindgren wrote:
quoted
With my patches, this is now all omap1 specific and
moved to arch/arm/mach-omap1/include/mach/hardware.h.
It's probably easiest to just update this patch on
top of the hardware.h changes I've done.
Yes, sounds good. Do you want to send a patch for that
and let me drop this one then?
Yes I can pick this one and update it against one of my
branches to avoid merge conflicts.
This applies against mach-omap1/include/mach/hardware.h
with some fuzz so no issues there.

But I think we should not apply it as these are physical
addresses, not virtual addresses for omap1.
Right, I misread what is actually going on here because the
only driver I looked at treated the address as a virtual
address pointer.
quoted
We have IOMEM already in use for omap_read/write because of:

#define OMAP1_IO_ADDRESS(pa)    IOMEM((pa) - OMAP1_IO_OFFSET)

I think the right solution is to eventually get rid of
omap_read/write for omap1 also and replace them with ioremap
+ readl/writel.
Agreed.
OK.
 
quoted
quoted
Or am I missing something?
I did not see any new warnings for omap1, but I did see this
on omap2plus_defconfig:

drivers/watchdog/omap_wdt.c: In function 'omap_wdt_ioctl':
drivers/watchdog/omap_wdt.c:222:4: error: passing argument 1 of '__raw_readw' makes pointer from integer without a cast [-Werror]
arch/arm/include/asm/io.h:71:90: note: expected 'const volatile void *' but argument is of type 'unsigned int'

It seems I misinterpreted this, and it's actually a bug in the watchdog
driver that should be fixed using this patch instead (and backport it
to stable)
diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index fceec4f..7b45802 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -218,9 +218,11 @@ static long omap_wdt_ioctl(struct file *file, unsigned int cmd,
 	case WDIOC_GETSTATUS:
 		return put_user(0, (int __user *)arg);
 	case WDIOC_GETBOOTSTATUS:
+#ifdef CONFIG_ARCH_OMAP1
 		if (cpu_is_omap16xx())
-			return put_user(__raw_readw(ARM_SYSST),
+			return put_user(omap_readw(ARM_SYSST),
 					(int __user *)arg);
+#endif
indeed... my bad. I agree this should be changed by something better
though.
Yes that's wrong.

Regards,

Tony
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help