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

📄 hal_iq80310.h

📁 移植到WLIT项目的redboot源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef CYGONCE_HAL_IQ80310_H#define CYGONCE_HAL_IQ80310_H/*=============================================================================////      hal_iq80310.h////      HAL Description of SA-110 and 21285 control registers//      and ARM memory control in general.////=============================================================================//####COPYRIGHTBEGIN####//                                                                          // -------------------------------------------                              // The contents of this file are subject to the Red Hat eCos Public License // Version 1.1 (the "License"); you may not use this file except in         // compliance with the License.  You may obtain a copy of the License at    // http://www.redhat.com/                                                   //                                                                          // Software distributed under the License is distributed on an "AS IS"      // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See the // License for the specific language governing rights and limitations under // the License.                                                             //                                                                          // The Original Code is eCos - Embedded Configurable Operating System,      // released September 30, 1998.                                             //                                                                          // The Initial Developer of the Original Code is Red Hat.                   // Portions created by Red Hat are                                          // Copyright (C) 1998, 1999, 2000, 2001 Red Hat, Inc.                             // All Rights Reserved.                                                     // -------------------------------------------                              //                                                                          //####COPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s):    msalter// Contributors: msalter// Date:         2000-10-10// Purpose:      Intel IQ80310 hardware description// Description:// Usage:        #include <cyg/hal/hal_iq80310.h>////####DESCRIPTIONEND####////===========================================================================*/// Addresses of the left and right 7-segment display#define DISPLAY_LEFT	0xFE840000#define DISPLAY_RIGHT	0xFE850000// 7-segment encodings for the hex display#define DISPLAY_0	0xc0#define DISPLAY_1	0xf9#define DISPLAY_2	0xa4#define DISPLAY_3	0xb0#define DISPLAY_4	0x99#define DISPLAY_5	0x92#define DISPLAY_6	0x82#define DISPLAY_7	0xF8#define	DISPLAY_8	0x80#define DISPLAY_9	0x90#define DISPLAY_A	0x88#define DISPLAY_B	0x83#define DISPLAY_C	0xa7#define DISPLAY_D	0xa1#define DISPLAY_E	0x86#define DISPLAY_F	0x8e/* Backplane Detect Register */#define BACKPLANE_DET_REG	((volatile unsigned char *)0xfe870000)#  define BP_HOST_BIT		0x1#define iq80310_is_host()	(*BACKPLANE_DET_REG & BP_HOST_BIT)// XINT3 mask register#define X3ISR_REG   ((volatile unsigned char *)0xfe820000)#define X3MASK_REG  ((volatile unsigned char *)0xfe860000)#  define XINT3_TIMER    0x01#  define XINT3_ETHERNET 0x02#  define XINT3_UART_1   0x04#  define XINT3_UART_2   0x08#  define XINT3_PCI_INTD 0x10/* PAL-based external timer definitions */#define TIMER_LA0_REG_ADDR	((volatile unsigned char *)0xfe880000)#define TIMER_LA1_REG_ADDR	((volatile unsigned char *)0xfe890000)#define TIMER_LA2_REG_ADDR	((volatile unsigned char *)0xfe8a0000)#define TIMER_LA3_REG_ADDR	((volatile unsigned char *)0xfe8b0000)#define TIMER_ENABLE_REG_ADDR	((volatile unsigned char *)0xfe8c0000)#define TIMER_COUNT_MASK		0x5f	/* 6 bits of timer data with the MSB in bit 6 not bit 5 */#define TIMER_CNT_ENAB			0x1#define TIMER_INT_ENAB			0x2#define EXT_TIMER_CLK_FREQ		33000000	/* external timer runs at 33 MHz */#define TICKS_10MSEC			100			/* 10msec = 100 ticks/sec */#define EXT_TIMER_10MSEC_COUNT	(EXT_TIMER_CLK_FREQ / TICKS_10MSEC)#define TICKS_5MSEC				200			/* 5msec = 200 ticks/sec */#define EXT_TIMER_5MSEC_COUNT	(EXT_TIMER_CLK_FREQ / TICKS_5MSEC)#define EXT_TIMER_CNT_ENAB()		(*TIMER_ENABLE_REG_ADDR |= TIMER_CNT_ENAB)#define EXT_TIMER_CNT_DISAB()		(*TIMER_ENABLE_REG_ADDR &= ~TIMER_CNT_ENAB)#define EXT_TIMER_INT_ENAB()		(*TIMER_ENABLE_REG_ADDR |= TIMER_INT_ENAB)#define EXT_TIMER_INT_DISAB()		(*TIMER_ENABLE_REG_ADDR &= ~TIMER_INT_ENAB)// Companion chip MCU registers#define    MMR_BASE         0x00001500#define    SDIR_OFF         0x00000000#define    SDCR_OFF         0x00000004#define    SDBR_OFF         0x00000008#define    SBR0_OFF         0x0000000C#define    SBR1_OFF         0x00000010#define    ECCR_OFF         0x00000034#define    FEBR1_OFF        0x00000050#define    FBSR1_OFF        0x00000058#define    FWSR0_OFF        0x0000005C#define    FWSR1_OFF        0x00000060#define    RFR_OFF          0x00000068// MCU Register Values#define    MRS_CAS_LAT_2    0x00000000#define    MRS_CAS_LAT_3    0x00000001#define    MRS_PRECHRG      0x00000002       #define    MRS_NO_OP        0x00000003#define    MRS_AUTO_RFRSH   0x00000004#define    MRS_NORM_OP      0x00000006#define    MRS_NOP_DELAY    0x00004000#define    SDCR_INIT_VAL    0x00000aa0  // was 0x14#define    SBR0_INIT_VAL    0x00000008  // 32 Meg Boundary (64 mbit device)#define    SBR1_INIT_VAL    0x00000008  // 32 Meg Boundary (64 mbit device)#define    ECCR_INIT_VAL    0x0000000C  // ECC enabled, correction on and no reporting#define    RFR_INIT_VAL     0x00000600  // Initial Refresh Rate#define    FBSR1_INIT_VAL   0x00000040  // 8MB Bank Size#define    FWSR0_INIT_VAL   0x00000001  // 1ws add-data (needed for PP state machine), 0ws recovery#define    FWSR1_INIT_VAL   0x00000000  // 0ws add-data, 0ws recovery/************************** * I2C Bus Interface Unit * **************************//* Processor I2C Device ID */#define I2C_DEVID	0x02  /* I2C slave address to which the unit responds when in slave-receive mode *//* Timeout limit for SDRAM EEPROM to respond */#define I2C_TIMOUT	0x1000000  /* bumped this way up...used to be 0x100000*/ /* Control Register */#define	ICR_ADDR	0x00001680  /* Address */#define	ICR_START	0x0001  /* 1:send a Start condition to the I2C when in master mode */#define	ICR_STOP	0x0002  /* 1:send a Stop condition after next data byte transferred on I2C bus in master mode */#define	ICR_ACK		0x0004  /* Ack/Nack control: 1:Nack, 0:Ack (negative or positive pulse) */#define	ICR_TRANSFER	0x0008  /* 1:send/receive byte, 0:cleared by I2C unit when done */#define	ICR_ABORT	0x0010  /* 1:I2C sends STOP w/out data permission, 0:ICR bit used only */#define	ICR_SCLENB	0x0020  /* I2C clock output: 1:Enabled, 0:Disabled. ICCR configured before ! */#define	ICR_ENB		0x0040  /* I2C unit: 1:Enabled, 0:Disabled */#define	ICR_GCALL	0x0080  /* General Call: 1:Disabled, 0:Enabled */#define	ICR_IEMPTY	0x0100  /* 1: IDBR Transmit Empty Interrupt Enable */#define	ICR_IFULL	0x0200  /* 1: IDBR Receive Full Interrupt Enable */#define	ICR_IERR	0x0400  /* 1: Bus Error Interrupt Enable */#define	ICR_ISTOP	0x0800  /* 1: Slave Stop Detected Interrupt Enable */#define	ICR_IARB	0x1000  /* 1: Arbitration Loss Detected Interrupt Enable */#define	ICR_ISADDR	0x2000  /* 1: Slave Address Detected Interrupt Enable */#define	ICR_RESET	0x4000  /* 1: I2C unit reset *//* Status Register */#define	ISR_ADDR	0x00001684  /* Address */#define	ISR_RWMODE	0x0001  /* 1: I2C in master receive = slave transmit mode */#define	ISR_ACK		0x0002  /* 1: I2C received/sent a Nack, 0: Ack */#define	ISR_BUSY	0x0004  /* 1: Processor's I2C unit busy */#define	ISR_BUSBUSY	0x0008  /* 1: I2C bus busy. Processor's I2C unit not involved */#define	ISR_STOP	0x0010  /* 1: Slave Stop detected (when in slave mode: receive or transmit) */#define	ISR_ARB		0x0020  /* 1: Arbitration Loss Detected */#define	ISR_EMPTY	0x0040  /* 1: Transfer finished on I2C bus. If enabled in ICR, interrupt signaled */#define	ISR_FULL	0x0080  /* 1: IDBR received new byte from I2C bus. If ICR, interrupt signaled */#define	ISR_GCALL	0x0100  /* 1: I2C unit received a General Call address */#define	ISR_SADDR	0x0200  /* 1: I2C unit detected a 7-bit address matching the general call or ISAR */#define	ISR_ERROR	0x0400  /* Bit set by unit when a Bus Error detected */#define	ISAR_ADDR	0x00001688  /* Address of the I2C Slave Address Register */#define	IDBR_ADDR	0x0000168C  /* Address of the I2C Data Buffer Register */#define	IDBR_MASK	0x000000ff#define	IDBR_MODE	0x01#define	ICCR_ADDR	0x00001690  /* Address of the I2C Clock Control Register */#define	IBMR_ADDR	0x00001694  /* Address of the I2C Bus Monitor Register *//* SDRAM configuration *//* SDRAM bank size values (SPD << 2) */#define		RAM_0MEG	#define		RAM_4MEG	4#define		RAM_8MEG	8#define		RAM_16MEG	16#define		RAM_32MEG	32#define		RAM_64MEG	64#define     	RAM_128MEG	128#define     	RAM_256MEG	256/* SBR register definitions (valid bits are [7:3])*/#define		SBR_32MEG	0x08#define		SBR_64MEG	0x10#define		SBR_128MEG	0x20#define		SBR_256MEG	0x40/* Drive Strengths - assume single DIMM configuration */#define    SDCR_1BANK_X16    	0x0aa0#define    SDCR_2BANK_X16	0x12c8#define    SDCR_1BANK_X8    	0x1520#define    SDCR_2BANK_X8	0x1548/* SDRAM PD bytes				*/#define		BANKCNT_BYTE	 0x06 /* Byte #5 of SPD: number of module banks */#define		SDRAM_WIDTH_BYTE 0x0e /* Byte #13 of SPD: DRAM width */#define		BANKSZ_BYTE	 0x20 /* Byte #31 of SPD: module bank density */#define		CHECKSUM_BYTE	 0x40 /* Byte #63 of SPD: checksum for bytes 0-62 */#define		CONFIG_BYTE	0x0C  /* Byte #11 of SPD: DIMM configuration type (Parity or not, EEC) */#define	SDRAM_DEVID	0xA2  /* SDRAM Device ID  */// Yavapai PCI and Peripheral Interrupt Unit/*** Yavapai Registers ***//* PCI-to-PCI Bridge Unit 0000 1000H through 0000 10FFH */#define VIDR_ADDR	0x00001000#define DIDR_ADDR	0x00001002#define PCR_ADDR	0x00001004#define PSR_ADDR	0x00001006#define RIDR_ADDR	0x00001008#define CCR_ADDR	0x00001009#define CLSR_ADDR	0x0000100C#define PLTR_ADDR	0x0000100D#define HTR_ADDR	0x0000100E/* Reserved 0x0000100F through  0x00001017 */#define PBNR_ADDR	0x00001018#define SBNR_ADDR	0x00001019#define SUBBNR_ADDR	0x0000101A#define SLTR_ADDR	0x0000101B#define IOBR_ADDR	0x0000101C#define IOLR_ADDR	0x0000101D#define SSR_ADDR	0x0000101E#define MBR_ADDR	0x00001020#define MLR_ADDR	0x00001022#define PMBR_ADDR	0x00001024#define PMLR_ADDR	0x00001026/* Reserved 0x00001028 through 0x00001033 */#define BSVIR_ADDR	0x00001034#define BSIR_ADDR	0x00001036/* Reserved 0x00001038 through 0x0000103D */#define BCR_ADDR	0x0000103E#define EBCR_ADDR	0x00001040#define	SISR_ADDR	0x00001042#define PBISR_ADDR	0x00001044#define SBISR_ADDR	0x00001048#define SACR_ADDR	0x0000104C#define PIRSR_ADDR	0x00001050#define SIOBR_ADDR	0x00001054#define SIOLR_ADDR	0x00001055#define SCCR_ADDR	0x00001056		/* EAS inconsistent */#define SMBR_ADDR	0x00001058#define SMLR_ADDR	0x0000105A#define SDER_ADDR	0x0000105C#define QCR_ADDR	0x0000105E#define CDTR_ADDR	0x00001060		/* EAS inconsistent *//* Reserved 0x00001064 through 0x000010FFH *//* Performance Monitoring Unit 0000 1100H through 0000 11FFH */#define GTMR_ADDR	0x00001100#define ESR_ADDR	0x00001104#define EMISR_ADDR	0x00001108/* Reserved 0x0000110C */			/* EAS inconsistent */#define GTSR_ADDR	0x00001110		/* EAS inconsistent */#define PECR1_ADDR	0x00001114		/* EAS inconsistent */#define PECR2_ADDR	0x00001118		/* EAS inconsistent */#define PECR3_ADDR	0x0000111C		/* EAS inconsistent */#define PECR4_ADDR	0x00001120		/* EAS inconsistent */#define PECR5_ADDR	0x00001124		/* EAS inconsistent */#define PECR6_ADDR	0x00001128		/* EAS inconsistent */#define PECR7_ADDR	0x0000112C		/* EAS inconsistent */#define PECR8_ADDR	0x00001130		/* EAS inconsistent */#define PECR9_ADDR	0x00001134		/* EAS inconsistent */#define PECR10_ADDR	0x00001138		/* EAS inconsistent */#define PECR11_ADDR	0x0000113C		/* EAS inconsistent */#define PECR12_ADDR	0x00001140		/* EAS inconsistent */#define PECR13_ADDR	0x00001144		/* EAS inconsistent */#define PECR14_ADDR	0x00001148		/* EAS inconsistent *//* Reserved 0x0000104C through 0x000011FFH */	/* EAS inconsistent *//* Address Translation Unit 0000 1200H through 0000 12FFH */#define ATUVID_ADDR		0x00001200

⌨️ 快捷键说明

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