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

📄 device.h

📁 source code of armboot for s3c4510
💻 H
📖 第 1 页 / 共 4 页
字号:
/*
 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
 * All rights reserved.
 *
 * This software is copyrighted by and is the sole property of
 * VIA Networking Technologies, Inc. This software may only be used
 * in accordance with the corresponding license agreement. Any unauthorized
 * use, duplication, transmission, distribution, or disclosure of this
 * software is expressly forbidden.
 *
 * This software is provided by VIA Networking Technologies, Inc. "as is"
 * and any express or implied warranties, including, but not limited to, the
 * implied warranties of merchantability and fitness for a particular purpose
 * are disclaimed. In no event shall VIA Networking Technologies, Inc.
 * be liable for any direct, indirect, incidental, special, exemplary, or
 * consequential damages.
 *
 *
 * File:    device.h
 *
 * Purpose:
 *
 * Author:  Tevin Chen
 *
 * Date:    Jan 08, 2002
 *
 */


#ifndef __DEVICE_H__
#define __DEVICE_H__




/*---------------------  Export Definitions  ------------------------*/

/*************************************************************************/
/* Format of the Program Status Register                                 */
/*************************************************************************/
/*                                                                       */
/* 31  30  29   28         7   6   5   4   3   2   1   0                 */
/*+---+---+---+---+--ss--+---+---+---+---+---+---+---+---+               */
/*| N | Z | C | V |      | I | F | T |     M4 ~ M0       |               */
/*+---+---+---+---+--ss--+---+---+---+---+---+---+---+---+               */
/*                                                                       */
/* Processor Mode and Mask                                               */
/*                                                                       */
/*************************************************************************/

#define I_Bit           0x80            //IRQ disable
#define F_Bit           0x40            //FIQ disable
#define T_Bit           0x20            //Thumb state, read only
#define IFRQ_DISABLE    0xC0            //Interrupt disable mask value
#define IFRQ_ENABLE     0x00            //Interrupt enable mask value
#define IFRQ_MASK       0xC0            //Interrupt lockout mask value

#ifndef UND_MODE
#define UND_MODE        0x1B            //(UND) Undefine Mode
#endif
#define ABT_MODE        0x17            //(ABT) Abort Mode
#define SVC_MODE        0x13            //(SVC) Supervisor Mode
#define IRQ_MODE        0x12            //(IRQ) Interrupt Mode
#define FIQ_MODE        0x11            //(FIQ) Fast Interrupt Mode
#define USR_MODE        0x10            //(USR) User Mode
#define SYS_MODE        0x1F            //(SYS) System Mode
#ifndef MODE_MASK
#define MODE_MASK       0x1F            //Processor Mode Mask
#endif


//--------------------------------------
// Memory area layout definition
//--------------------------------------
#define ASIC_DRAM_BASE_ADDR         0x00000000
#define ASIC_LOADER_RUN_BASE_ADDR   0x00020000
#define ASIC_VEC_TBL_BASE_ADDR      0x00F00000  // limit addr of exception vector table
#define ASIC_DRAM_SIZE              0x01000000  // size == 8MB x 2 == 16MB

#define ASIC_ROM_BASE_ADDR          0x80000000  // it is the actual ROM base address after remap
#define ASIC_ROM_0_SIZE             0x00400000  // size == 4MB
#define ASIC_ROM_1_SIZE             0x00400000  // size == 4MB
                                                // Although if when physically ROM0 is 512KB
                                                // but we still configure it as 4MB anyway

#define ASIC_EXTIO_BASE_ADDR        (0x80000000)
#if 0
#define ASIC_CPUIF_BASE_ADDR        (0x81000000)    // base addr of CPU IF; DMA_ack has issue, so cann't use.
#endif
//#define ASIC_CPUIF_BASE_ADDR        (0x81000030)    // Support one DMA channel, use A3 pin be DMA_ack.
//#define ASIC_CPUIF_BASE_ADDR        (0x03604000)    // by hill 20070920
//#define ASIC_CPUIF_BASE_ADDR         (0x07604000)	 // by hill 20070920
#define ASIC_CPUIF_BASE_ADDR         (0x07604000)	 // by hill 20070920
#define ASIC_MODULE_BASE_ADDR       (0x82000000)    // base addr of Module card; not use


