mirror of
https://github.com/torvalds/linux.git
synced 2024-12-22 19:01:37 +00:00
fa59440d0c
This adds registers, interrupt numbers and IO mappings for the U300 series platforms core support, including basic block offsets and registers definitions for the system controller. Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
188 lines
4.6 KiB
C
188 lines
4.6 KiB
C
/*
|
|
*
|
|
* arch/arm/mach-u300/include/mach/u300-regs.h
|
|
*
|
|
*
|
|
* Copyright (C) 2006-2009 ST-Ericsson AB
|
|
* License terms: GNU General Public License (GPL) version 2
|
|
* Basic register address definitions in physical memory and
|
|
* some block defintions for core devices like the timer.
|
|
* Author: Linus Walleij <linus.walleij@stericsson.com>
|
|
*/
|
|
|
|
#ifndef __MACH_U300_REGS_H
|
|
#define __MACH_U300_REGS_H
|
|
|
|
/*
|
|
* These are the large blocks of memory allocated for I/O.
|
|
* the defines are used for setting up the I/O memory mapping.
|
|
*/
|
|
|
|
/* NAND Flash CS0 */
|
|
#define U300_NAND_CS0_PHYS_BASE 0x80000000
|
|
#define U300_NAND_CS0_VIRT_BASE 0xff040000
|
|
|
|
/* NFIF */
|
|
#define U300_NAND_IF_PHYS_BASE 0x9f800000
|
|
#define U300_NAND_IF_VIRT_BASE 0xff030000
|
|
|
|
/* AHB Peripherals */
|
|
#define U300_AHB_PER_PHYS_BASE 0xa0000000
|
|
#define U300_AHB_PER_VIRT_BASE 0xff010000
|
|
|
|
/* FAST Peripherals */
|
|
#define U300_FAST_PER_PHYS_BASE 0xc0000000
|
|
#define U300_FAST_PER_VIRT_BASE 0xff020000
|
|
|
|
/* SLOW Peripherals */
|
|
#define U300_SLOW_PER_PHYS_BASE 0xc0010000
|
|
#define U300_SLOW_PER_VIRT_BASE 0xff000000
|
|
|
|
/* Boot ROM */
|
|
#define U300_BOOTROM_PHYS_BASE 0xffff0000
|
|
#define U300_BOOTROM_VIRT_BASE 0xffff0000
|
|
|
|
/* SEMI config base */
|
|
#ifdef CONFIG_MACH_U300_BS335
|
|
#define U300_SEMI_CONFIG_BASE 0x2FFE0000
|
|
#else
|
|
#define U300_SEMI_CONFIG_BASE 0x30000000
|
|
#endif
|
|
|
|
/*
|
|
* All the following peripherals are specified at their PHYSICAL address,
|
|
* so if you need to access them (in the kernel), you MUST use the macros
|
|
* defined in <asm/io.h> to map to the IO_ADDRESS_AHB() IO_ADDRESS_FAST()
|
|
* etc.
|
|
*/
|
|
|
|
/*
|
|
* AHB peripherals
|
|
*/
|
|
|
|
/* AHB Peripherals Bridge Controller */
|
|
#define U300_AHB_BRIDGE_BASE (U300_AHB_PER_PHYS_BASE+0x0000)
|
|
|
|
/* Vectored Interrupt Controller 0, servicing 32 interrupts */
|
|
#define U300_INTCON0_BASE (U300_AHB_PER_PHYS_BASE+0x1000)
|
|
#define U300_INTCON0_VBASE (U300_AHB_PER_VIRT_BASE+0x1000)
|
|
|
|
/* Vectored Interrupt Controller 1, servicing 32 interrupts */
|
|
#define U300_INTCON1_BASE (U300_AHB_PER_PHYS_BASE+0x2000)
|
|
#define U300_INTCON1_VBASE (U300_AHB_PER_VIRT_BASE+0x2000)
|
|
|
|
/* Memory Stick Pro (MSPRO) controller */
|
|
#define U300_MSPRO_BASE (U300_AHB_PER_PHYS_BASE+0x3000)
|
|
|
|
/* EMIF Configuration Area */
|
|
#define U300_EMIF_CFG_BASE (U300_AHB_PER_PHYS_BASE+0x4000)
|
|
|
|
|
|
/*
|
|
* FAST peripherals
|
|
*/
|
|
|
|
/* FAST bridge control */
|
|
#define U300_FAST_BRIDGE_BASE (U300_FAST_PER_PHYS_BASE+0x0000)
|
|
|
|
/* MMC/SD controller */
|
|
#define U300_MMCSD_BASE (U300_FAST_PER_PHYS_BASE+0x1000)
|
|
|
|
/* PCM I2S0 controller */
|
|
#define U300_PCM_I2S0_BASE (U300_FAST_PER_PHYS_BASE+0x2000)
|
|
|
|
/* PCM I2S1 controller */
|
|
#define U300_PCM_I2S1_BASE (U300_FAST_PER_PHYS_BASE+0x3000)
|
|
|
|
/* I2C0 controller */
|
|
#define U300_I2C0_BASE (U300_FAST_PER_PHYS_BASE+0x4000)
|
|
|
|
/* I2C1 controller */
|
|
#define U300_I2C1_BASE (U300_FAST_PER_PHYS_BASE+0x5000)
|
|
|
|
/* SPI controller */
|
|
#define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000)
|
|
|
|
#ifdef CONFIG_MACH_U300_BS335
|
|
/* Fast UART1 on U335 only */
|
|
#define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
|
|
#endif
|
|
|
|
/*
|
|
* SLOW peripherals
|
|
*/
|
|
|
|
/* SLOW bridge control */
|
|
#define U300_SLOW_BRIDGE_BASE (U300_SLOW_PER_PHYS_BASE)
|
|
|
|
/* SYSCON */
|
|
#define U300_SYSCON_BASE (U300_SLOW_PER_PHYS_BASE+0x1000)
|
|
#define U300_SYSCON_VBASE (U300_SLOW_PER_VIRT_BASE+0x1000)
|
|
|
|
/* Watchdog */
|
|
#define U300_WDOG_BASE (U300_SLOW_PER_PHYS_BASE+0x2000)
|
|
|
|
/* UART0 */
|
|
#define U300_UART0_BASE (U300_SLOW_PER_PHYS_BASE+0x3000)
|
|
|
|
/* APP side special timer */
|
|
#define U300_TIMER_APP_BASE (U300_SLOW_PER_PHYS_BASE+0x4000)
|
|
#define U300_TIMER_APP_VBASE (U300_SLOW_PER_VIRT_BASE+0x4000)
|
|
|
|
/* Keypad */
|
|
#define U300_KEYPAD_BASE (U300_SLOW_PER_PHYS_BASE+0x5000)
|
|
|
|
/* GPIO */
|
|
#define U300_GPIO_BASE (U300_SLOW_PER_PHYS_BASE+0x6000)
|
|
|
|
/* RTC */
|
|
#define U300_RTC_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
|
|
|
|
/* Bus tracer */
|
|
#define U300_BUSTR_BASE (U300_SLOW_PER_PHYS_BASE+0x8000)
|
|
|
|
/* Event handler (hardware queue) */
|
|
#define U300_EVHIST_BASE (U300_SLOW_PER_PHYS_BASE+0x9000)
|
|
|
|
/* Genric Timer */
|
|
#define U300_TIMER_BASE (U300_SLOW_PER_PHYS_BASE+0xa000)
|
|
|
|
/* PPM */
|
|
#define U300_PPM_BASE (U300_SLOW_PER_PHYS_BASE+0xb000)
|
|
|
|
|
|
/*
|
|
* REST peripherals
|
|
*/
|
|
|
|
/* ISP (image signal processor) is only available in U335 */
|
|
#ifdef CONFIG_MACH_U300_BS335
|
|
#define U300_ISP_BASE (0xA0008000)
|
|
#endif
|
|
|
|
/* DMA Controller base */
|
|
#define U300_DMAC_BASE (0xC0020000)
|
|
|
|
/* MSL Base */
|
|
#define U300_MSL_BASE (0xc0022000)
|
|
|
|
/* APEX Base */
|
|
#define U300_APEX_BASE (0xc0030000)
|
|
|
|
/* Video Encoder Base */
|
|
#ifdef CONFIG_MACH_U300_BS335
|
|
#define U300_VIDEOENC_BASE (0xc0080000)
|
|
#else
|
|
#define U300_VIDEOENC_BASE (0xc0040000)
|
|
#endif
|
|
|
|
/* XGAM Base */
|
|
#define U300_XGAM_BASE (0xd0000000)
|
|
|
|
/*
|
|
* Virtual accessor macros for static devices
|
|
*/
|
|
|
|
|
|
#endif
|