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