1633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/*
2633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * lasat.h
3633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
4633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Thomas Horsten <thh@lasat.com>
5633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Copyright (C) 2000 LASAT Networks A/S.
6633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
7633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  This program is free software; you can distribute it and/or modify it
8633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  under the terms of the GNU General Public License (Version 2) as
9633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  published by the Free Software Foundation.
10633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
11633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  This program is distributed in the hope it will be useful, but WITHOUT
12633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  for more details.
15633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
16633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  You should have received a copy of the GNU General Public License along
17633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  with this program; if not, write to the Free Software Foundation, Inc.,
18633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
19633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
20633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Configuration for LASAT boards, loads the appropriate include files.
21633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */
22633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#ifndef _LASAT_H
23633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define _LASAT_H
24633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
25633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#ifndef _LANGUAGE_ASSEMBLY
26633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
27633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern struct lasat_misc {
28633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile u32 *reset_reg;
29633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile u32 *flash_wp_reg;
30633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	u32 flash_wp_bit;
31633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham} *lasat_misc;
32633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
33633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamenum lasat_mtdparts {
34633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_BOOTLOADER,
35633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_SERVICE,
36633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_NORMAL,
37633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_CONFIG,
38633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_FS,
39633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	LASAT_MTD_LAST
40633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham};
41633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
42633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/*
43633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * The format of the data record in the EEPROM.
44633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * See Documentation/LASAT/eeprom.txt for a detailed description
45633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * of the fields in this struct, and the LASAT Hardware Configuration
46633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * field specification for a detailed description of the config
47633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * field.
48633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */
49633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#include <linux/types.h>
50633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
51633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_EEPROM_VERSION 7
52633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct lasat_eeprom_struct {
53633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  version;
54633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  cfg[3];
55633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char hwaddr[6];
56633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char print_partno[12];
57633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term0;
58633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char print_serial[14];
59633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term1;
60633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char prod_partno[12];
61633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term2;
62633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char prod_serial[14];
63633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term3;
64633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char passwd_hash[16];
65633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char pwdnull;
66633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char vendid;
67633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char ts_ref;
68633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char ts_signoff;
69633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char reserved[11];
70633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char debugaccess;
71633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned short prid;
72633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  serviceflag;
73633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  ipaddr;
74633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  netmask;
75633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  crc32;
76633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham};
77633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
78633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct lasat_eeprom_struct_pre7 {
79633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  version;
80633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  flags[3];
81633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char hwaddr0[6];
82633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char hwaddr1[6];
83633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char print_partno[9];
84633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term0;
85633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char print_serial[14];
86633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term1;
87633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char prod_partno[9];
88633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term2;
89633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char prod_serial[14];
90633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char term3;
91633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char passwd_hash[24];
92633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char pwdnull;
93633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char vendor;
94633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char ts_ref;
95633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char ts_signoff;
96633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char reserved[6];
97633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  writecount;
98633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  ipaddr;
99633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  netmask;
100633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  crc32;
101633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham};
102633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
103633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Configuration descriptor encoding - see the doc for details */
104633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
105633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_DSCTYPE(v)		(((v))         & 0xf)
106633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_BMID(v)		(((v) >> 0x04) & 0xf)
107633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_CPUTYPE(v)		(((v) >> 0x08) & 0xf)
108633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_BUSSPEED(v)		(((v) >> 0x0c) & 0xf)
109633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_CPUCLK(v)		(((v) >> 0x10) & 0xf)
110633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_SDRAMBANKSZ(v)		(((v) >> 0x14) & 0xf)
111633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_SDRAMBANKS(v)		(((v) >> 0x18) & 0xf)
112633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W0_L2CACHE(v)		(((v) >> 0x1c) & 0xf)
113633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
114633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_EDHAC(v)		(((v))         & 0xf)
115633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_HIFN(v)		(((v) >> 0x04) & 0x1)
116633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_ISDN(v)		(((v) >> 0x05) & 0x1)
117633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_IDE(v)			(((v) >> 0x06) & 0x1)
118633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_HDLC(v)		(((v) >> 0x07) & 0x1)
119633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_USVERSION(v)		(((v) >> 0x08) & 0x1)
120633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_4MACS(v)		(((v) >> 0x09) & 0x1)
121633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_EXTSERIAL(v)		(((v) >> 0x0a) & 0x1)
122633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_FLASHSIZE(v)		(((v) >> 0x0c) & 0xf)
123633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_PCISLOTS(v)		(((v) >> 0x10) & 0xf)
124633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_PCI1OPT(v)		(((v) >> 0x14) & 0xf)
125633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_PCI2OPT(v)		(((v) >> 0x18) & 0xf)
126633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_W1_PCI3OPT(v)		(((v) >> 0x1c) & 0xf)
127633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
128633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Routines specific to LASAT boards */
129633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
130633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_MASQUERADE2		0
131633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_MASQUERADEPRO	1
132633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE25		2
133633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE50		3
134633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE100		4
135633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE5000		5
136633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE7000		6
137633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE1000		7
138633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#if 0
139633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE30		7
140633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE5100		8
141633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_SAFEPIPE7100		9
142633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif
143633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_BMID_UNKNOWN		0xf
144633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_MAX_BMID_NAMES		9   /* no larger than 15! */
145633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
146633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_EDHAC			(1 << 0)
147633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_EDHAC_FAST		(1 << 1)
148633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_EADI			(1 << 2)
149633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_HIFN			(1 << 3)
150633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_ISDN			(1 << 4)
151633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_LEASEDLINE_IF		(1 << 5)
152633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_HAS_HDC			(1 << 6)
153633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
154633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_MASQUERADE2		0
155633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_MASQUERADEPRO	1
156633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE25		2
157633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE50		3
158633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE100		4
159633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE5000		5
160633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE7000		6
161633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE30		7
162633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE5100		8
163633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE7100		9
164633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
165633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1110		10
166633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE3020		11
167633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE3030		12
168633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE5020		13
169633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE5030		14
170633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1120		15
171633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1130		16
172633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE6010		17
173633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE6110		18
174633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE6210		19
175633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1020		20
176633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1040		21
177633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_PRID_SAFEPIPE1060		22
178633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
179633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct lasat_info {
180633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_cpu_hz;
181633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_bus_hz;
182633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_bmid;
183633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_memsize;
184633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_flash_size;
185633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_prid;
186633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char li_bmstr[16];
187633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char li_namestr[32];
188633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned char li_typestr[16];
189633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	/* Info on the Flash layout */
190633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_flash_base;
191633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned long li_flashpart_base[LASAT_MTD_LAST];
192633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned long li_flashpart_size[LASAT_MTD_LAST];
193633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	struct lasat_eeprom_struct li_eeprom_info;
194633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_eeprom_upgrade_version;
195633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned int  li_debugaccess;
196633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham};
197633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
198633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern struct lasat_info lasat_board_info;
199633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
200633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstatic inline unsigned long lasat_flash_partition_start(int partno)
201633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham{
202633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	if (partno < 0 || partno >= LASAT_MTD_LAST)
203633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham		return 0;
204633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
205633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	return lasat_board_info.li_flashpart_base[partno];
206633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}
207633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
208633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstatic inline unsigned long lasat_flash_partition_size(int partno)
209633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham{
210633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	if (partno < 0 || partno >= LASAT_MTD_LAST)
211633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham		return 0;
212633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
213633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	return lasat_board_info.li_flashpart_size[partno];
214633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}
215633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
216633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Called from setup() to initialize the global board_info struct */
217633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern int lasat_init_board_info(void);
218633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
219633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Write the modified EEPROM info struct */
220633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern void lasat_write_eeprom_info(void);
221633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
222633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define N_MACHTYPES		2
223633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* for calibration of delays */
224633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
225633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* the lasat_ndelay function is necessary because it is used at an
226633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * early stage of the boot process where ndelay is not calibrated.
227633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * It is used for the bit-banging rtc and eeprom drivers */
228633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
229633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#include <linux/delay.h>
230633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
231633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* calculating with the slowest board with 100 MHz clock */
232633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_100_DIVIDER 20
233633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* All 200's run at 250 MHz clock */
234633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_200_DIVIDER 8
235633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
236633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern unsigned int lasat_ndelay_divider;
237633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
238633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstatic inline void lasat_ndelay(unsigned int ns)
239633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham{
240633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	__delay(ns / lasat_ndelay_divider);
241633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham}
242633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
243633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define IS_LASAT_200()     (current_cpu_data.cputype == CPU_R5000)
244633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
245633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* !defined (_LANGUAGE_ASSEMBLY) */
246633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
247633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_SERVICEMODE_MAGIC_1     0xdeadbeef
248633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_SERVICEMODE_MAGIC_2     0xfedeabba
249633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
250633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Lasat 100 boards */
251633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define LASAT_GT_BASE           (KSEG1ADDR(0x14000000))
252633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
253633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Lasat 200 boards */
254633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define Vrc5074_PHYS_BASE       0x1fa00000
255633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define Vrc5074_BASE            (KSEG1ADDR(Vrc5074_PHYS_BASE))
256633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define PCI_WINDOW1             0x1a000000
257633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
258633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* _LASAT_H */
259