os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h |   72 ++++++++++
 os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h  |   10 -
 2 files changed, 78 insertions(+), 4 deletions(-)

--- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Sys.h	1970-01-01 00:00:00.000000000 +0000
@@ -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            */
--- ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h	1970-01-01 00:00:00.000000000 +0000
+++ ixp_osal/os/linux/include/platforms/ixp400/ixp425/IxOsalOsIxp425Base.h	1970-01-01 00:00:00.000000000 +0000
@@ -0,0 +1,80 @@
+/*
+ * Glue for the current linux definitons of this stuff.
+ */
+#ifndef IxOsalOsIxp425Base_H
+#define IxOsalOsIxp425Base_H 1
+#include <asm-arm/arch-ixp4xx/ixp4xx-regs.h>
+#include <linux/version.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
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,16)
+#define IXP425_EXP_BUS_BASE2_PHYS	IXP4XX_EXP_BUS_CS2_BASE_PHYS
+#else
+/* The following definition should be IXP4XX_EXP_BUS_BASE(2), but that is not
+   static and causes compilation problems later.  So we need to hard-code it.
+   Note that this hard-coded value is only correct for IXP42X. */
+#define IXP425_EXP_BUS_BASE2_PHYS	(IXP4XX_EXP_BUS_BASE_PHYS + (2 * SZ_16M))
+#endif
+//#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