Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.git] / arch / ppc / platforms / 4xx / oak.h
1 /*
2  *
3  *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
4  *
5  *    Module name: oak.h
6  *
7  *    Description:
8  *      Macros, definitions, and data structures specific to the IBM PowerPC
9  *      403G{A,B,C,CX} "Oak" evaluation board. Anything specific to the pro-
10  *      cessor itself is defined elsewhere.
11  *
12  */
13
14 #ifdef __KERNEL__
15 #ifndef __ASM_OAK_H__
16 #define __ASM_OAK_H__
17
18 /* We have an IBM 403G{A,B,C,CX} core */
19 #include <asm/ibm403.h>
20
21 #define _IO_BASE        0
22 #define _ISA_MEM_BASE   0
23 #define PCI_DRAM_OFFSET 0
24
25 /* Memory map for the "Oak" evaluation board */
26
27 #define PPC403SPU_IO_BASE       0x40000000      /* 403 On-chip serial port */
28 #define PPC403SPU_IO_SIZE       0x00000008
29 #define OAKSERIAL_IO_BASE       0x7E000000      /* NS16550DV serial port */
30 #define OAKSERIAL_IO_SIZE       0x00000008
31 #define OAKNET_IO_BASE          0xF4000000      /* NS83902AV Ethernet */
32 #define OAKNET_IO_SIZE          0x00000040
33 #define OAKPROM_IO_BASE         0xFFFE0000      /* AMD 29F010 Flash ROM */
34 #define OAKPROM_IO_SIZE         0x00020000
35
36
37 /* Interrupt assignments fixed by the hardware implementation */
38
39 /* This is annoying kbuild-2.4 problem. -- Tom */
40
41 #define PPC403SPU_RX_INT        4       /* AIC_INT4 */
42 #define PPC403SPU_TX_INT        5       /* AIC_INT5 */
43 #define OAKNET_INT              27      /* AIC_INT27 */
44 #define OAKSERIAL_INT           28      /* AIC_INT28 */
45
46 #ifndef __ASSEMBLY__
47 /*
48  * Data structure defining board information maintained by the boot
49  * ROM on IBM's "Oak" evaluation board. An effort has been made to
50  * keep the field names consistent with the 8xx 'bd_t' board info
51  * structures.
52  */
53
54 typedef struct board_info {
55         unsigned char    bi_s_version[4];       /* Version of this structure */
56         unsigned char    bi_r_version[30];      /* Version of the IBM ROM */
57         unsigned int     bi_memsize;            /* DRAM installed, in bytes */
58         unsigned char    bi_enetaddr[6];        /* Ethernet MAC address */
59         unsigned int     bi_intfreq;            /* Processor speed, in Hz */
60         unsigned int     bi_busfreq;            /* Bus speed, in Hz */
61 } bd_t;
62
63 #ifdef __cplusplus
64 extern "C" {
65 #endif
66
67 extern void              oak_init(unsigned long r3,
68                                   unsigned long ird_start,
69                                   unsigned long ird_end,
70                                   unsigned long cline_start,
71                                   unsigned long cline_end);
72 extern void              oak_setup_arch(void);
73 extern int               oak_setup_residual(char *buffer);
74 extern void              oak_init_IRQ(void);
75 extern int               oak_get_irq(struct pt_regs *regs);
76 extern void              oak_restart(char *cmd);
77 extern void              oak_power_off(void);
78 extern void              oak_halt(void);
79 extern void              oak_time_init(void);
80 extern int               oak_set_rtc_time(unsigned long now);
81 extern unsigned long     oak_get_rtc_time(void);
82 extern void              oak_calibrate_decr(void);
83
84 #ifdef __cplusplus
85 }
86 #endif
87
88 /* Some 4xx parts use a different timebase frequency from the internal clock.
89 */
90 #define bi_tbfreq bi_intfreq
91
92 #define PPC4xx_MACHINE_NAME     "IBM Oak"
93
94 #endif /* !__ASSEMBLY__ */
95 #endif /* __ASM_OAK_H__ */
96 #endif /* __KERNEL__ */