⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hymod.h

📁 AT91RM9200的完整启动代码:包括loader, boot及U-boot三部分均已编译通过!欢迎下载使用!
💻 H
字号:
#ifndef _ASM_HYMOD_H_#define _ASM_HYMOD_H_#include <linux/config.h>#ifdef CONFIG_8260#include <asm/iopin_8260.h>#endif/* * hymod configuration data - passed by boot code via the board information * structure (only U-Boot has support for this at the moment) * * there are three types of data passed up from the boot monitor. the first * (type hymod_eeprom_t) is the eeprom data that was read off both the main * (or mother) board and the mezzanine board (if any). this data defines how * many Xilinx fpgas are on each board, and their types (among other things). * the second type of data (type xlx_mmap_t, one per Xilinx fpga) defines where * in the physical address space the various Xilinx fpga access regions have * been mapped by the boot rom. the third type of data (type xlx_iopins_t, * one per Xilinx fpga) defines which io port pins are connected to the various * signals required to program a Xilinx fpga. * * A ram/flash "bank" refers to memory controlled by the same chip select. * * the eeprom contents are defined as in technical note #2 - basically, * a header, zero or more records in no particular order, and a 32 bit crc * a record is 1 or more type bytes, a length byte and "length" bytes. */#define HYMOD_EEPROM_ID		0xAA	/* eeprom id byte */#define HYMOD_EEPROM_VER	1	/* eeprom contents version */#define HYMOD_EEPROM_SIZE	256	/* number of bytes in the eeprom *//* eeprom header */typedef    struct {	unsigned char id;		/* eeprom id byte */	unsigned char ver;		/* eeprom contents version number */	unsigned long len;		/* total # of bytes btw hdr and crc */    }hymod_eehdr_t;/* maximum number of bytes available for eeprom data records */#define HYMOD_EEPROM_MAXLEN	(HYMOD_EEPROM_SIZE \					- sizeof (hymod_eehdr_t) \					- sizeof (unsigned long))/* eeprom data record */typedef    union {	struct {	    unsigned char topbit:1;	    unsigned char type:7;	    unsigned char len;	    unsigned char data[1];	/* variable length */	} small;	struct {	    unsigned short topbit:1;	    unsigned short nxtbit:1;	    unsigned short type:14;	    unsigned short len;	    unsigned char data[1];	/* variable length */	} medium;	struct {	    unsigned long topbit:1;	    unsigned long nxtbit:1;	    unsigned long type:30;	    unsigned long len;	    unsigned char data[1];	/* variable length */	} large;    }hymod_eerec_t;#define HYMOD_EEOFF_MAIN	0x00	/* i2c addr offset for main eeprom */#define HYMOD_EEOFF_MEZZ	0x04	/* i2c addr offset for mezz eepomr *//* eeprom record types */#define HYMOD_EEREC_SERNO	1	/* serial number */#define HYMOD_EEREC_DATE	2	/* date */#define HYMOD_EEREC_BATCH	3	/* batch id */#define HYMOD_EEREC_TYPE	4	/* board type */#define HYMOD_EEREC_REV		5	/* revision number */#define HYMOD_EEREC_SDRAM	6	/* sdram sizes */#define HYMOD_EEREC_FLASH	7	/* flash sizes */#define HYMOD_EEREC_ZBT		8	/* zbt ram sizes */#define HYMOD_EEREC_XLXTYP	9	/* Xilinx fpga types */#define HYMOD_EEREC_XLXSPD	10	/* Xilinx fpga speeds */#define HYMOD_EEREC_XLXTMP	11	/* Xilinx fpga temperatures */#define HYMOD_EEREC_XLXGRD	12	/* Xilinx fpga grades */#define HYMOD_EEREC_CPUTYP	13	/* Motorola CPU type */#define HYMOD_EEREC_CPUSPD	14	/* CPU speed */#define HYMOD_EEREC_BUSSPD	15	/* bus speed */#define HYMOD_EEREC_CPMSPD	16	/* CPM speed */#define HYMOD_EEREC_HSTYPE	17	/* high-speed serial chip type */#define HYMOD_EEREC_HSCHIN	18	/* high-speed serial input channels */#define HYMOD_EEREC_HSCHOUT	19	/* high-speed serial output channels *//* some dimensions */#define HYMOD_MAX_BATCH		32	/* max no. of bytes in batch id */#define HYMOD_MAX_SDRAM		4	/* max sdram "banks" on any board */#define HYMOD_MAX_FLASH		4	/* max flash "banks" on any board */#define HYMOD_MAX_ZBT		16	/* max ZBT rams on any board */#define HYMOD_MAX_XLX		4	/* max Xilinx fpgas on any board */#define HYMOD_MAX_BYTES		16	/* enough to store any bytes array *//* board types */#define HYMOD_BDTYPE_NONE	0	/* information not present */#define HYMOD_BDTYPE_IO		1	/* I/O main board */#define HYMOD_BDTYPE_CLP	2	/* CLP main board */#define HYMOD_BDTYPE_DSP	3	/* DSP main board */#define HYMOD_BDTYPE_INPUT	4	/* video input mezzanine board */#define HYMOD_BDTYPE_ALTINPUT	5	/* video input mezzanine board */#define HYMOD_BDTYPE_DISPLAY	6	/* video display mezzanine board */#define HYMOD_BDTYPE_MAX	7	/* first invalid value *//* Xilinx fpga types */#define HYMOD_XTYP_NONE		0	/* information not present */#define HYMOD_XTYP_XCV300E	1	/* Xilinx Virtex 300 */#define HYMOD_XTYP_XCV400E	2	/* Xilinx Virtex 400 */#define HYMOD_XTYP_XCV600E	3	/* Xilinx Virtex 600 */#define HYMOD_XTYP_MAX		4	/* first invalid value *//* Xilinx fpga speeds */#define HYMOD_XSPD_NONE		0	/* information not present */#define HYMOD_XSPD_SIX		1#define HYMOD_XSPD_SEVEN	2#define HYMOD_XSPD_EIGHT	3#define HYMOD_XSPD_MAX		4	/* first invalid value *//* Xilinx fpga temperatures */#define HYMOD_XTMP_NONE		0	/* information not present */#define HYMOD_XTMP_COM		1#define HYMOD_XTMP_IND		2#define HYMOD_XTMP_MAX		3	/* first invalid value *//* Xilinx fpga grades */#define HYMOD_XTMP_NONE		0	/* information not present */#define HYMOD_XTMP_NORMAL	1#define HYMOD_XTMP_ENGSAMP	2#define HYMOD_XTMP_MAX		3	/* first invalid value *//* CPU types */#define HYMOD_CPUTYPE_NONE	0	/* information not present */#define HYMOD_CPUTYPE_MPC8260	1	/* Motorola MPC8260 embedded powerpc */#define HYMOD_CPUTYPE_MAX	2	/* first invalid value *//* CPU/BUS/CPM clock speeds */#define HYMOD_CLKSPD_NONE	0	/* information not present */#define HYMOD_CLKSPD_33MHZ	1#define HYMOD_CLKSPD_66MHZ	2#define HYMOD_CLKSPD_100MHZ	3#define HYMOD_CLKSPD_133MHZ	4#define HYMOD_CLKSPD_166MHZ	5#define HYMOD_CLKSPD_200MHZ	6#define HYMOD_CLKSPD_MAX	7	/* first invalid value *//* high speed serial chip types */#define HYMOD_HSSTYPE_NONE	0	/* information not present */#define HYMOD_HSSTYPE_AMCC52064	1#define HYMOD_HSSTYPE_MAX	2	/* first invalid value *//* a date (yyyy-mm-dd) */typedef    struct {	unsigned short year;	unsigned char month;	unsigned char day;    }hymod_date_t;/* describes a Xilinx fpga */typedef    struct {	unsigned char type;		/* chip type */	unsigned char speed;		/* chip speed rating */	unsigned char temp;		/* chip temperature rating */	unsigned char grade;		/* chip grade */    }hymod_xlx_t;/* describes a Motorola embedded processor */typedef    struct {	unsigned char type;		/* CPU type */	unsigned char cpuspd;		/* speed of the PowerPC core */	unsigned char busspd;		/* speed of the system and 60x bus */	unsigned char cpmspd;		/* speed of the CPM co-processor */    }hymod_mpc_t;/* info about high-speed (1Gbit) serial interface */typedef    struct {	unsigned char type;		/* high-speed serial chip type */	unsigned char nchin;		/* number of input channels mounted */	unsigned char nchout;		/* number of output channels mounted */    }hymod_hss_t;/* * this defines the contents of the serial eeprom that exists on every * hymod board, including mezzanine boards (the serial eeprom will be * faked for early development boards that don't have one) */typedef    struct {	unsigned char ver;		/* eeprom contents version */	unsigned char bdtype;		/* board type */	unsigned char bdrev;		/* board revision */	unsigned char batchlen;		/* length of batch string below */	unsigned long serno;		/* serial number */	hymod_date_t date;		/* manufacture date */	unsigned char batch[32];	/* manufacturer specific batch id */	unsigned char nsdram;		/* # of ram "banks" */	unsigned char nflash;		/* # of flash "banks" */	unsigned char nzbt;		/* # of ZBT rams */	unsigned char nxlx;		/* # of Xilinx fpgas */	unsigned char sdramsz[HYMOD_MAX_SDRAM];	/* log2 of sdram size */	unsigned char flashsz[HYMOD_MAX_FLASH];	/* log2 of flash size */	unsigned char zbtsz[HYMOD_MAX_ZBT];	/* log2 of ZBT ram size */	hymod_xlx_t xlx[HYMOD_MAX_XLX];	/* Xilinx fpga info */	hymod_mpc_t mpc;		/* Motorola MPC CPU info */	hymod_hss_t hss;		/* high-speed serial info */    }hymod_eeprom_t;/* * this defines a region in the processor's physical address space */typedef    struct {	unsigned long exists:1;		/* 1 if the region exists, 0 if not */	unsigned long size:31;		/* size in bytes */	unsigned long base;		/* base address */    }xlx_prgn_t;/* * this defines where the various Xilinx fpga access regions are mapped * into the physical address space of the processor */typedef    struct {	xlx_prgn_t prog;		/* program access region */	xlx_prgn_t reg;			/* register access region */	xlx_prgn_t port;		/* port access region */    }xlx_mmap_t;/* * this defines which 8260 i/o port pins are connected to the various * signals required for programming a Xilinx fpga */typedef    struct {	iopin_t prog_pin;		/* assert for >= 300ns to program */	iopin_t init_pin;		/* goes high when fpga is cleared */	iopin_t done_pin;		/* goes high when program is done */	iopin_t enable_pin;		/* some fpgas need enabling */    }xlx_iopins_t;/* all info about one hymod board */typedef    struct {	unsigned char eeprom_valid:1;	hymod_eeprom_t eeprom;	xlx_mmap_t mmap[HYMOD_MAX_XLX];	xlx_iopins_t iopins[HYMOD_MAX_XLX];    }hymod_board_t;/* * this defines the configuration information of a hymod board-set * (main board + possible mezzanine board). In future, there may be * more than one mezzanine board (stackable?) - if so, add a "mezz2" * field, and so on... or make mezz an array? */typedef    struct {	hymod_board_t main;		/* main board info */	hymod_board_t mezz;		/* mezzanine board info */	unsigned long crc;		/* ensures kernel and boot prom agree */    }hymod_conf_t;#endif /* _ASM_HYMOD_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -