]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/asm-powerpc/eeh.h
cpm_uart: make it possible to utilize from powerpc
[karo-tx-linux.git] / include / asm-powerpc / eeh.h
index e9c86b1eedab50c309f03ea7eedef1e0c99f890d..6a784396660bf78a00145b07e9f35c410438898e 100644 (file)
@@ -205,6 +205,7 @@ static inline void eeh_memset_io(volatile void __iomem *addr, int c,
        lc |= lc << 8;
        lc |= lc << 16;
 
+       __asm__ __volatile__ ("sync" : : : "memory");
        while(n && !EEH_CHECK_ALIGN(p, 4)) {
                *((volatile u8 *)p) = c;
                p++;
@@ -229,6 +230,7 @@ static inline void eeh_memcpy_fromio(void *dest, const volatile void __iomem *sr
        void *destsave = dest;
        unsigned long nsave = n;
 
+       __asm__ __volatile__ ("sync" : : : "memory");
        while(n && (!EEH_CHECK_ALIGN(vsrc, 4) || !EEH_CHECK_ALIGN(dest, 4))) {
                *((u8 *)dest) = *((volatile u8 *)vsrc);
                __asm__ __volatile__ ("eieio" : : : "memory");
@@ -266,6 +268,7 @@ static inline void eeh_memcpy_toio(volatile void __iomem *dest, const void *src,
 {
        void *vdest = (void __force *) dest;
 
+       __asm__ __volatile__ ("sync" : : : "memory");
        while(n && (!EEH_CHECK_ALIGN(vdest, 4) || !EEH_CHECK_ALIGN(src, 4))) {
                *((volatile u8 *)vdest) = *((u8 *)src);
                src++;
@@ -292,8 +295,6 @@ static inline void eeh_memcpy_toio(volatile void __iomem *dest, const void *src,
 static inline u8 eeh_inb(unsigned long port)
 {
        u8 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_8((u8 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u8))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -302,15 +303,12 @@ static inline u8 eeh_inb(unsigned long port)
 
 static inline void eeh_outb(u8 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_8((u8 __iomem *)(port+pci_io_base), val);
+       out_8((u8 __iomem *)(port+pci_io_base), val);
 }
 
 static inline u16 eeh_inw(unsigned long port)
 {
        u16 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_le16((u16 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u16))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -319,15 +317,12 @@ static inline u16 eeh_inw(unsigned long port)
 
 static inline void eeh_outw(u16 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_le16((u16 __iomem *)(port+pci_io_base), val);
+       out_le16((u16 __iomem *)(port+pci_io_base), val);
 }
 
 static inline u32 eeh_inl(unsigned long port)
 {
        u32 val;
-       if (!_IO_IS_VALID(port))
-               return ~0;
        val = in_le32((u32 __iomem *)(port+pci_io_base));
        if (EEH_POSSIBLE_ERROR(val, u32))
                return eeh_check_failure((void __iomem *)(port), val);
@@ -336,8 +331,7 @@ static inline u32 eeh_inl(unsigned long port)
 
 static inline void eeh_outl(u32 val, unsigned long port)
 {
-       if (_IO_IS_VALID(port))
-               out_le32((u32 __iomem *)(port+pci_io_base), val);
+       out_le32((u32 __iomem *)(port+pci_io_base), val);
 }
 
 /* in-string eeh macros */