aboutsummaryrefslogtreecommitdiffstats
path: root/board/pn62/pn62.h
blob: 7bda0ad9d0b8d00488c06a7771b3c7aa60de8d20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
 * (C) Copyright 2002 Wolfgang Grandegger <wg@denx.de>
 *
 * See file CREDITS for list of people who contributed to this
 * project.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 * MA 02111-1307 USA
 */

#ifndef _PN62_H_
#define _PN62_H_

/*
 * Definitions for the Intel Bridge 21554 or 21555.
 */
#define I2155X_VPD_ADDR 	0xe6
#define I2155X_VPD_DATA 	0xe8

#define I2155X_VPD_START	0x80
#define I2155X_VPD_SN_START	0x80
#define I2155X_VPD_SN_SIZE	0x10
#define I2155X_VPD_MAC0_START	0x90
#define I2155X_VPD_MAC1_START	0x96

#define I2155X_SCRAPAD_ADDR	0xa8
#define I2155X_SCRAPAD_MAX	8

#define I2155X_BAR2_BASE	0x98
#define I2155X_BAR3_BASE	0x9c
#define I2155X_BAR4_BASE	0xa0

#define I2155X_BAR2_SETUP	0xb0
#define I2155X_BAR3_SETUP	0xb4
#define I2155X_BAR4_SETUP	0xb8

/*
 * Interrupt request numbers
 */
#define PN62_IRQ_HOST		0x0
#define PN62_IRQ_PLX9054	0x1
#define PN62_IRQ_ETH0		0x2
#define PN62_IRQ_ETH1		0x3
#define PN62_IRQ_COM1		0x4
#define PN62_IRQ_COM2		0x4

/*
 * Miscellaneous definitons.
 */
#define PN62_SMEM_DEFAULT	0x1f00000

/*
 * Definitions for boot protocol using Scratchpad registers.
 */
#define BOOT_DONE		0
#define BOOT_DONE_CLEAR  	  0x00dead00
#define BOOT_DONE_ERROR  	  0xbad0dead
#define BOOT_DONE_U_BOOT 	  0x12345678
#define BOOT_DONE_LINUX   	  0x87654321
#define BOOT_CMD 		1
#define BOOT_CMD_MOVE   	  0x1
#define BOOT_CMD_BOOT		  0x2
#define BOOT_DATA		2
#define BOOT_PROTO		3
#define BOOT_PROTO_READY	  0x23456789
#define BOOT_PROTO_CLEAR	  0x00000000
#define BOOT_STATUS		4

/*
 * LED Definitions:
 */
#define PN62_LED_BASE		0xff800300
#define PN62_LED_MAX		12

/*
 * LED0 - 7 mounted on top of board, D1 - D8
 * LED8 - 11 upper four LEDs on the front panel of the board.
 */
#define LED_0			0x00	/* OFF */
#define LED_1			0x01	/* ON */
#define LED_SLOW_CLOCK		0x02	/* SLOW 1Hz ish */
#define LED_nSLOW_CLOCK		0x03	/* inverse of above */
#define LED_WATCHDOG_OUT	0x06	/* Reset Watchdog level */
#define LED_WATCHDOG_CLOCK	0x07	/* clock to watchdog */

/*
 * LED's currently setup in AMD79C973 device as the following:
 * LED0 100Mbit
 * LED1 LNKSE
 * LED2 TX Activity
 * LED3 RX Activity
 */
#define LED_E0_LED0		0x08	/* Ethernet Port 0 LED 0 */
#define LED_E0_LED1		0x09	/* Ethernet Port 0 LED 1 */
#define LED_E0_LED2		0x0A	/* Ethernet Port 0 LED 2 */
#define LED_E0_LED3		0x0B	/* Ethernet Port 0 LED 3 */
#define LED_E1_LED0		0x0C	/* Ethernet Port 1 LED 0 */
#define LED_E1_LED1		0x0D	/* Ethernet Port 1 LED 1 */
#define LED_E1_LED2		0x0E	/* Ethernet Port 1 LED 2 */
#define LED_E1_LED3		0x0F	/* Ethernet Port 1 LED 3 */
#define LED_STROBE0		0x10	/* Processor Strobe 0 */
#define LED_STROBE1		0x11	/* Processor Strobe 1 */
#define LED_STROBE2		0x12	/* Processor Strobe 2 */
#define LED_STROBE3		0x13	/* Processor Strobe 3 */
#define LED_STROBE4		0x14	/* Processor Strobe 4 */
#define LED_STROBE5		0x15	/* Processor Strobe 5 */
#define LED_STROBE6		0x16	/* Processor Strobe 6 */
#define LED_STROBE7		0x17	/* Processor Strobe 7 */
#define LED_HOST_STROBE0	0x18	/* Host strobe 0 */
#define LED_HOST_STROBE1	0x19	/* Host strobe 1 */
#define LED_HOST_STROBE2	0x1A	/* Host strobe 2 */
#define LED_HOST_STROBE3	0x1B	/* Host strobe 3 */
#define LED_HOST_STROBE4	0x1C	/* Host strobe 4 */
#define LED_HOST_STROBE5	0x1D	/* Host strobe 5 */
#define LED_HOST_STROBE6	0x1E	/* Host strobe 6 */
#define LED_HOST_STROBE7	0x1F	/* Host strobe 7 */
#define LED_MPC_INT0		0x20	/* MPC8240 INT 0 */
#define LED_MPC_INT1		0x21	/* MPC8240 INT 1 */
#define	LED_MPC_INT2		0x22	/* MPC8240 INT 2 */
#define	LED_MPC_INT3		0x23	/* MPC8240 INT 3 */
#define	LED_MPC_INT4		0x24	/* MPC8240 INT 4 */
#define	LED_UART0_CS		0x25	/* UART 0 Chip Select */
#define	LED_UART1_CS		0x26	/* UART 1 Chip Select */
#define	LED_SRAM_CS		0x27	/* SRAM Chip Select */
#define	LED_SRAM_WR		0x28	/* SRAM WR Signal */
#define	LED_SRAM_RD		0x29	/* SRAM RD Signal */
#define	LED_MPC_RCS0		0x2A	/* MPC8240 RCS0 Signal */
#define	LED_S_PCI_FRAME		0x2B	/* Secondary PCI Frame Signal */
#define	LED_MPC_CS0		0x2C	/* MPC8240 CS0 Signal */
#define	LED_HOST_INT		0x2D	/* MPC8240 to Host Interrupt signal */
#define LED_LAST_FUNCTION	LED_HOST_INT	/* last function */

/*
 * Forward declarations
 */
int  i2155x_init         (void);
void i2155x_write_scrapad(int idx, u32 val);
u32  i2155x_read_scrapad (int idx);
void i2155x_set_bar_base (int bar, u32 addr);
int  i2155x_read_vpd     (int offset, int size, unsigned char *data);

int  am79c95x_init	 (void);

void set_led             (unsigned int number, unsigned int function);
void fatal_error	 (unsigned int error_code);
void show_startup_phase  (int phase);


#endif /* _PN62_H_ */