//--------------------------------------
// Special Register Start Address After System Reset
//--------------------------------------
//#define ASIC_SOC_BASE_ADDR  0xF0000000
#define ASIC_SOC_BASE_ADDR  0x03ff0000		//modified by hill 20070920
#define ASIC_NON_CACHE_ADDR 0x00000000  // address offset for non-cache access
#define ASIC_DMA_MEM_BASE   0x00800000  // should conform to devicea.S
#define ASIC_DMA_MEM_SIZE   0x00800000  // should conform to devicea.S

//#define fMCLK_MHz           133000000
//#define MHz                 1000000
//#define fMCLK               (fMCLK_MHz / MHz)

//--------------------------------------
// System Configuration Special Register
//--------------------------------------
#define ASIC_SYS_SYSCFG     (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0000)) // System configuration register
#define ASIC_SYS_PDCODE     (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0004)) // Product code and revision number register
#define ASIC_SYS_MISCREG    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0008)) // Miscellaneous register
#define ASIC_SYS_PCLKDIS    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x000C)) // Peripheral clock disable register
#define ASIC_SYS_CLKST      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0010)) // Clock Status register
#define ASIC_SYS_HPRIF      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0014)) // AHB bus master fixed priority register
#define ASIC_SYS_HPRIR      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0018)) // AHB bus master round-robin priority register
#define ASIC_SYS_CPLLCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x001C)) // Core PLL Configuration Register
#define ASIC_SYS_SPLLCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0020)) // PCI & PC Card PLL Configuration Register
#define ASIC_SYS_UPLLCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0024)) // USB PLL Configuration Register
#define ASIC_SYS_PPLLCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x0028)) // PHY PLL Configuration Register

//hill 20070921
#define ASIC_SYS_EXTACON0 (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x3008))
#define ASIC_SYS_EXTACON1 (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x300C))

//---------------------------------------------
// Ext. I/O Bank Controller Special Registers
//---------------------------------------------
#define ASIC_EIO_B0CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10000)) // Bank 0 control register
#define ASIC_EIO_B1CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10004)) // Bank 1 control register
#define ASIC_EIO_B2CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10008)) // Bank 2 control register
#define ASIC_EIO_B3CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x1000C)) // Bank 3 control register
#define ASIC_EIO_B4CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10010)) // Bank 4 control register
#define ASIC_EIO_B5CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10014)) // Bank 5 control register
#define ASIC_EIO_B6CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10018)) // Bank 6 control register
#define ASIC_EIO_B7CON      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x1001C)) // Bank 7 control register
#define ASIC_EIO_MUXBCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10020)) // Muxed bus control register
#define ASIC_EIO_WAITCON    (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10024)) // Wait control register
#define ASIC_EIO_WDSCON     (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x10028)) // Wait data setup cycle control register

//--------------------------------------
// SDRAM Special Registers
//--------------------------------------
#define ASIC_SDRAM_CFGREG   (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x20000)) // Configuration register
#define ASIC_SDRAM_CMDREG   (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x20004)) // Command register
#define ASIC_SDRAM_REFREG   (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x20008)) // Refresh timer register
#define ASIC_SDRAM_WBTOREG  (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x2000C)) // Write buffer time-out register

//--------------------------------------
// I/O Port Special Registers
//--------------------------------------
//#define ASIC_IOP_MODE1      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30000)) // I/O port mode select register for port 0 to 31
#define ASIC_IOP_MODE1      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x5000)) // hill 20070920
#define ASIC_IOP_MODE2      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30004)) // I/O port mode select register for port 32 to 63
//#define ASIC_IOP_CON1       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30008)) // I/O port function select register for port 0 to 31
#define ASIC_IOP_CON1       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x5004)) //hill 20070920
#define ASIC_IOP_CON2       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x3000C)) // I/O port function select register for port 32 to 63
#define ASIC_IOP_GDMA       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30010)) // I/O port special function register for GDMA
#define ASIC_IOP_EXTINT     (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30014)) // I/O port special function register for external interrupt
#define ASIC_IOP_EXTINTPND  (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30018)) // I/O port external interrupt clear register
//#define ASIC_IOP_DATA1      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x3001C)) // I/O port data register for port 0 to 31
#define ASIC_IOP_DATA1      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x5008)) // hill 20070920
#define ASIC_IOP_DATA2      (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30020)) // I/O port data register for port 32 to 63
#define ASIC_IOP_DRV1       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30024)) // I/O port drive control register for port 0 to 31
#define ASIC_IOP_DRV2       (*VPUINT32 (ASIC_SOC_BASE_ADDR + 0x30028)) // I/O port drive control register for port 32 to 63

//--------------------------------------

⌨️ 快捷键说明

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