1 /*
2  * arch/arm/mach-ixp23xx/include/mach/platform.h
3  *
4  * Various bits of code used by platform-level code.
5  *
6  * Author: Deepak Saxena <dsaxena@plexity.net>
7  *
8  * Copyright 2005 (c) MontaVista Software, Inc.
9  *
10  * This file is licensed under the terms of the GNU General Public
11  * License version 2. This program is licensed "as is" without any
12  * warranty of any kind, whether express or implied.
13  */
14 
15 #ifndef __ASSEMBLY__
16 
ixp2000_reg_read(volatile void * reg)17 static inline unsigned long ixp2000_reg_read(volatile void *reg)
18 {
19 	return *((volatile unsigned long *)reg);
20 }
21 
ixp2000_reg_write(volatile void * reg,unsigned long val)22 static inline void ixp2000_reg_write(volatile void *reg, unsigned long val)
23 {
24 	*((volatile unsigned long *)reg) = val;
25 }
26 
ixp2000_reg_wrb(volatile void * reg,unsigned long val)27 static inline void ixp2000_reg_wrb(volatile void *reg, unsigned long val)
28 {
29 	*((volatile unsigned long *)reg) = val;
30 }
31 
32 struct pci_sys_data;
33 
34 void ixp23xx_map_io(void);
35 void ixp23xx_init_irq(void);
36 void ixp23xx_sys_init(void);
37 void ixp23xx_restart(char, const char *);
38 int ixp23xx_pci_setup(int, struct pci_sys_data *);
39 void ixp23xx_pci_preinit(void);
40 struct pci_bus *ixp23xx_pci_scan_bus(int, struct pci_sys_data*);
41 void ixp23xx_pci_slave_init(void);
42 
43 extern struct sys_timer ixp23xx_timer;
44 
45 #define IXP23XX_UART_XTAL		14745600
46 
47 #ifndef __ASSEMBLY__
48 /*
49  * Is system memory on the XSI or CPP bus?
50  */
ixp23xx_cpp_boot(void)51 static inline unsigned ixp23xx_cpp_boot(void)
52 {
53 	return (*IXP23XX_EXP_CFG0 & IXP23XX_EXP_CFG0_XSI_NOT_PRES);
54 }
55 #endif
56 
57 
58 #endif
59