📄 lh79520-hardware.h
字号:
/* * linux/include/asm-arm/arch-lh79520/hardware.h * * Copyright (C) 2001 Sharp Microelectronics of the Americas, Inc. * CAMAS, WA * Portions Copyright (C) 2002 Lineo, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * References: * (1) Sharp LH79520 Universal Microcontroller User's Guide, * Version 1.x, Sharp Microelectronics of the Americas, Inc. * */#ifndef _BIT#define _BIT(n) (1 << (n))#endif#ifndef _SBF#define _SBF(f,v) ((v) << (f))#endif#ifndef _BITMASK#define _BITMASK(field_width) ( _BIT(field_width) - 1)#endif/* Hardware addresses of major areas. * *_START is the physical address * *_SIZE is the size of the region * *_BASE is the virtual address *//* * we can do an identity mapping (V=P) of all of I/O * space, except for the VIC. * * One of the places you can find the VIC is at 0xffff0000, * which is the same place the interrupt vectors want to live, * so we'll leave a hole there, and use the VIC at it's other * address: 0xfffff000. */#define APB_START 0xfffc0000 /* Physical address of APB I/O space */#define APB_BASE 0xfffc0000 /* Virtual address of APB I/O space */#define APB_SIZE 0x00026000 /* its size (up to 0xfffe6000) */#define AHB_START 0xffff1000 /* Physical address of AHB I/O space */#define AHB_BASE 0xffff1000 /* Virtual address of AHB I/O space */#define AHB_SIZE 0x00004000 /* its size (up to 0xffff5000) */#define VIC_START VIC_PHYS /* Physical address of VIC */#define VIC_BASE 0xfffff000 /* Virtual address of VIC */#define VIC_SIZE 0x1000 /* its size */#define FLASH_START 0x40000000 /* Flash on SMC bank 0 */#define FLASH_BASE 0xf4000000#define FLASH_SIZE (4 * 1024 * 1024)#if defined(CONFIG_LPD_79520_10)#define LPD_CPLD_START 0x54200000 /* CPLD on SMC bank 5 */#define LPD_CPLD_BASE 0xf5000000#define LPD_CPLD_SIZE 0x01400000#define SMC91c111_START 0x54000000 /* Ethernet on SMC bank 3 */#define SMC91c111_BASE 0xf4800000#define SMC91c111_SIZE 4096#define IDE_START 0x50200000 /* CF/IDE on SMC bank 4 + lpd_cpld offset */#define IDE_BASE 0xf6400000#define IDE_SIZE 0x00002000#endif#define UNUSED_START 0x58000000 /* unused on SMC bank 6 */#define RESERVED_START 0x5C000000 /* reserved on SMC bank 7 */#define INT_SRAM_START 0x60000000 /* on-chip SRAM */#define INT_SRAM_BASE 0xf6800000#define INT_SRAM_SIZE (32 * 1024)#define IO_START APB_START#define IO_BASE APB_BASE/* macro to get at IO space when running virtually */#define IO_ADDRESS(phys) (phys)#define PCIO_BASE IO_BASE/********************************************************************** * AHB BASES *********************************************************************/#define AHB_PHYS (0xFFFF0000)#define VIC_PHYS_MIRROR (AHB_PHYS + 0x0000)#define SMC_REGS_PHYS (AHB_PHYS + 0x1000)#define SDRAM_REGS_PHYS (AHB_PHYS + 0x2000)#define LCD_PHYS (AHB_PHYS + 0x4000)#define VIC_PHYS (AHB_PHYS + 0xF000)/********************************************************************** * APB PHYSS *********************************************************************/#define APB_PHYS (0xFFFC0000)#define UART0_PHYS (APB_PHYS + 0x00000)#define UART1_PHYS (APB_PHYS + 0x01000)#define UART2_PHYS (APB_PHYS + 0x02000)#define PWM_PHYS (APB_PHYS + 0x03000)#define TIMER0_PHYS (APB_PHYS + 0x04000)#define TIMER1_PHYS (APB_PHYS + 0x05000)#define SSP_PHYS (APB_PHYS + 0x06000)#define GPIO3_PHYS (APB_PHYS + 0x1C000)#define GPIO2_PHYS (APB_PHYS + 0x1D000)#define GPIO1_PHYS (APB_PHYS + 0x1E000)#define GPIO0_PHYS (APB_PHYS + 0x1F000)#define RTC_PHYS (APB_PHYS + 0x20000)#define DMAC_PHYS (APB_PHYS + 0x21000)#define RCPC_PHYS (APB_PHYS + 0x22000)#define WDTIMER_PHYS (APB_PHYS + 0x23000)#define LCDICP_PHYS (APB_PHYS + 0x24000)#define IOCON_PHYS (APB_PHYS + 0x25000)/********************************************************************** * REMAPping *********************************************************************/#define SDRAM_MEM_PHYS (0x20000000)#define SMC_MEM_PHYS (0x40000000)#define INTERNAL_MEM_PHYS (0x60000000)// DDD #if REMAP == 0 #define SMC_MIRROR_MEM_PHYS (0x00000000)// DDD #elif REMAP == 1 // DDD #define SDRAM_MIRROR_MEM_PHYS (0x00000000)// DDD #elif REMAP == 2 // DDD #define INTERNAL_MIRROR_MEM_PHYS (0x00000000)// DDD #else// DDD #error REMAP must be defined as 0, 1, or 2// DDD #endif/********************************************************************** * xSPR bits *********************************************************************/#define CORE_IRQ _BIT(7)#define CORE_FIQ _BIT(6)/********************************************************************** * SMC Memory Bank Address Space Bases *********************************************************************/#define SMC_BANK0_PHYS (SMC_MEM_PHYS + 0x00000000)#define SMC_BANK1_PHYS (SMC_MEM_PHYS + 0x04000000)#define SMC_BANK2_PHYS (SMC_MEM_PHYS + 0x08000000)#define SMC_BANK3_PHYS (SMC_MEM_PHYS + 0x0C000000)#define SMC_BANK4_PHYS (SMC_MEM_PHYS + 0x10000000)#define SMC_BANK5_PHYS (SMC_MEM_PHYS + 0x14000000)#define SMC_BANK6_PHYS (SMC_MEM_PHYS + 0x18000000)#define SMC_BANK7_PHYS (SMC_MEM_PHYS + 0x1C000000)/********************************************************************** * SDRAMC Memory Bank Address Space Bases *********************************************************************/#define SDRAM_BANK0_PHYS (SDRAM_MEM_PHYS + 0x00000000)#define SDRAM_BANK1_PHYS (SDRAM_MEM_PHYS + 0x08000000)/********************************************************************** * Vectored Interrupt Controller (VIC) *********************************************************************/#define VICID_OFFSET (0xFE0)// DDD #define VIC ((VICREGS *)(VIC_PHYS))// DDD #define VICID ((VICIDREGS *)(VIC_PHYS + VICID_OFFSET))#define VIC_INT_TYPE_IRQ 0#define VIC_INT_TYPE_FIQ 1/* VIC Interrupt Sources */#define VIC_EXTINT0 0#define VIC_EXTINT1 1#define VIC_EXTINT2 2#define VIC_EXTINT3 3#define VIC_EXTINT4 4#define VIC_EXTINT5 5#define VIC_EXTINT6 6#define VIC_EXTINT7 7#define VIC_SPEXTINT0 8#define VIC_SPEXTINT1 9#define VIC_SPEXTINT2 10#define VIC_SPEXTINT3 11#define VIC_CLCDC 12#define VIC_SSPTXINTR 13#define VIC_SSPRXINTR 14#define VIC_SSPRORINTR 15#define VIC_SSPINTR 16#define VIC_TIMER0 17#define VIC_TIMER1 18#define VIC_TIMER2 19#define VIC_TIMER3 20#define VIC_UART0_RX 21#define VIC_UART0_TX 22#define VIC_UART0 23#define VIC_UART1 24#define VIC_UART2 25#define VIC_DMA0 26#define VIC_DMA1 27#define VIC_DMA2 28#define VIC_DMA3 29#define VIC_RTC 30#define VIC_WDT 31/* VIC Vectors */#define VIC_VECT_0 0#define VIC_VECT_1 1#define VIC_VECT_2 2#define VIC_VECT_3 3#define VIC_VECT_4 4#define VIC_VECT_5 5#define VIC_VECT_6 6#define VIC_VECT_7 7#define VIC_VECT_8 8#define VIC_VECT_9 9#define VIC_VECT_10 10#define VIC_VECT_11 11#define VIC_VECT_12 12#define VIC_VECT_13 13#define VIC_VECT_14 14#define VIC_VECT_15 15#define VIC_VECT_MAX VIC_VECT_15#define VIC_VECT_DEFAULT ~(0)#define XTAL_IN 14745600 /* 14.7456 MHz crystal */#define PLL_CLOCK (XTAL_IN * 21) /* 309 MHz PLL clock *//********************************************************************** * UART'S *********************************************************************/#define UARTID_OFFSET (0xFE0)// DDD #define UART0 ((UARTREGS *)(UART0_PHYS))// DDD #define UART1 ((UARTREGS *)(UART1_PHYS))// DDD #define UART2 ((UARTREGS *)(UART2_PHYS))// DDD #define UART0ID ((UARTIDREGS *)(UART0_PHYS + UARTID_OFFSET))// DDD #define UART1ID ((UARTIDREGS *)(UART1_PHYS + UARTID_OFFSET))// DDD #define UART2ID ((UARTIDREGS *)(UART2_PHYS + UARTID_OFFSET))/********************************************************************** * IRDA *********************************************************************/// DDD #define IRDA0 ((UARTREGS *)(UART0_PHYS))// DDD #define IRDA1 ((UARTREGS *)(UART1_PHYS))// DDD #define IRDA2 ((UARTREGS *)(UART2_PHYS))/********************************************************************** * Pulse Width Modulator (PWM) *********************************************************************/// DDD #define PWMX_OFFSET (0x20)// DDD #define PWM ((PWMREGS *)(PWM_PHYS))// DDD #define PWM0 ((PWMXREGS *)(PWM_PHYS))// DDD #define PWM1 ((PWMXREGS *)(PWM_PHYS + PWMX_OFFSET))/********************************************************************** * TIMER *********************************************************************/// DDD #define TIMER2_OFFSET (0x20)// DDD #define TIMER0 ((TIMERREG *)(TIMER0_PHYS))// DDD #define TIMER1 ((volatile TIMERREG *)(TIMER0_PHYS + TIMER2_OFFSET))// DDD #define TIMER2 ((TIMERREG *)(TIMER1_PHYS))// DDD #define TIMER3 ((TIMERREG *)(TIMER1_PHYS + TIMER2_OFFSET))/********************************************************************** * Synchronous Serial Port (SSP) *********************************************************************/// DDD #define SSP ((SSPREGS *)(SSP_PHYS))/********************************************************************** * General Purpose Input/Output (GPIO) *********************************************************************/// DDD #define GPIOA ((GPIOPAREGS *)(GPIO0_PHYS))// DDD #define GPIOB ((GPIOPBREGS *)(GPIO0_PHYS))// DDD #define GPIOC ((GPIOPAREGS *)(GPIO1_PHYS))// DDD #define GPIOD ((GPIOPBREGS *)(GPIO1_PHYS))// DDD #define GPIOE ((GPIOPAREGS *)(GPIO2_PHYS))// DDD #define GPIOF ((GPIOPBREGS *)(GPIO2_PHYS))// DDD #define GPIOG ((GPIOPAREGS *)(GPIO3_PHYS))// DDD #define GPIOH ((GPIOPBREGS *)(GPIO3_PHYS))/********************************************************************** * Real Time Clock (RTC) *********************************************************************/// DDD #define RTC ((RTCREGS *)(RTC_PHYS))/********************************************************************** * DMA Controller (DMAC) *********************************************************************/// DDD #define DMAC ((DMACREGS *)(DMAC_PHYS))/********************************************************************** * Reset, Clock, and Power Controller (RCPC) *********************************************************************/// DDD #define RCPC ((RCPCREGS *)(RCPC_PHYS)) /********************************************************************** * Watchdog Timer (WDTIMER) *********************************************************************/// DDD #define WDTIMER ((WDTIMERREGS *)(WDTIMER_PHYS))/********************************************************************** * LCD Interface Control Processor (LCDICP) *********************************************************************/// DDD #define LCDICP ((LCDICPREGS *)(LCDICP_PHYS))/********************************************************************** * IOCON *********************************************************************/// DDD #define IOCON ((IOCONREGS *)(IOCON_PHYS))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -