11f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/*
21f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * lasat.h
31f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *
41f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * Thomas Horsten <thh@lasat.com>
51f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * Copyright (C) 2000 LASAT Networks A/S.
61f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *
71f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  This program is free software; you can distribute it and/or modify it
81f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  under the terms of the GNU General Public License (Version 2) as
91f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  published by the Free Software Foundation.
101f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *
111f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  This program is distributed in the hope it will be useful, but WITHOUT
121f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
131f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
141f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  for more details.
151f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *
161f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  You should have received a copy of the GNU General Public License along
171f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  with this program; if not, write to the Free Software Foundation, Inc.,
181f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
191f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy *
201f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * Configuration for LASAT boards, loads the appropriate include files.
211f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy */
221f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#ifndef _LASAT_H
231f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define _LASAT_H
241f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
251f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#ifndef _LANGUAGE_ASSEMBLY
261f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
271f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyextern struct lasat_misc {
281f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	volatile u32 *reset_reg;
291f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	volatile u32 *flash_wp_reg;
301f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	u32 flash_wp_bit;
311f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy} *lasat_misc;
321f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
331f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyenum lasat_mtdparts {
341f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_BOOTLOADER,
351f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_SERVICE,
361f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_NORMAL,
371f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_CONFIG,
381f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_FS,
391f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	LASAT_MTD_LAST
401f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy};
411f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
421f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/*
431f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * The format of the data record in the EEPROM.
44395cf9691d72173d8cdaa613c5f0255f993af94bPaul Bolle * See the LASAT Hardware Configuration field specification for a detailed
45395cf9691d72173d8cdaa613c5f0255f993af94bPaul Bolle * description of the config field.
461f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy */
471f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#include <linux/types.h>
481f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
491f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_EEPROM_VERSION 7
501f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystruct lasat_eeprom_struct {
511f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  version;
521f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  cfg[3];
531f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char hwaddr[6];
541f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char print_partno[12];
551f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term0;
561f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char print_serial[14];
571f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term1;
581f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char prod_partno[12];
591f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term2;
601f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char prod_serial[14];
611f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term3;
621f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char passwd_hash[16];
631f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char pwdnull;
641f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char vendid;
651f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char ts_ref;
661f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char ts_signoff;
671f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char reserved[11];
681f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char debugaccess;
691f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned short prid;
701f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  serviceflag;
711f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  ipaddr;
721f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  netmask;
731f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  crc32;
741f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy};
751f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
761f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystruct lasat_eeprom_struct_pre7 {
771f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  version;
781f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  flags[3];
791f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char hwaddr0[6];
801f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char hwaddr1[6];
811f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char print_partno[9];
821f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term0;
831f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char print_serial[14];
841f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term1;
851f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char prod_partno[9];
861f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term2;
871f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char prod_serial[14];
881f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char term3;
891f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char passwd_hash[24];
901f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char pwdnull;
911f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char vendor;
921f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char ts_ref;
931f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char ts_signoff;
941f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char reserved[6];
951f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  writecount;
961f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  ipaddr;
971f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  netmask;
981f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  crc32;
991f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy};
1001f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1011f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Configuration descriptor encoding - see the doc for details */
1021f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1037034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define LASAT_W0_DSCTYPE(v)		(((v))	       & 0xf)
1041f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_BMID(v)		(((v) >> 0x04) & 0xf)
1051f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_CPUTYPE(v)		(((v) >> 0x08) & 0xf)
1061f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_BUSSPEED(v)		(((v) >> 0x0c) & 0xf)
1071f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_CPUCLK(v)		(((v) >> 0x10) & 0xf)
1081f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_SDRAMBANKSZ(v)		(((v) >> 0x14) & 0xf)
1091f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_SDRAMBANKS(v)		(((v) >> 0x18) & 0xf)
1101f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W0_L2CACHE(v)		(((v) >> 0x1c) & 0xf)
1111f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1127034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define LASAT_W1_EDHAC(v)		(((v))	       & 0xf)
1131f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_HIFN(v)		(((v) >> 0x04) & 0x1)
1141f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_ISDN(v)		(((v) >> 0x05) & 0x1)
1151f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_IDE(v)			(((v) >> 0x06) & 0x1)
1161f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_HDLC(v)		(((v) >> 0x07) & 0x1)
1171f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_USVERSION(v)		(((v) >> 0x08) & 0x1)
1181f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_4MACS(v)		(((v) >> 0x09) & 0x1)
1191f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_EXTSERIAL(v)		(((v) >> 0x0a) & 0x1)
1201f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_FLASHSIZE(v)		(((v) >> 0x0c) & 0xf)
1211f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_PCISLOTS(v)		(((v) >> 0x10) & 0xf)
1221f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_PCI1OPT(v)		(((v) >> 0x14) & 0xf)
1231f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_PCI2OPT(v)		(((v) >> 0x18) & 0xf)
1241f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_W1_PCI3OPT(v)		(((v) >> 0x1c) & 0xf)
1251f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1261f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Routines specific to LASAT boards */
1271f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1281f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_MASQUERADE2		0
1291f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_MASQUERADEPRO	1
1301f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE25		2
1311f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE50		3
1321f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE100		4
1331f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE5000		5
1341f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE7000		6
1351f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE1000		7
1361f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#if 0
1371f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE30		7
1381f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE5100		8
1391f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_SAFEPIPE7100		9
1401f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#endif
1411f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_BMID_UNKNOWN		0xf
1421f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_MAX_BMID_NAMES		9   /* no larger than 15! */
1431f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1441f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_EDHAC			(1 << 0)
1451f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_EDHAC_FAST		(1 << 1)
1461f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_EADI			(1 << 2)
1471f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_HIFN			(1 << 3)
1481f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_ISDN			(1 << 4)
1491f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_LEASEDLINE_IF		(1 << 5)
1501f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_HAS_HDC			(1 << 6)
1511f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1521f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_MASQUERADE2		0
1531f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_MASQUERADEPRO	1
1541f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE25		2
1551f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE50		3
1561f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE100		4
1571f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE5000		5
1581f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE7000		6
1591f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE30		7
1601f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE5100		8
1611f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE7100		9
1621f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1631f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1110		10
1641f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE3020		11
1651f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE3030		12
1661f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE5020		13
1671f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE5030		14
1681f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1120		15
1691f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1130		16
1701f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE6010		17
1711f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE6110		18
1721f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE6210		19
1731f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1020		20
1741f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1040		21
1751f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_PRID_SAFEPIPE1060		22
1761f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1771f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystruct lasat_info {
1781f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_cpu_hz;
1791f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_bus_hz;
1801f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_bmid;
1811f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_memsize;
1821f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_flash_size;
1831f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_prid;
1841f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char li_bmstr[16];
1851f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char li_namestr[32];
1861f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned char li_typestr[16];
1871f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	/* Info on the Flash layout */
1881f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_flash_base;
1891f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned long li_flashpart_base[LASAT_MTD_LAST];
1901f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned long li_flashpart_size[LASAT_MTD_LAST];
1911f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	struct lasat_eeprom_struct li_eeprom_info;
1921f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_eeprom_upgrade_version;
1931f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	unsigned int  li_debugaccess;
1941f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy};
1951f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1961f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyextern struct lasat_info lasat_board_info;
1971f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
1981f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystatic inline unsigned long lasat_flash_partition_start(int partno)
1991f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy{
2001f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	if (partno < 0 || partno >= LASAT_MTD_LAST)
2011f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy		return 0;
2021f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2031f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	return lasat_board_info.li_flashpart_base[partno];
2041f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy}
2051f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2061f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystatic inline unsigned long lasat_flash_partition_size(int partno)
2071f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy{
2081f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	if (partno < 0 || partno >= LASAT_MTD_LAST)
2091f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy		return 0;
2101f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2111f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	return lasat_board_info.li_flashpart_size[partno];
2121f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy}
2131f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2141f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Called from setup() to initialize the global board_info struct */
2151f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyextern int lasat_init_board_info(void);
2161f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2171f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Write the modified EEPROM info struct */
2181f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyextern void lasat_write_eeprom_info(void);
2191f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2201f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define N_MACHTYPES		2
2211f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* for calibration of delays */
2221f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2231f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* the lasat_ndelay function is necessary because it is used at an
2241f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * early stage of the boot process where ndelay is not calibrated.
2251f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy * It is used for the bit-banging rtc and eeprom drivers */
2261f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2271f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#include <linux/delay.h>
2286de4c6f9c8ead69d2f423ea80a384ef98bb4b3f8Alexey Dobriyan#include <linux/smp.h>
2291f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2301f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* calculating with the slowest board with 100 MHz clock */
2311f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_100_DIVIDER 20
2321f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* All 200's run at 250 MHz clock */
2331f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_200_DIVIDER 8
2341f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2351f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphyextern unsigned int lasat_ndelay_divider;
2361f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2371f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphystatic inline void lasat_ndelay(unsigned int ns)
2381f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy{
2391f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy	__delay(ns / lasat_ndelay_divider);
2401f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy}
2411f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2427034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define IS_LASAT_200()	   (current_cpu_data.cputype == CPU_R5000)
243b27418aa551a153e8bf1bd16cf93e5786f9590a9Thomas Bogendoerfer
2441f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#endif /* !defined (_LANGUAGE_ASSEMBLY) */
2451f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2461f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_SERVICEMODE_MAGIC_1     0xdeadbeef
2471f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#define LASAT_SERVICEMODE_MAGIC_2     0xfedeabba
2481f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2491f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Lasat 100 boards */
2507034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define LASAT_GT_BASE		(KSEG1ADDR(0x14000000))
2511f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2521f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy/* Lasat 200 boards */
2537034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define Vrc5074_PHYS_BASE	0x1fa00000
2547034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define Vrc5074_BASE		(KSEG1ADDR(Vrc5074_PHYS_BASE))
2557034228792cc561e79ff8600f02884bd4c80e287Ralf Baechle#define PCI_WINDOW1		0x1a000000
2561f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy
2571f21d2bde0046e959b53756f74d96dfd040a803bBrian Murphy#endif /* _LASAT_H */
258