 0f3a05cb43
			
		
	
	
	0f3a05cb43
	
	
	
		
			
			Now that Yosemite's gone we can move the MSP71xx code one level up. Shane McDonald <mcdonald.shane@gmail.com>'s https://patchwork.linux-mips.org/patch/4736/ has been folded into this patch. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
		
			
				
	
	
		
			171 lines
		
	
	
	
		
			5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
	
		
			5 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * 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 */
 |