linux/arch/mips/include/asm/pmc-sierra/msp71xx/msp_prom.h
<<
>>
Prefs
   1/*
   2 * MIPS boards bootprom interface for the Linux kernel.
   3 *
   4 * Copyright (C) 2000 MIPS Technologies, Inc.  All rights reserved.
   5 * Author: Carsten Langgaard, carstenl@mips.com
   6 *
   7 * ########################################################################
   8 *
   9 *  This program is free software; you can distribute it and/or modify it
  10 *  under the terms of the GNU General Public License (Version 2) as
  11 *  published by the Free Software Foundation.
  12 *
  13 *  This program is distributed in the hope it will be useful, but WITHOUT
  14 *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  15 *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  16 *  for more details.
  17 *
  18 *  You should have received a copy of the GNU General Public License along
  19 *  with this program; if not, write to the Free Software Foundation, Inc.,
  20 *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
  21 *
  22 * ########################################################################
  23 */
  24
  25#ifndef _ASM_MSP_PROM_H
  26#define _ASM_MSP_PROM_H
  27
  28#include <linux/types.h>
  29
  30#define DEVICEID                        "deviceid"
  31#define FEATURES                        "features"
  32#define PROM_ENV                        "prom_env"
  33#define PROM_ENV_FILE                   "/proc/"PROM_ENV
  34#define PROM_ENV_SIZE                   256
  35
  36#define CPU_DEVID_FAMILY                0x0000ff00
  37#define CPU_DEVID_REVISION              0x000000ff
  38
  39#define FPGA_IS_POLO(revision) \
  40                (((revision >= 0xb0) && (revision < 0xd0)))
  41#define FPGA_IS_5000(revision) \
  42                ((revision >= 0x80) && (revision <= 0x90))
  43#define FPGA_IS_ZEUS(revision)          ((revision < 0x7f))
  44#define FPGA_IS_DUET(revision) \
  45                (((revision >= 0xa0) && (revision < 0xb0)))
  46#define FPGA_IS_MSP4200(revision)       ((revision >= 0xd0))
  47#define FPGA_IS_MSP7100(revision)       ((revision >= 0xd0))
  48
  49#define MACHINE_TYPE_POLO               "POLO"
  50#define MACHINE_TYPE_DUET               "DUET"
  51#define MACHINE_TYPE_ZEUS               "ZEUS"
  52#define MACHINE_TYPE_MSP2000REVB        "MSP2000REVB"
  53#define MACHINE_TYPE_MSP5000            "MSP5000"
  54#define MACHINE_TYPE_MSP4200            "MSP4200"
  55#define MACHINE_TYPE_MSP7120            "MSP7120"
  56#define MACHINE_TYPE_MSP7130            "MSP7130"
  57#define MACHINE_TYPE_OTHER              "OTHER"
  58
  59#define MACHINE_TYPE_POLO_FPGA          "POLO-FPGA"
  60#define MACHINE_TYPE_DUET_FPGA          "DUET-FPGA"
  61#define MACHINE_TYPE_ZEUS_FPGA          "ZEUS_FPGA"
  62#define MACHINE_TYPE_MSP2000REVB_FPGA   "MSP2000REVB-FPGA"
  63#define MACHINE_TYPE_MSP5000_FPGA       "MSP5000-FPGA"
  64#define MACHINE_TYPE_MSP4200_FPGA       "MSP4200-FPGA"
  65#define MACHINE_TYPE_MSP7100_FPGA       "MSP7100-FPGA"
  66#define MACHINE_TYPE_OTHER_FPGA         "OTHER-FPGA"
  67
  68/* Device Family definitions */
  69#define FAMILY_FPGA                     0x0000
  70#define FAMILY_ZEUS                     0x1000
  71#define FAMILY_POLO                     0x2000
  72#define FAMILY_DUET                     0x4000
  73#define FAMILY_TRIAD                    0x5000
  74#define FAMILY_MSP4200                  0x4200
  75#define FAMILY_MSP4200_FPGA             0x4f00
  76#define FAMILY_MSP7100                  0x7100
  77#define FAMILY_MSP7100_FPGA             0x7f00
  78
  79/* Device Type definitions */
  80#define TYPE_MSP7120                    0x7120
  81#define TYPE_MSP7130                    0x7130
  82
  83#define ENET_KEY                'E'
  84#define ENETTXD_KEY             'e'
  85#define PCI_KEY                 'P'
  86#define PCIMUX_KEY              'p'
  87#define SEC_KEY                 'S'
  88#define SPAD_KEY                'D'
  89#define TDM_KEY                 'T'
  90#define ZSP_KEY                 'Z'
  91
  92#define FEATURE_NOEXIST         '-'
  93#define FEATURE_EXIST           '+'
  94
  95#define ENET_MII                'M'
  96#define ENET_RMII               'R'
  97
  98#define ENETTXD_FALLING         'F'
  99#define ENETTXD_RISING          'R'
 100
 101#define PCI_HOST                'H'
 102#define PCI_PERIPHERAL          'P'
 103
 104#define PCIMUX_FULL             'F'
 105#define PCIMUX_SINGLE           'S'
 106
 107#define SEC_DUET                'D'
 108#define SEC_POLO                'P'
 109#define SEC_SLOW                'S'
 110#define SEC_TRIAD               'T'
 111
 112#define SPAD_POLO               'P'
 113
 114#define TDM_DUET                'D'     /* DUET TDMs might exist */
 115#define TDM_POLO                'P'     /* POLO TDMs might exist */
 116#define TDM_TRIAD               'T'     /* TRIAD TDMs might exist */
 117
 118#define ZSP_DUET                'D'     /* one DUET zsp engine */
 119#define ZSP_TRIAD               'T'     /* two TRIAD zsp engines */
 120
 121extern char *prom_getenv(char *name);
 122extern void prom_init_cmdline(void);
 123extern void prom_meminit(void);
 124extern void prom_fixup_mem_map(unsigned long start_mem,
 125                               unsigned long end_mem);
 126
 127extern int get_ethernet_addr(char *ethaddr_name, char *ethernet_addr);
 128extern unsigned long get_deviceid(void);
 129extern char identify_enet(unsigned long interface_num);
 130extern char identify_enetTxD(unsigned long interface_num);
 131extern char identify_pci(void);
 132extern char identify_sec(void);
 133extern char identify_spad(void);
 134extern char identify_sec(void);
 135extern char identify_tdm(void);
 136extern char identify_zsp(void);
 137extern unsigned long identify_family(void);
 138extern unsigned long identify_revision(void);
 139
 140/*
 141 * The following macro calls prom_printf and puts the format string
 142 * into an init section so it can be reclaimed.
 143 */
 144#define ppfinit(f, x...) \
 145        do { \
 146                static char _f[] __initdata = KERN_INFO f; \
 147                printk(_f, ## x); \
 148        } while (0)
 149
 150/* Memory descriptor management. */
 151#define PROM_MAX_PMEMBLOCKS    7        /* 6 used */
 152
 153enum yamon_memtypes {
 154        yamon_dontuse,
 155        yamon_prom,
 156        yamon_free,
 157};
 158
 159struct prom_pmemblock {
 160        unsigned long base; /* Within KSEG0. */
 161        unsigned int size;  /* In bytes. */
 162        unsigned int type;  /* free or prom memory */
 163};
 164
 165extern int prom_argc;
 166extern char **prom_argv;
 167extern char **prom_envp;
 168extern int *prom_vec;
 169extern struct prom_pmemblock *prom_getmdesc(void);
 170
 171#endif /* !_ASM_MSP_PROM_H */
 172