/* $NetBSD: s3c24x0reg.h,v 1.7 2004/02/12 03:52:46 bsh Exp $ */ /*- * Copyright (c) 2003 Genetec corporation All rights reserved. * Written by Hiroyuki Bessho for Genetec corporation. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of Genetec corporation may not be used to endorse * or promote products derived from this software without specific prior * written permission. * * THIS SOFTWARE IS PROVIDED BY GENETEC CORP. ``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 GENETEC CORP. * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD$ */ /* * Samsung S3C2410X/2400 processor is ARM920T based integrated CPU * * Reference: * S3C2410X User's Manual * S3C2400 User's Manual */ #ifndef _ARM_S3C2XX0_S3C24X0REG_H_ #define _ARM_S3C2XX0_S3C24X0REG_H_ /* common definitions for S3C2800, S3C2410 and S3C2440 */ #include /* * Map the device registers into kernel space. * * As most devices use less than 1 page of memory reduce * the distance between allocations by right shifting * S3C24X0_DEV_SHIFT bits. Because the UART takes 3*0x4000 * bytes the upper limit on S3C24X0_DEV_SHIFT is 4. * TODO: Fix the UART code so we can increase this value. */ #define S3C24X0_DEV_START 0x48000000 #define S3C24X0_DEV_STOP 0x60000000 #define S3C24X0_DEV_VA_OFFSET 0xD8000000 #define S3C24X0_DEV_SHIFT 4 #define S3C24X0_DEV_PA_SIZE (S3C24X0_DEV_STOP - S3C24X0_DEV_START) #define S3C24X0_DEV_VA_SIZE (S3C24X0_DEV_PA_SIZE >> S3C24X0_DEV_SHIFT) #define S3C24X0_DEV_PA_TO_VA(x) ((x >> S3C24X0_DEV_SHIFT) - S3C24X0_DEV_START + S3C24X0_DEV_VA_OFFSET) /* * Physical address of integrated peripherals */ #define S3C24X0_MEMCTL_PA_BASE 0x48000000 /* memory controller */ #define S3C24X0_MEMCTL_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_MEMCTL_PA_BASE) #define S3C24X0_USBHC_PA_BASE 0x49000000 /* USB Host controller */ #define S3C24X0_USBHC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_USBHC_PA_BASE) #define S3C24X0_INTCTL_PA_BASE 0x4a000000 /* Interrupt controller */ #define S3C24X0_INTCTL_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_INTCTL_PA_BASE) #define S3C24X0_INTCTL_SIZE 0x20 #define S3C24X0_DMAC_PA_BASE 0x4b000000 #define S3C24X0_DMAC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_DMAC_PA_BASE) #define S3C24X0_DMAC_SIZE 0xe4 #define S3C24X0_CLKMAN_PA_BASE 0x4c000000 /* clock & power management */ #define S3C24X0_CLKMAN_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_CLKMAN_PA_BASE) #define S3C24X0_LCDC_PA_BASE 0x4d000000 /* LCD controller */ #define S3C24X0_LCDC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_LCDC_PA_BASE) #define S3C24X0_LCDC_SIZE 0x64 #define S3C24X0_NANDFC_PA_BASE 0x4e000000 /* NAND Flash controller */ #define S3C24X0_NANDFC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_NANDFC_PA_BASE) #define S3C24X0_UART0_PA_BASE 0x50000000 #define S3C24X0_UART0_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_UART0_PA_BASE) #define S3C24X0_UART_PA_BASE(n) (S3C24X0_UART0_PA_BASE+0x4000*(n)) #define S3C24X0_UART_BASE(n) (S3C24X0_UART0_BASE+0x4000*(n)) #define S3C24X0_TIMER_PA_BASE 0x51000000 #define S3C24X0_TIMER_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_TIMER_PA_BASE) #define S3C24X0_USBDC_PA_BASE 0x5200140 #define S3C24X0_USBDC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_USBDC_PA_BASE) #define S3C24X0_USBDC_SIZE 0x130 #define S3C24X0_WDT_PA_BASE 0x53000000 #define S3C24X0_WDT_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_WDT_PA_BASE) #define S3C24X0_IIC_PA_BASE 0x54000000 #define S3C24X0_IIC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_IIC_PA_BASE) #define S3C24X0_IIS_PA_BASE 0x55000000 #define S3C24X0_IIS_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_IIS_PA_BASE) #define S3C24X0_GPIO_PA_BASE 0x56000000 #define S3C24X0_GPIO_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_GPIO_PA_BASE) #define S3C24X0_RTC_PA_BASE 0x57000000 #define S3C24X0_RTC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_RTC_PA_BASE) #define S3C24X0_RTC_SIZE 0x8C #define S3C24X0_ADC_PA_BASE 0x58000000 #define S3C24X0_ADC_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_ADC_PA_BASE) #define S3C24X0_SPI0_PA_BASE 0x59000000 #define S3C24X0_SPI0_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_SPI0_PA_BASE) #define S3C24X0_SPI1_PA_BASE 0x59000020 #define S3C24X0_SPI1_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_SPI1_PA_BASE) #define S3C24X0_SDI_PA_BASE 0x5a000000 /* SD Interface */ #define S3C24X0_SDI_BASE S3C24X0_DEV_PA_TO_VA(S3C24X0_SDI_PA_BASE) #define S3C24X0_REG_BASE 0x48000000 #define S3C24X0_REG_SIZE 0x13000000 /* Memory controller */ #define MEMCTL_BWSCON 0x00 /* Bus width and wait status */ #define BWSCON_DW0_SHIFT 1 /* bank0 is odd */ #define BWSCON_BANK_SHIFT(n) (4*(n)) /* for bank 1..7 */ #define BWSCON_DW_MASK 0x03 #define BWSCON_DW_8 0 #define BWSCON_DW_16 1 #define BWSCON_DW_32 2 #define BWSCON_WS 0x04 /* WAIT enable for the bank */ #define BWSCON_ST 0x08 /* SRAM use UB/LB for the bank */ #define MEMCTL_BANKCON0 0x04 /* Boot ROM control */ #define MEMCTL_BANKCON(n) (0x04+4*(n)) /* BANKn control */ #define BANKCON_MT_SHIFT 15 #define BANKCON_MT_ROM (0<