2 * @file IxOsalOsIxp400.h
4 * @brief OS and platform specific definitions
9 * IXP400 SW Release version 2.0
11 * -- Copyright Notice --
14 * Copyright 2001-2005, Intel Corporation.
15 * All rights reserved.
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions
21 * 1. Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 * 2. Redistributions in binary form must reproduce the above copyright
24 * notice, this list of conditions and the following disclaimer in the
25 * documentation and/or other materials provided with the distribution.
26 * 3. Neither the name of the Intel Corporation nor the names of its contributors
27 * may be used to endorse or promote products derived from this software
28 * without specific prior written permission.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
32 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
35 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
39 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
40 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44 * -- End of Copyright Notice --
47 #ifndef IxOsalOsIxp400_H
48 #define IxOsalOsIxp400_H
50 #define BIT(x) (1<<(x))
52 #define IXP425_EthA_BASE 0xc8009000
53 #define IXP425_EthB_BASE 0xc800a000
55 #define IXP425_PSMA_BASE 0xc8006000
56 #define IXP425_PSMB_BASE 0xc8007000
57 #define IXP425_PSMC_BASE 0xc8008000
59 #define IXP425_PERIPHERAL_BASE 0xc8000000
61 #define IXP425_QMGR_BASE 0x60000000
62 #define IXP425_OSTS 0xC8005000
64 #define IXP425_INT_LVL_NPEA 0
65 #define IXP425_INT_LVL_NPEB 1
66 #define IXP425_INT_LVL_NPEC 2
68 #define IXP425_INT_LVL_QM1 3
69 #define IXP425_INT_LVL_QM2 4
71 #define IXP425_EXPANSION_BUS_BASE1 0x50000000
72 #define IXP425_EXPANSION_BUS_BASE2 0x50000000
73 #define IXP425_EXPANSION_BUS_CS1_BASE 0x51000000
75 #define IXP425_EXP_CONFIG_BASE 0xC4000000
77 /* physical addresses to be used when requesting memory with IX_OSAL_MEM_MAP */
78 #define IX_OSAL_IXP400_INTC_PHYS_BASE IXP425_INTC_BASE
79 #define IX_OSAL_IXP400_GPIO_PHYS_BASE IXP425_GPIO_BASE
80 #define IX_OSAL_IXP400_UART1_PHYS_BASE IXP425_UART1_BASE
81 #define IX_OSAL_IXP400_UART2_PHYS_BASE IXP425_UART2_BASE
82 #define IX_OSAL_IXP400_ETHA_PHYS_BASE IXP425_EthA_BASE
83 #define IX_OSAL_IXP400_ETHB_PHYS_BASE IXP425_EthB_BASE
84 #define IX_OSAL_IXP400_NPEA_PHYS_BASE IXP425_NPEA_BASE
85 #define IX_OSAL_IXP400_NPEB_PHYS_BASE IXP425_NPEB_BASE
86 #define IX_OSAL_IXP400_NPEC_PHYS_BASE IXP425_NPEC_BASE
87 #define IX_OSAL_IXP400_PERIPHERAL_PHYS_BASE IXP425_PERIPHERAL_BASE
88 #define IX_OSAL_IXP400_QMGR_PHYS_BASE IXP425_QMGR_BASE
89 #define IX_OSAL_IXP400_OSTS_PHYS_BASE IXP425_TIMER_BASE
90 #define IX_OSAL_IXP400_USB_PHYS_BASE IXP425_USB_BASE
91 #define IX_OSAL_IXP400_EXP_CFG_PHYS_BASE IXP425_EXP_CFG_BASE
92 #define IX_OSAL_IXP400_EXP_BUS_PHYS_BASE IXP425_EXP_BUS_BASE2
93 #define IX_OSAL_IXP400_EXP_BUS_BOOT_PHYS_BASE IXP425_EXP_BUS_BASE1
94 #define IX_OSAL_IXP400_EXP_BUS_CS0_PHYS_BASE IXP425_EXP_BUS_CS0_BASE
95 #define IX_OSAL_IXP400_EXP_BUS_CS1_PHYS_BASE IXP425_EXP_BUS_CS1_BASE
96 #define IX_OSAL_IXP400_EXP_BUS_CS4_PHYS_BASE IXP425_EXP_BUS_CS4_BASE
97 #define IX_OSAL_IXP400_EXP_BUS_REGS_PHYS_BASE IXP425_EXP_CFG_BASE
98 #define IX_OSAL_IXP400_PCI_CFG_PHYS_BASE IXP425_PCI_CFG_BASE
100 /* map sizes to be used when requesting memory with IX_OSAL_MEM_MAP */
101 #define IX_OSAL_IXP400_QMGR_MAP_SIZE (0x4000) /**< Queue Manager map size */
102 #define IX_OSAL_IXP400_PERIPHERAL_MAP_SIZE (0xC000) /**< Peripheral space map size */
103 #define IX_OSAL_IXP400_UART1_MAP_SIZE (0x1000) /**< UART1 map size */
104 #define IX_OSAL_IXP400_UART2_MAP_SIZE (0x1000) /**< UART2 map size */
105 #define IX_OSAL_IXP400_PMU_MAP_SIZE (0x1000) /**< PMU map size */
106 #define IX_OSAL_IXP400_OSTS_MAP_SIZE (0x1000) /**< OS Timers map size */
107 #define IX_OSAL_IXP400_NPEA_MAP_SIZE (0x1000) /**< NPE A map size */
108 #define IX_OSAL_IXP400_NPEB_MAP_SIZE (0x1000) /**< NPE B map size */
109 #define IX_OSAL_IXP400_NPEC_MAP_SIZE (0x1000) /**< NPE C map size */
110 #define IX_OSAL_IXP400_ETHA_MAP_SIZE (0x1000) /**< Eth A map size */
111 #define IX_OSAL_IXP400_ETHB_MAP_SIZE (0x1000) /**< Eth B map size */
112 #define IX_OSAL_IXP400_USB_MAP_SIZE (0x1000) /**< USB map size */
113 #define IX_OSAL_IXP400_GPIO_MAP_SIZE (0x1000) /**< GPIO map size */
114 #define IX_OSAL_IXP400_EXP_REG_MAP_SIZE (0x1000) /**< Exp Bus Config Registers map size */
115 #define IX_OSAL_IXP400_EXP_BUS_MAP_SIZE (0x08000000) /**< Expansion bus map size */
116 #define IX_OSAL_IXP400_EXP_BUS_CS0_MAP_SIZE (0x01000000) /**< CS0 map size */
117 #define IX_OSAL_IXP400_EXP_BUS_CS1_MAP_SIZE (0x01000000) /**< CS1 map size */
118 #define IX_OSAL_IXP400_EXP_BUS_CS4_MAP_SIZE (0x01000000) /**< CS4 map size */
119 #define IX_OSAL_IXP400_PCI_CFG_MAP_SIZE (0x1000) /**< PCI Bus Config Registers map size */
121 #define IX_OSAL_IXP400_EXP_FUSE (IXP425_EXP_CONFIG_BASE + 0x28)
122 #define IX_OSAL_IXP400_ETH_NPEA_PHYS_BASE 0xC800C000
123 #define IX_OSAL_IXP400_ETH_NPEA_MAP_SIZE 0x1000
128 #define IX_OSAL_IXP400_NPEA_IRQ_LVL (0)
129 #define IX_OSAL_IXP400_NPEB_IRQ_LVL (1)
130 #define IX_OSAL_IXP400_NPEC_IRQ_LVL (2)
131 #define IX_OSAL_IXP400_QM1_IRQ_LVL (3)
132 #define IX_OSAL_IXP400_QM2_IRQ_LVL (4)
133 #define IX_OSAL_IXP400_TIMER1_IRQ_LVL (5)
134 #define IX_OSAL_IXP400_GPIO0_IRQ_LVL (6)
135 #define IX_OSAL_IXP400_GPIO1_IRQ_LVL (7)
136 #define IX_OSAL_IXP400_PCI_INT_IRQ_LVL (8)
137 #define IX_OSAL_IXP400_PCI_DMA1_IRQ_LVL (9)
138 #define IX_OSAL_IXP400_PCI_DMA2_IRQ_LVL (10)
139 #define IX_OSAL_IXP400_TIMER2_IRQ_LVL (11)
140 #define IX_OSAL_IXP400_USB_IRQ_LVL (12)
141 #define IX_OSAL_IXP400_UART2_IRQ_LVL (13)
142 #define IX_OSAL_IXP400_TIMESTAMP_IRQ_LVL (14)
143 #define IX_OSAL_IXP400_UART1_IRQ_LVL (15)
144 #define IX_OSAL_IXP400_WDOG_IRQ_LVL (16)
145 #define IX_OSAL_IXP400_AHB_PMU_IRQ_LVL (17)
146 #define IX_OSAL_IXP400_XSCALE_PMU_IRQ_LVL (18)
147 #define IX_OSAL_IXP400_GPIO2_IRQ_LVL (19)
148 #define IX_OSAL_IXP400_GPIO3_IRQ_LVL (20)
149 #define IX_OSAL_IXP400_GPIO4_IRQ_LVL (21)
150 #define IX_OSAL_IXP400_GPIO5_IRQ_LVL (22)
151 #define IX_OSAL_IXP400_GPIO6_IRQ_LVL (23)
152 #define IX_OSAL_IXP400_GPIO7_IRQ_LVL (24)
153 #define IX_OSAL_IXP400_GPIO8_IRQ_LVL (25)
154 #define IX_OSAL_IXP400_GPIO9_IRQ_LVL (26)
155 #define IX_OSAL_IXP400_GPIO10_IRQ_LVL (27)
156 #define IX_OSAL_IXP400_GPIO11_IRQ_LVL (28)
157 #define IX_OSAL_IXP400_GPIO12_IRQ_LVL (29)
158 #define IX_OSAL_IXP400_SW_INT1_IRQ_LVL (30)
159 #define IX_OSAL_IXP400_SW_INT2_IRQ_LVL (31)
161 /* USB interrupt level mask */
162 #define IX_OSAL_IXP400_INT_LVL_USB IRQ_IXP425_USB
165 #define IX_OSAL_IXP400_USB_IRQ IRQ_IXP425_USB
170 #define IX_OSAL_OEM_OS_NAME_GET(name, limit) \
171 ixOsalOsIxp400NameGet((INT8*)(name), (INT32) (limit))
174 * OS version retrieval
176 #define IX_OSAL_OEM_OS_VERSION_GET(version, limit) \
177 ixOsalOsIxp400VersionGet((INT8*)(version), (INT32) (limit))
180 * Function to retrieve the OS name
182 PUBLIC IX_STATUS ixOsalOsIxp400NameGet(INT8* osName, INT32 maxSize);
185 * Function to retrieve the OS version
187 PUBLIC IX_STATUS ixOsalOsIxp400VersionGet(INT8* osVersion, INT32 maxSize);
192 PUBLIC UINT32 ixOsalOsIxp400TimestampGet (void);
197 #define IX_OSAL_OEM_TIMESTAMP_GET ixOsalOsIxp400TimestampGet
201 * Timestamp resolution
203 PUBLIC UINT32 ixOsalOsIxp400TimestampResolutionGet (void);
205 #define IX_OSAL_OEM_TIMESTAMP_RESOLUTION_GET ixOsalOsIxp400TimestampResolutionGet
208 * Retrieves the system clock rate
210 PUBLIC UINT32 ixOsalOsIxp400SysClockRateGet (void);
212 #define IX_OSAL_OEM_SYS_CLOCK_RATE_GET ixOsalOsIxp400SysClockRateGet
215 * required by FS but is not really platform-specific.
217 #define IX_OSAL_OEM_TIME_GET(pTv) ixOsalTimeGet(pTv)
221 /* linux map/unmap functions */
222 PUBLIC void ixOsalLinuxMemMap (IxOsalMemoryMap * map);
224 PUBLIC void ixOsalLinuxMemUnmap (IxOsalMemoryMap * map);
227 /*********************
229 ********************/
231 /* Global memmap only visible to IO MEM module */
235 IxOsalMemoryMap ixOsalGlobalMemoryMap[] = {
237 /* Global BE and LE_AC map */
238 IX_OSAL_STATIC_MAP, /* type */
239 0x00000000, /* physicalAddress */
240 0x30000000, /* size */
241 0x00000000, /* virtualAddress */
242 NULL, /* mapFunction */
243 NULL, /* unmapFunction */
245 IX_OSAL_BE | IX_OSAL_LE_AC,/* endianType */
246 "global_low" /* name */
249 /* SDRAM LE_DC alias */
251 IX_OSAL_STATIC_MAP, /* type */
252 0x00000000, /* physicalAddress */
253 0x10000000, /* size */
254 0x30000000, /* virtualAddress */
255 NULL, /* mapFunction */
256 NULL, /* unmapFunction */
258 IX_OSAL_LE_DC, /* endianType */
259 "sdram_dc" /* name */
262 /* QMGR LE_DC alias */
264 IX_OSAL_STATIC_MAP, /* type */
265 0x60000000, /* physicalAddress */
266 0x00100000, /* size */
267 0x60000000, /* virtualAddress */
268 NULL, /* mapFunction */
269 NULL, /* unmapFunction */
271 IX_OSAL_LE_DC, /* endianType */
277 IX_OSAL_STATIC_MAP, /* type */
278 0x60000000, /* physicalAddress */
279 0x00100000, /* size */
280 0x60000000, /* virtualAddress */
281 NULL, /* mapFunction */
282 NULL, /* unmapFunction */
284 IX_OSAL_BE | IX_OSAL_LE_AC,/* endianType */
288 /* Global BE and LE_AC map */
290 IX_OSAL_STATIC_MAP, /* type */
291 0x40000000, /* physicalAddress */
292 0x20000000, /* size */
293 0x40000000, /* virtualAddress */
294 NULL, /* mapFunction */
295 NULL, /* unmapFunction */
297 IX_OSAL_BE | IX_OSAL_LE_AC,/* endianType */
298 "Misc Cfg" /* name */
301 /* Global BE and LE_AC map */
303 IX_OSAL_STATIC_MAP, /* type */
304 0x70000000, /* physicalAddress */
305 0x8FFFFFFF, /* size */
306 0x70000000, /* virtualAddress */
307 NULL, /* mapFunction */
308 NULL, /* unmapFunction */
310 IX_OSAL_BE | IX_OSAL_LE_AC,/* endianType */
315 #endif /* IxOsalIoMem_C */
316 #endif /* #define IxOsalOsIxp400_H */