]> git.karo-electronics.de Git - linux-beck.git/commitdiff
m68knommu: fix wrong register offsets used for ColdFire 5272 multi-function pins
authorGreg Ungerer <gerg@uclinux.org>
Fri, 14 Sep 2012 06:36:08 +0000 (16:36 +1000)
committerGreg Ungerer <gerg@uclinux.org>
Thu, 27 Sep 2012 13:33:54 +0000 (23:33 +1000)
The registers used to configure and set the multifunction pins on the 5272
ColdFire are defined as absolute addresses. So the use of them does not need
to be offset relative to the peripheral region address.

Fix two cases of incorrect usage of these addresses. Both affect UART
initialization, one in the common UART pin setup code, the other in the
NETtel board specific UART signal handling.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
arch/m68k/include/asm/nettel.h
arch/m68k/platform/coldfire/m5272.c

index 4dec2d9fb99442e3752a21f6da4f9b25255f9024..2a7a7667d8074f02323bc113100557b559763289 100644 (file)
@@ -21,6 +21,7 @@
 #ifdef CONFIG_COLDFIRE
 #include <asm/coldfire.h>
 #include <asm/mcfsim.h>
+#include <asm/io.h>
 #endif
 
 /*---------------------------------------------------------------------------*/
@@ -86,16 +87,12 @@ static __inline__ void mcf_setppdata(unsigned int mask, unsigned int bits)
  */
 static __inline__ unsigned int mcf_getppdata(void)
 {
-       volatile unsigned short *pp;
-       pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
-       return((unsigned int) *pp);
+       return readw(MCFSIM_PBDAT);
 }
 
 static __inline__ void mcf_setppdata(unsigned int mask, unsigned int bits)
 {
-       volatile unsigned short *pp;
-       pp = (volatile unsigned short *) (MCF_MBAR + MCFSIM_PBDAT);
-       *pp = (*pp & ~mask) | bits;
+       write((readw(MCFSIM_PBDAT) & ~mask) | bits, MCFSIM_PBDAT);
 }
 #endif
 
index eae59f67bc1c824ce688eb432e8d4d23700265db..45b246d052efb2e1ef74d8d4d43cedea8644abdc 100644 (file)
@@ -35,13 +35,13 @@ static void __init m5272_uarts_init(void)
        u32 v;
 
        /* Enable the output lines for the serial ports */
-       v = readl(MCF_MBAR + MCFSIM_PBCNT);
+       v = readl(MCFSIM_PBCNT);
        v = (v & ~0x000000ff) | 0x00000055;
-       writel(v, MCF_MBAR + MCFSIM_PBCNT);
+       writel(v, MCFSIM_PBCNT);
 
-       v = readl(MCF_MBAR + MCFSIM_PDCNT);
+       v = readl(MCFSIM_PDCNT);
        v = (v & ~0x000003fc) | 0x000002a8;
-       writel(v, MCF_MBAR + MCFSIM_PDCNT);
+       writel(v, MCFSIM_PDCNT);
 }
 
 /***************************************************************************/