• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/mips/include/asm/pmc-sierra/msp71xx/
1/*
2 * MIPS boards bootprom interface for the Linux kernel.
3 *
4 * Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
5 * Author: Carsten Langgaard, carstenl@mips.com
6 *
7 * ########################################################################
8 *
9 *  This program is free software; you can distribute it and/or modify it
10 *  under the terms of the GNU General Public License (Version 2) as
11 *  published by the Free Software Foundation.
12 *
13 *  This program is distributed in the hope it will be useful, but WITHOUT
14 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 *  for more details.
17 *
18 *  You should have received a copy of the GNU General Public License along
19 *  with this program; if not, write to the Free Software Foundation, Inc.,
20 *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
21 *
22 * ########################################################################
23 */
24
25#ifndef _ASM_MSP_PROM_H
26#define _ASM_MSP_PROM_H
27
28#include <linux/types.h>
29
30#define DEVICEID			"deviceid"
31#define FEATURES			"features"
32#define PROM_ENV			"prom_env"
33#define PROM_ENV_FILE			"/proc/"PROM_ENV
34#define PROM_ENV_SIZE			256
35
36#define CPU_DEVID_FAMILY		0x0000ff00
37#define CPU_DEVID_REVISION		0x000000ff
38
39#define FPGA_IS_POLO(revision) \
40		(((revision >= 0xb0) && (revision < 0xd0)))
41#define FPGA_IS_5000(revision) \
42		((revision >= 0x80) && (revision <= 0x90))
43#define	FPGA_IS_ZEUS(revision)		((revision < 0x7f))
44#define FPGA_IS_DUET(revision) \
45		(((revision >= 0xa0) && (revision < 0xb0)))
46#define FPGA_IS_MSP4200(revision)	((revision >= 0xd0))
47#define FPGA_IS_MSP7100(revision)	((revision >= 0xd0))
48
49#define MACHINE_TYPE_POLO		"POLO"
50#define MACHINE_TYPE_DUET		"DUET"
51#define	MACHINE_TYPE_ZEUS		"ZEUS"
52#define MACHINE_TYPE_MSP2000REVB	"MSP2000REVB"
53#define MACHINE_TYPE_MSP5000		"MSP5000"
54#define MACHINE_TYPE_MSP4200		"MSP4200"
55#define MACHINE_TYPE_MSP7120		"MSP7120"
56#define MACHINE_TYPE_MSP7130		"MSP7130"
57#define MACHINE_TYPE_OTHER		"OTHER"
58
59#define MACHINE_TYPE_POLO_FPGA		"POLO-FPGA"
60#define MACHINE_TYPE_DUET_FPGA		"DUET-FPGA"
61#define	MACHINE_TYPE_ZEUS_FPGA		"ZEUS_FPGA"
62#define MACHINE_TYPE_MSP2000REVB_FPGA	"MSP2000REVB-FPGA"
63#define MACHINE_TYPE_MSP5000_FPGA	"MSP5000-FPGA"
64#define MACHINE_TYPE_MSP4200_FPGA	"MSP4200-FPGA"
65#define MACHINE_TYPE_MSP7100_FPGA	"MSP7100-FPGA"
66#define MACHINE_TYPE_OTHER_FPGA		"OTHER-FPGA"
67
68/* Device Family definitions */
69#define FAMILY_FPGA			0x0000
70#define FAMILY_ZEUS			0x1000
71#define FAMILY_POLO			0x2000
72#define FAMILY_DUET			0x4000
73#define FAMILY_TRIAD			0x5000
74#define FAMILY_MSP4200			0x4200
75#define FAMILY_MSP4200_FPGA		0x4f00
76#define FAMILY_MSP7100			0x7100
77#define FAMILY_MSP7100_FPGA		0x7f00
78
79/* Device Type definitions */
80#define TYPE_MSP7120			0x7120
81#define TYPE_MSP7130			0x7130
82
83#define ENET_KEY		'E'
84#define ENETTXD_KEY		'e'
85#define PCI_KEY			'P'
86#define PCIMUX_KEY		'p'
87#define SEC_KEY			'S'
88#define SPAD_KEY		'D'
89#define TDM_KEY			'T'
90#define ZSP_KEY			'Z'
91
92#define FEATURE_NOEXIST		'-'
93#define FEATURE_EXIST		'+'
94
95#define ENET_MII		'M'
96#define ENET_RMII		'R'
97
98#define	ENETTXD_FALLING		'F'
99#define ENETTXD_RISING		'R'
100
101#define PCI_HOST		'H'
102#define PCI_PERIPHERAL		'P'
103
104#define PCIMUX_FULL		'F'
105#define PCIMUX_SINGLE		'S'
106
107#define SEC_DUET		'D'
108#define SEC_POLO		'P'
109#define SEC_SLOW		'S'
110#define SEC_TRIAD		'T'
111
112#define SPAD_POLO		'P'
113
114#define TDM_DUET		'D'	/* DUET TDMs might exist */
115#define TDM_POLO		'P'	/* POLO TDMs might exist */
116#define TDM_TRIAD		'T'	/* TRIAD TDMs might exist */
117
118#define ZSP_DUET		'D'	/* one DUET zsp engine */
119#define ZSP_TRIAD		'T'	/* two TRIAD zsp engines */
120
121extern char *prom_getenv(char *name);
122extern void prom_init_cmdline(void);
123extern void prom_meminit(void);
124extern void prom_fixup_mem_map(unsigned long start_mem,
125			       unsigned long end_mem);
126
127extern int get_ethernet_addr(char *ethaddr_name, char *ethernet_addr);
128extern unsigned long get_deviceid(void);
129extern char identify_enet(unsigned long interface_num);
130extern char identify_enetTxD(unsigned long interface_num);
131extern char identify_pci(void);
132extern char identify_sec(void);
133extern char identify_spad(void);
134extern char identify_sec(void);
135extern char identify_tdm(void);
136extern char identify_zsp(void);
137extern unsigned long identify_family(void);
138extern unsigned long identify_revision(void);
139
140/*
141 * The following macro calls prom_printf and puts the format string
142 * into an init section so it can be reclaimed.
143 */
144#define ppfinit(f, x...) \
145	do { \
146		static char _f[] __initdata = KERN_INFO f; \
147		printk(_f, ## x); \
148	} while (0)
149
150/* Memory descriptor management. */
151#define PROM_MAX_PMEMBLOCKS    7	/* 6 used */
152
153enum yamon_memtypes {
154	yamon_dontuse,
155	yamon_prom,
156	yamon_free,
157};
158
159struct prom_pmemblock {
160	unsigned long base; /* Within KSEG0. */
161	unsigned int size;  /* In bytes. */
162	unsigned int type;  /* free or prom memory */
163};
164
165extern int prom_argc;
166extern char **prom_argv;
167extern char **prom_envp;
168extern int *prom_vec;
169extern struct prom_pmemblock *prom_getmdesc(void);
170
171#endif /* !_ASM_MSP_PROM_H */
172