summaryrefslogtreecommitdiff
blob: 3246bd2f45b58c0b72d6b4f6aee699f773ad664c (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
--- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h
+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h
@@ -0,0 +1,72 @@
+/*
+ * Glue for the current linux definitons of this stuff.
+ */
+#ifndef IxOsalOsIxp425Base_H
+#define IxOsalOsIxp425Base_H 1
+#include <asm-arm/arch-ixp4xx/ixp4xx-regs.h>
+
+/* Force Address Coherent (the default) mapping on LE - Linux 2.6
+ * does not have a way of changing it.
+ */
+#if defined IX_OSAL_LINUX_LE
+# if !defined IX_OSAL_ENFORCED_LE_AC_MAPPING
+#  define IX_OSAL_ENFORCED_LE_AC_MAPPING
+# endif
+# if defined IX_OSAL_LE_DC_MAPPING
+#  error Little Endian Data Coherent mapping not supported on this platform
+# endif
+
+/* This doesn't matter on a BE build because it will never be used,
+ * however it will be selected and will fail on an LE build.
+ */
+# undef IX_OSAL_LE_DC
+# define IX_OSAL_LE_DC IX_OSAL_LE_DC_IS_INVALID_ON_THIS_PLATFORM
+#endif
+
+/* Physical addresses. */
+#define IXP425_PERIPHERAL_BASE_PHYS	IXP4XX_PERIPHERAL_BASE_PHYS
+#define IXP425_EXP_CFG_BASE_PHYS	IXP4XX_EXP_CFG_BASE_PHYS
+#define IXP425_PCI_CFG_BASE_PHYS	IXP4XX_PCI_CFG_BASE_PHYS
+
+//#define IXP425_EXP_BUS_BASE1_PHYS
+#define IXP425_EXP_BUS_BASE2_PHYS	IXP4XX_EXP_BUS_CS2_BASE_PHYS
+//#define IXP425_EXP_BUS_CS0_BASE_PHYS
+//#define IXP425_EXP_BUS_CS1_BASE_PHYS
+//#define IXP425_EXP_BUS_CS4_BASE_PHYS
+#define IXP425_EthA_BASE_PHYS		(IXP4XX_PERIPHERAL_BASE_PHYS + 0x9000)
+#define IXP425_EthB_BASE_PHYS		(IXP4XX_PERIPHERAL_BASE_PHYS + 0xA000)
+//#define IXP425_GPIO_BASE_PHYS
+#define IXP425_INTC_BASE_PHYS		IXP4XX_INTC_BASE_PHYS
+//#define IXP425_NPEA_BASE_PHYS
+//#define IXP425_NPEB_BASE_PHYS
+//#define IXP425_NPEC_BASE_PHYS
+//#define IXP425_PMU_BASE_PHYS
+#define IXP425_QMGR_BASE_PHYS		IXP4XX_QMGR_BASE_PHYS
+#define IXP425_TIMER_BASE_PHYS 		IXP4XX_TIMER_BASE_PHYS
+//#define IXP425_UART1_BASE_PHYS
+//#define IXP425_UART2_BASE_PHYS
+#define IXP425_USB_BASE_PHYS		IXP4XX_USB_BASE_PHYS
+
+/* Virtual addresses. */
+#define IXP425_PERIPHERAL_BASE_VIRT	IXP4XX_PERIPHERAL_BASE_VIRT
+#define IXP425_PERIPHERAL_REGION_SIZE	IXP4XX_PERIPHERAL_REGION_SIZE
+#define IXP425_EXP_CFG_BASE_VIRT	IXP4XX_EXP_CFG_BASE_VIRT
+#define IXP425_PCI_CFG_BASE_VIRT	IXP4XX_PCI_CFG_BASE_VIRT
+
+//#define IXP425_EthA_BASE_VIRT
+//#define IXP425_EthB_BASE_VIRT
+//#define IXP425_GPIO_BASE_VIRT
+//#define IXP425_NPEA_BASE_VIRT
+//#define IXP425_NPEB_BASE_VIRT
+//#define IXP425_NPEC_BASE_VIRT
+//#define IXP425_QMGR_BASE_VIRT	/* must be ioremapped on Linux 2.6 */
+//#define IXP425_TIMER_BASE_VIRT
+//#define IXP425_UART1_BASE_VIRT
+//#define IXP425_UART2_BASE_VIRT
+//#define IXP425_USB_BASE_VIRT
+
+/* Miscellaneous stuff. */
+#define IRQ_IXP425_XSCALE_PMU		IRQ_IXP4XX_XSCALE_PMU
+#define IXP425_ICMR			IXP4XX_ICMR
+#define IRQ_IXP425_USB			IRQ_IXP4XX_USB
+#endif
--- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h
+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h
@@ -53,6 +53,8 @@
 #error "Error: IxOsalOsIxp425Sys.h cannot be included directly before IxOsalOsIxp400.h"
 #endif
 
+#include "IxOsalOsIxp425Base.h"
+
 /* Memory Base Address */
 #define IX_OSAL_IXP400_EXP_BUS_PHYS_BASE       	IXP425_EXP_BUS_BASE2_PHYS
 #define IX_OSAL_IXP400_EXP_BUS_BOOT_PHYS_BASE  	IXP425_EXP_BUS_BASE1_PHYS
@@ -98,12 +100,12 @@ IxOsalMemoryMap ixOsalGlobalMemoryMap[] 
      * Queue Manager 
      */
     {
-     IX_OSAL_STATIC_MAP,	/* type            */
+     IX_OSAL_DYNAMIC_MAP,	/* type            */
      IX_OSAL_IXP400_QMGR_PHYS_BASE,	/* physicalAddress */
      IX_OSAL_IXP400_QMGR_MAP_SIZE,	/* size            */
-     IX_OSAL_IXP400_QMGR_VIRT_BASE,	/* virtualAddress  */
-     NULL,			/* mapFunction     */
-     NULL,			/* unmapFunction   */
+     0,				/* virtualAddress  */
+     ixOsalLinuxMemMap,		/* mapFunction     */
+     ixOsalLinuxMemUnmap,	/* unmapFunction   */
      0,				/* refCount        */
      IX_OSAL_BE | IX_OSAL_LE_DC,	/* endianType      */   
      "qMgr"			/* name            */