2007-06-15 01:54:47 +04:00
/*
* 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 ) )
2013-01-22 15:59:30 +04:00
# define FPGA_IS_ZEUS(revision) ((revision < 0x7f))
2007-06-15 01:54:47 +04:00
# 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"
2013-01-22 15:59:30 +04:00
# define MACHINE_TYPE_ZEUS "ZEUS"
2007-06-15 01:54:47 +04:00
# 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"
2013-01-22 15:59:30 +04:00
# define MACHINE_TYPE_ZEUS_FPGA "ZEUS_FPGA"
2007-06-15 01:54:47 +04:00
# 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'
2013-01-22 15:59:30 +04:00
# define ENETTXD_FALLING 'F'
2007-06-15 01:54:47 +04:00
# 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 */