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 int ixp23xx_pci_setup(int, struct pci_sys_data *);
38 void ixp23xx_pci_preinit(void);
39 struct pci_bus *ixp23xx_pci_scan_bus(int, struct pci_sys_data*);
40 void ixp23xx_pci_slave_init(void);
41 
42 extern struct sys_timer ixp23xx_timer;
43 
44 #define IXP23XX_UART_XTAL		14745600
45 
46 #ifndef __ASSEMBLY__
47 /*
48  * Is system memory on the XSI or CPP bus?
49  */
ixp23xx_cpp_boot(void)50 static inline unsigned ixp23xx_cpp_boot(void)
51 {
52 	return (*IXP23XX_EXP_CFG0 & IXP23XX_EXP_CFG0_XSI_NOT_PRES);
53 }
54 #endif
55 
56 
57 #endif
58