|  | /* | 
|  | * MIPS boards bootprom interface for the Linux kernel. | 
|  | * | 
|  | * Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved. | 
|  | * Author: Carsten Langgaard, carstenl@mips.com | 
|  | * | 
|  | * ######################################################################## | 
|  | * | 
|  | *  This program is free software; you can distribute it and/or modify it | 
|  | *  under the terms of the GNU General Public License (Version 2) as | 
|  | *  published by the Free Software Foundation. | 
|  | * | 
|  | *  This program is distributed in the hope 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 _ASM_MSP_PROM_H | 
|  | #define _ASM_MSP_PROM_H | 
|  |  | 
|  | #include <linux/types.h> | 
|  |  | 
|  | #define DEVICEID			"deviceid" | 
|  | #define FEATURES			"features" | 
|  | #define PROM_ENV			"prom_env" | 
|  | #define PROM_ENV_FILE			"/proc/"PROM_ENV | 
|  | #define PROM_ENV_SIZE			256 | 
|  |  | 
|  | #define CPU_DEVID_FAMILY		0x0000ff00 | 
|  | #define CPU_DEVID_REVISION		0x000000ff | 
|  |  | 
|  | #define FPGA_IS_POLO(revision) \ | 
|  | (((revision >= 0xb0) && (revision < 0xd0))) | 
|  | #define FPGA_IS_5000(revision) \ | 
|  | ((revision >= 0x80) && (revision <= 0x90)) | 
|  | #define FPGA_IS_ZEUS(revision)		((revision < 0x7f)) | 
|  | #define FPGA_IS_DUET(revision) \ | 
|  | (((revision >= 0xa0) && (revision < 0xb0))) | 
|  | #define FPGA_IS_MSP4200(revision)	((revision >= 0xd0)) | 
|  | #define FPGA_IS_MSP7100(revision)	((revision >= 0xd0)) | 
|  |  | 
|  | #define MACHINE_TYPE_POLO		"POLO" | 
|  | #define MACHINE_TYPE_DUET		"DUET" | 
|  | #define MACHINE_TYPE_ZEUS		"ZEUS" | 
|  | #define MACHINE_TYPE_MSP2000REVB	"MSP2000REVB" | 
|  | #define MACHINE_TYPE_MSP5000		"MSP5000" | 
|  | #define MACHINE_TYPE_MSP4200		"MSP4200" | 
|  | #define MACHINE_TYPE_MSP7120		"MSP7120" | 
|  | #define MACHINE_TYPE_MSP7130		"MSP7130" | 
|  | #define MACHINE_TYPE_OTHER		"OTHER" | 
|  |  | 
|  | #define MACHINE_TYPE_POLO_FPGA		"POLO-FPGA" | 
|  | #define MACHINE_TYPE_DUET_FPGA		"DUET-FPGA" | 
|  | #define MACHINE_TYPE_ZEUS_FPGA		"ZEUS_FPGA" | 
|  | #define MACHINE_TYPE_MSP2000REVB_FPGA	"MSP2000REVB-FPGA" | 
|  | #define MACHINE_TYPE_MSP5000_FPGA	"MSP5000-FPGA" | 
|  | #define MACHINE_TYPE_MSP4200_FPGA	"MSP4200-FPGA" | 
|  | #define MACHINE_TYPE_MSP7100_FPGA	"MSP7100-FPGA" | 
|  | #define MACHINE_TYPE_OTHER_FPGA		"OTHER-FPGA" | 
|  |  | 
|  | /* Device Family definitions */ | 
|  | #define FAMILY_FPGA			0x0000 | 
|  | #define FAMILY_ZEUS			0x1000 | 
|  | #define FAMILY_POLO			0x2000 | 
|  | #define FAMILY_DUET			0x4000 | 
|  | #define FAMILY_TRIAD			0x5000 | 
|  | #define FAMILY_MSP4200			0x4200 | 
|  | #define FAMILY_MSP4200_FPGA		0x4f00 | 
|  | #define FAMILY_MSP7100			0x7100 | 
|  | #define FAMILY_MSP7100_FPGA		0x7f00 | 
|  |  | 
|  | /* Device Type definitions */ | 
|  | #define TYPE_MSP7120			0x7120 | 
|  | #define TYPE_MSP7130			0x7130 | 
|  |  | 
|  | #define ENET_KEY		'E' | 
|  | #define ENETTXD_KEY		'e' | 
|  | #define PCI_KEY			'P' | 
|  | #define PCIMUX_KEY		'p' | 
|  | #define SEC_KEY			'S' | 
|  | #define SPAD_KEY		'D' | 
|  | #define TDM_KEY			'T' | 
|  | #define ZSP_KEY			'Z' | 
|  |  | 
|  | #define FEATURE_NOEXIST		'-' | 
|  | #define FEATURE_EXIST		'+' | 
|  |  | 
|  | #define ENET_MII		'M' | 
|  | #define ENET_RMII		'R' | 
|  |  | 
|  | #define ENETTXD_FALLING		'F' | 
|  | #define ENETTXD_RISING		'R' | 
|  |  | 
|  | #define PCI_HOST		'H' | 
|  | #define PCI_PERIPHERAL		'P' | 
|  |  | 
|  | #define PCIMUX_FULL		'F' | 
|  | #define PCIMUX_SINGLE		'S' | 
|  |  | 
|  | #define SEC_DUET		'D' | 
|  | #define SEC_POLO		'P' | 
|  | #define SEC_SLOW		'S' | 
|  | #define SEC_TRIAD		'T' | 
|  |  | 
|  | #define SPAD_POLO		'P' | 
|  |  | 
|  | #define TDM_DUET		'D'	/* DUET TDMs might exist */ | 
|  | #define TDM_POLO		'P'	/* POLO TDMs might exist */ | 
|  | #define TDM_TRIAD		'T'	/* TRIAD TDMs might exist */ | 
|  |  | 
|  | #define ZSP_DUET		'D'	/* one DUET zsp engine */ | 
|  | #define ZSP_TRIAD		'T'	/* two TRIAD zsp engines */ | 
|  |  | 
|  | extern char *prom_getenv(char *name); | 
|  | extern void prom_init_cmdline(void); | 
|  | extern void prom_meminit(void); | 
|  | extern void prom_fixup_mem_map(unsigned long start_mem, | 
|  | unsigned long end_mem); | 
|  |  | 
|  | extern int get_ethernet_addr(char *ethaddr_name, char *ethernet_addr); | 
|  | extern unsigned long get_deviceid(void); | 
|  | extern char identify_enet(unsigned long interface_num); | 
|  | extern char identify_enetTxD(unsigned long interface_num); | 
|  | extern char identify_pci(void); | 
|  | extern char identify_sec(void); | 
|  | extern char identify_spad(void); | 
|  | extern char identify_sec(void); | 
|  | extern char identify_tdm(void); | 
|  | extern char identify_zsp(void); | 
|  | extern unsigned long identify_family(void); | 
|  | extern unsigned long identify_revision(void); | 
|  |  | 
|  | /* | 
|  | * The following macro calls prom_printf and puts the format string | 
|  | * into an init section so it can be reclaimed. | 
|  | */ | 
|  | #define ppfinit(f, x...) \ | 
|  | do { \ | 
|  | static char _f[] __initdata = KERN_INFO f; \ | 
|  | printk(_f, ## x); \ | 
|  | } while (0) | 
|  |  | 
|  | /* Memory descriptor management. */ | 
|  | #define PROM_MAX_PMEMBLOCKS    7	/* 6 used */ | 
|  |  | 
|  | enum yamon_memtypes { | 
|  | yamon_dontuse, | 
|  | yamon_prom, | 
|  | yamon_free, | 
|  | }; | 
|  |  | 
|  | struct prom_pmemblock { | 
|  | unsigned long base; /* Within KSEG0. */ | 
|  | unsigned int size;  /* In bytes. */ | 
|  | unsigned int type;  /* free or prom memory */ | 
|  | }; | 
|  |  | 
|  | extern int prom_argc; | 
|  | extern char **prom_argv; | 
|  | extern char **prom_envp; | 
|  | extern int *prom_vec; | 
|  | extern struct prom_pmemblock *prom_getmdesc(void); | 
|  |  | 
|  | #endif /* !_ASM_MSP_PROM_H */ |