summaryrefslogtreecommitdiff
blob: 46af56ba24abfc7d8f78332f96a21873137a2096 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
--- ixp_osal/include/modules/ioMem/IxOsalIoMem.h
+++ ixp_osal/include/modules/ioMem/IxOsalIoMem.h
@@ -117,8 +117,8 @@ ixOsalCoreWordSwap (UINT32 wordIn)
 #endif /* ndef __wince */
 
 #define IX_OSAL_SWAP_SHORT(sData)         ((sData >> 8) | ((sData & 0xFF) << 8))
-#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((sAddr) ^ 0x2)
-#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr)  ((bAddr) ^ 0x3)
+#define IX_OSAL_SWAP_SHORT_ADDRESS(sAddr) ((UINT16*)((UINT32)(sAddr) ^ 0x2))
+#define IX_OSAL_SWAP_BYTE_ADDRESS(bAddr)  ((UINT8*)((UINT32)(bAddr) ^ 0x3))
 
 #define IX_OSAL_BE_XSTOBUSL(wData)  (wData)
 #define IX_OSAL_BE_XSTOBUSS(sData)  (sData)
--- ixp_osal/include/modules/ioMem/IxOsalMemAccess.h
+++ ixp_osal/include/modules/ioMem/IxOsalMemAccess.h
@@ -84,7 +84,7 @@
 
 #elif defined (IX_OSAL_LINUX_LE)
 
-#define IX_SDRAM_LE_DATA_COHERENT
+#define IX_SDRAM_LE_ADDRESS_COHERENT
 
 #elif defined (IX_OSAL_WINCE_LE)
 
--- ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h
+++ ixp_osal/os/linux/include/platforms/ixp400/IxOsalOsIxp400CustomizedMapping.h
@@ -171,7 +171,7 @@
  ***************************/
 #if (IX_COMPONENT_NAME == ix_qmgr)
 
-#define IX_OSAL_LE_DC_MAPPING
+#define IX_OSAL_LE_AC_MAPPING
 
 #endif /* qmgr */
 
--- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h
+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h
@@ -107,7 +107,7 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[] 
      ixOsalLinuxMemMap,		/* mapFunction     */
      ixOsalLinuxMemUnmap,	/* unmapFunction   */
      0,				/* refCount        */
-     IX_OSAL_BE | IX_OSAL_LE_DC,	/* endianType      */   
+     IX_OSAL_BE | IX_OSAL_LE_AC,	/* endianType      */   
      "qMgr"			/* name            */
      },
 
--- ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c
+++ ixp_osal/os/linux/src/modules/ioMem/IxOsalOsIoMem.c
@@ -45,6 +45,7 @@
  * -- End Intel Copyright Notice --
  */
 
+#include <asm/page.h>
 #include <asm/io.h>
 #include <linux/ioport.h>
 
@@ -54,6 +55,8 @@
 PUBLIC void
 ixOsalLinuxMemMap (IxOsalMemoryMap * map)
 {
+    /* Linux requires LE mappings to use address coherency */
+    IX_OSAL_ENSURE((map->mapEndianType & IX_OSAL_LE_DC) == 0, "LE Data Coherency not supported");
     map->virtualAddress = (UINT32) ioremap (map->physicalAddress, map->size);
 }