Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be82ae02 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm

* 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm: (291 commits)
  ARM: AMBA: Add pclk support to AMBA bus infrastructure
  ARM: 6278/2: fix regression in RealView after the introduction of pclk
  ARM: 6277/1: mach-shmobile: Allow users to select HZ, default to 128
  ARM: 6276/1: mach-shmobile: remove duplicate NR_IRQS_LEGACY
  ARM: 6246/1: mmci: support larger MMCIDATALENGTH register
  ARM: 6245/1: mmci: enable hardware flow control on Ux500 variants
  ARM: 6244/1: mmci: add variant data and default MCICLOCK support
  ARM: 6243/1: mmci: pass power_mode to the translate_vdd callback
  ARM: 6274/1: add global control registers definition header file for nuc900
  mx2_camera: fix type of dma buffer virtual address pointer
  mx2_camera: Add soc_camera support for i.MX25/i.MX27
  arm/imx/gpio: add spinlock protection
  ARM: Add support for the LPC32XX arch
  ARM: LPC32XX: Arch config menu supoport and makefiles
  ARM: LPC32XX: Phytec 3250 platform support
  ARM: LPC32XX: Misc support functions
  ARM: LPC32XX: Serial support code
  ARM: LPC32XX: System suspend support
  ARM: LPC32XX: GPIO, timer, and IRQ drivers
  ARM: LPC32XX: Clock driver
  ...
parents 4b4fd27c 7b70c427
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -33,7 +33,13 @@ ffff0000 ffff0fff CPU vector page.

fffe0000	fffeffff	XScale cache flush area.  This is used
				in proc-xscale.S to flush the whole data
				cache.  Free for other usage on non-XScale.
				cache. (XScale does not have TCM.)

fffe8000	fffeffff	DTCM mapping area for platforms with
				DTCM mounted inside the CPU.

fffe0000	fffe7fff	ITCM mapping area for platforms with
				ITCM mounted inside the CPU.

fff00000	fffdffff	Fixmap mapping region.  Addresses provided
				by fix_to_virt() will be located here.
+19 −11
Original line number Diff line number Diff line
@@ -19,8 +19,8 @@ defines a CPUID_TCM register that you can read out from the
system control coprocessor. Documentation from ARM can be found
at http://infocenter.arm.com, search for "TCM Status Register"
to see documents for all CPUs. Reading this register you can
determine if ITCM (bit 0) and/or DTCM (bit 16) is present in the
machine.
determine if ITCM (bits 1-0) and/or DTCM (bit 17-16) is present
in the machine.

There is further a TCM region register (search for "TCM Region
Registers" at the ARM site) that can report and modify the location
@@ -35,7 +35,15 @@ The TCM memory can then be remapped to another address again using
the MMU, but notice that the TCM if often used in situations where
the MMU is turned off. To avoid confusion the current Linux
implementation will map the TCM 1 to 1 from physical to virtual
memory in the location specified by the machine.
memory in the location specified by the kernel. Currently Linux
will map ITCM to 0xfffe0000 and on, and DTCM to 0xfffe8000 and
on, supporting a maximum of 32KiB of ITCM and 32KiB of DTCM.

Newer versions of the region registers also support dividing these
TCMs in two separate banks, so for example an 8KiB ITCM is divided
into two 4KiB banks with its own control registers. The idea is to
be able to lock and hide one of the banks for use by the secure
world (TrustZone).

TCM is used for a few things:

@@ -65,18 +73,18 @@ in <asm/tcm.h>. Using this interface it is possible to:
  memory. Such a heap is great for things like saving
  device state when shutting off device power domains.

A machine that has TCM memory shall select HAVE_TCM in
arch/arm/Kconfig for itself, and then the
rest of the functionality will depend on the physical
location and size of ITCM and DTCM to be defined in
mach/memory.h for the machine. Code that needs to use
TCM shall #include <asm/tcm.h> If the TCM is not located
at the place given in memory.h it will be moved using
the TCM Region registers.
A machine that has TCM memory shall select HAVE_TCM from
arch/arm/Kconfig for itself. Code that needs to use TCM shall
#include <asm/tcm.h>

Functions to go into itcm can be tagged like this:
int __tcmfunc foo(int bar);

Since these are marked to become long_calls and you may want
to have functions called locally inside the TCM without
wasting space, there is also the __tcmlocalfunc prefix that
will make the call relative.

Variables to go into dtcm can be tagged like this:
int __tcmdata foo;

+168 −37
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ config ARM
	default y
	select HAVE_AOUT
	select HAVE_IDE
	select HAVE_MEMBLOCK
	select RTC_LIB
	select SYS_SUPPORTS_APM_EMULATION
	select GENERIC_ATOMIC64 if (!CPU_32v6K)
@@ -24,6 +25,7 @@ config ARM
	select HAVE_KERNEL_LZMA
	select HAVE_PERF_EVENTS
	select PERF_USE_VMALLOC
	select HAVE_REGS_AND_STACK_ACCESS_API
	help
	  The ARM series is a line of low-power-consumption RISC chip designs
	  licensed by ARM Ltd and targeted at embedded applications and
@@ -55,7 +57,7 @@ config GENERIC_CLOCKEVENTS
config GENERIC_CLOCKEVENTS_BROADCAST
	bool
	depends on GENERIC_CLOCKEVENTS
	default y if SMP && !LOCAL_TIMERS
	default y if SMP

config HAVE_TCM
	bool
@@ -301,6 +303,7 @@ config ARCH_CNS3XXX
	select CPU_V6
	select GENERIC_CLOCKEVENTS
	select ARM_GIC
	select PCI_DOMAINS if PCI
	help
	  Support for Cavium Networks CNS3XXX platform.

@@ -439,21 +442,6 @@ config ARCH_IXP4XX
	help
	  Support for Intel's IXP4XX (XScale) family of processors.

config ARCH_L7200
	bool "LinkUp-L7200"
	select CPU_ARM720T
	select FIQ
	select ARCH_USES_GETTIMEOFFSET
	help
	  Say Y here if you intend to run this kernel on a LinkUp Systems
	  L7200 Software Development Board which uses an ARM720T processor.
	  Information on this board can be obtained at:

	  <http://www.linkupsys.com/>

	  If you have any questions or comments about the Linux kernel port
	  to this board, send e-mail to <sjhill@cotw.com>.

config ARCH_DOVE
	bool "Marvell Dove"
	select PCI
@@ -482,6 +470,19 @@ config ARCH_LOKI
	help
	  Support for the Marvell Loki (88RC8480) SoC.

config ARCH_LPC32XX
	bool "NXP LPC32XX"
	select CPU_ARM926T
	select ARCH_REQUIRE_GPIOLIB
	select HAVE_IDE
	select ARM_AMBA
	select USB_ARCH_HAS_OHCI
	select COMMON_CLKDEV
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	help
	  Support for the NXP LPC32XX family of processors

config ARCH_MV78XX0
	bool "Marvell MV78xx0"
	select CPU_FEROCEON
@@ -586,6 +587,7 @@ config ARCH_MSM
	bool "Qualcomm MSM"
	select HAVE_CLK
	select GENERIC_CLOCKEVENTS
	select ARCH_REQUIRE_GPIOLIB
	help
	  Support for Qualcomm MSM/QSD based systems.  This runs on the
	  apps processor of the MSM/QSD and depends on a shared memory
@@ -719,7 +721,6 @@ config ARCH_SHARK
config ARCH_LH7A40X
	bool "Sharp LH7A40X"
	select CPU_ARM922T
	select ARCH_DISCONTIGMEM_ENABLE if !LH7A40X_CONTIGMEM
	select ARCH_SPARSEMEM_ENABLE if !LH7A40X_CONTIGMEM
	select ARCH_USES_GETTIMEOFFSET
	help
@@ -845,6 +846,8 @@ source "arch/arm/mach-lh7a40x/Kconfig"

source "arch/arm/mach-loki/Kconfig"

source "arch/arm/mach-lpc32xx/Kconfig"

source "arch/arm/mach-msm/Kconfig"

source "arch/arm/mach-mv78xx0/Kconfig"
@@ -1031,11 +1034,6 @@ endmenu

source "arch/arm/common/Kconfig"

config FORCE_MAX_ZONEORDER
	int
	depends on SA1111
	default "9"

menu "Bus support"

config ARM_AMBA
@@ -1060,7 +1058,7 @@ config ISA_DMA_API
	bool

config PCI
	bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE
	bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB || ARCH_IXP4XX || ARCH_KS8695 || MACH_ARMCORE || ARCH_CNS3XXX
	help
	  Find out whether you have a PCI motherboard. PCI is the name of a
	  bus system, i.e. the way the CPU talks to the other stuff inside
@@ -1172,9 +1170,10 @@ config HOTPLUG_CPU
config LOCAL_TIMERS
	bool "Use local timer interrupts"
	depends on SMP && (REALVIEW_EB_ARM11MP || MACH_REALVIEW_PB11MP || \
		REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || ARCH_U8500)
		REALVIEW_EB_A9MP || MACH_REALVIEW_PBX || ARCH_OMAP4 || \
		ARCH_U8500 || ARCH_VEXPRESS_CA9X4)
	default y
	select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_OMAP4 || ARCH_U8500)
	select HAVE_ARM_TWD if (ARCH_REALVIEW || ARCH_VEXPRESS || ARCH_OMAP4 || ARCH_U8500)
	help
	  Enable support for local timers on SMP platforms, rather then the
	  legacy IPI broadcast method.  Local timers allows the system
@@ -1185,10 +1184,10 @@ source kernel/Kconfig.preempt

config HZ
	int
	default 128 if ARCH_L7200
	default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P6440 || ARCH_S5P6442 || ARCH_S5PV210
	default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
	default AT91_TIMER_HZ if ARCH_AT91
	default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
	default 100

config THUMB2_KERNEL
@@ -1241,10 +1240,6 @@ config OABI_COMPAT
config ARCH_HAS_HOLES_MEMORYMODEL
	bool

# Discontigmem is deprecated
config ARCH_DISCONTIGMEM_ENABLE
	bool

config ARCH_SPARSEMEM_ENABLE
	bool

@@ -1252,13 +1247,7 @@ config ARCH_SPARSEMEM_DEFAULT
	def_bool ARCH_SPARSEMEM_ENABLE

config ARCH_SELECT_MEMORY_MODEL
	def_bool ARCH_DISCONTIGMEM_ENABLE && ARCH_SPARSEMEM_ENABLE

config NODES_SHIFT
	int
	default "4" if ARCH_LH7A40X
	default "2"
	depends on NEED_MULTIPLE_NODES
	def_bool ARCH_SPARSEMEM_ENABLE

config HIGHMEM
	bool "High Memory Support (EXPERIMENTAL)"
@@ -1290,8 +1279,33 @@ config HW_PERF_EVENTS
	  Enable hardware performance counter support for perf events. If
	  disabled, perf events will use software events only.

config SPARSE_IRQ
	def_bool n
	help
	  This enables support for sparse irqs. This is useful in general
	  as most CPUs have a fairly sparse array of IRQ vectors, which
	  the irq_desc then maps directly on to. Systems with a high
	  number of off-chip IRQs will want to treat this as
	  experimental until they have been independently verified.

source "mm/Kconfig"

config FORCE_MAX_ZONEORDER
	int "Maximum zone order" if ARCH_SHMOBILE
	range 11 64 if ARCH_SHMOBILE
	default "9" if SA1111
	default "11"
	help
	  The kernel memory allocator divides physically contiguous memory
	  blocks into "zones", where each zone is a power of two number of
	  pages.  This option selects the largest power of two that the kernel
	  keeps in the memory allocator.  If you need to allocate very large
	  blocks of physically contiguous memory, then you may need to
	  increase this value.

	  This config option is actually maximum order plus one. For example,
	  a value of 11 means that the largest free memory block is 2^10 pages.

config LEDS
	bool "Timer and CPU usage LEDs"
	depends on ARCH_CDB89712 || ARCH_EBSA110 || \
@@ -1375,6 +1389,24 @@ config UACCESS_WITH_MEMCPY
	  However, if the CPU data cache is using a write-allocate mode,
	  this option is unlikely to provide any performance gain.

config CC_STACKPROTECTOR
	bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
	help
	  This option turns on the -fstack-protector GCC feature. This
	  feature puts, at the beginning of functions, a canary value on
	  the stack just before the return address, and validates
	  the value just before actually returning.  Stack based buffer
	  overflows (that need to overwrite this return address) now also
	  overwrite the canary, which gets detected and the attack is then
	  neutralized via a kernel panic.
	  This feature requires gcc version 4.2 or above.

config DEPRECATED_PARAM_STRUCT
	bool "Provide old way to pass kernel parameters"
	help
	  This was deprecated in 2001 and announced to live on for 5 years.
	  Some old boot loaders still use this way.

endmenu

menu "Boot options"
@@ -1485,6 +1517,105 @@ config ATAGS_PROC
	  Should the atags used to boot the kernel be exported in an "atags"
	  file in procfs. Useful with kexec.

config AUTO_ZRELADDR
	bool "Auto calculation of the decompressed kernel image address"
	depends on !ZBOOT_ROM && !ARCH_U300
	help
	  ZRELADDR is the physical address where the decompressed kernel
	  image will be placed. If AUTO_ZRELADDR is selected, the address
	  will be determined at run-time by masking the current IP with
	  0xf8000000. This assumes the zImage being placed in the first 128MB
	  from start of memory.

config ZRELADDR
	hex "Physical address of the decompressed kernel image"
	depends on !AUTO_ZRELADDR
	default 0x00008000 if ARCH_BCMRING ||\
		ARCH_CNS3XXX ||\
		ARCH_DOVE ||\
		ARCH_EBSA110 ||\
		ARCH_FOOTBRIDGE ||\
		ARCH_INTEGRATOR ||\
		ARCH_IOP13XX ||\
		ARCH_IOP33X ||\
		ARCH_IXP2000 ||\
		ARCH_IXP23XX ||\
		ARCH_IXP4XX ||\
		ARCH_KIRKWOOD ||\
		ARCH_KS8695 ||\
		ARCH_LOKI ||\
		ARCH_MMP ||\
		ARCH_MV78XX0 ||\
		ARCH_NOMADIK ||\
		ARCH_NUC93X ||\
		ARCH_NS9XXX ||\
		ARCH_ORION5X ||\
		ARCH_SPEAR3XX ||\
		ARCH_SPEAR6XX ||\
		ARCH_U8500 ||\
		ARCH_VERSATILE ||\
		ARCH_W90X900
	default 0x08008000 if ARCH_MX1 ||\
		ARCH_SHARK
	default 0x10008000 if ARCH_MSM ||\
		ARCH_OMAP1 ||\
		ARCH_RPC
	default 0x20008000 if ARCH_S5P6440 ||\
		ARCH_S5P6442 ||\
		ARCH_S5PC100 ||\
		ARCH_S5PV210
	default 0x30008000 if ARCH_S3C2410 ||\
		ARCH_S3C2400 ||\
		ARCH_S3C2412 ||\
		ARCH_S3C2416 ||\
		ARCH_S3C2440 ||\
		ARCH_S3C2443
	default 0x40008000 if ARCH_STMP378X ||\
		ARCH_STMP37XX ||\
		ARCH_SH7372 ||\
		ARCH_SH7377
	default 0x50008000 if ARCH_S3C64XX ||\
		ARCH_SH7367
	default 0x60008000 if ARCH_VEXPRESS
	default 0x80008000 if ARCH_MX25 ||\
		ARCH_MX3 ||\
		ARCH_NETX ||\
		ARCH_OMAP2PLUS ||\
		ARCH_PNX4008
	default 0x90008000 if ARCH_MX5 ||\
		ARCH_MX91231
	default 0xa0008000 if ARCH_IOP32X ||\
		ARCH_PXA ||\
		MACH_MX27
	default 0xc0008000 if ARCH_LH7A40X ||\
		MACH_MX21
	default 0xf0008000 if ARCH_AAEC2000 ||\
		ARCH_L7200
	default 0xc0028000 if ARCH_CLPS711X
	default 0x70008000 if ARCH_AT91 && (ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
	default 0x20008000 if ARCH_AT91 && !(ARCH_AT91CAP9 || ARCH_AT91SAM9G45)
	default 0xc0008000 if ARCH_DAVINCI && ARCH_DAVINCI_DA8XX
	default 0x80008000 if ARCH_DAVINCI && !ARCH_DAVINCI_DA8XX
	default 0x00008000 if ARCH_EP93XX && EP93XX_SDCE3_SYNC_PHYS_OFFSET
	default 0xc0008000 if ARCH_EP93XX && EP93XX_SDCE0_PHYS_OFFSET
	default 0xd0008000 if ARCH_EP93XX && EP93XX_SDCE1_PHYS_OFFSET
	default 0xe0008000 if ARCH_EP93XX && EP93XX_SDCE2_PHYS_OFFSET
	default 0xf0008000 if ARCH_EP93XX && EP93XX_SDCE3_ASYNC_PHYS_OFFSET
	default 0x00008000 if ARCH_GEMINI && GEMINI_MEM_SWAP
	default 0x10008000 if ARCH_GEMINI && !GEMINI_MEM_SWAP
	default 0x70008000 if ARCH_REALVIEW && REALVIEW_HIGH_PHYS_OFFSET
	default 0x00008000 if ARCH_REALVIEW && !REALVIEW_HIGH_PHYS_OFFSET
	default 0xc0208000 if ARCH_SA1100 && SA1111
	default 0xc0008000 if ARCH_SA1100 && !SA1111
	default 0x30108000 if ARCH_S3C2410 && PM_H1940
	default 0x28E08000 if ARCH_U300 && MACH_U300_SINGLE_RAM
	default 0x48008000 if ARCH_U300 && !MACH_U300_SINGLE_RAM
	help
	  ZRELADDR is the physical address where the decompressed kernel
	  image will be placed. ZRELADDR has to be specified when the
	  assumption of AUTO_ZRELADDR is not valid, or when ZBOOT_ROM is
	  selected.

endmenu

menu "CPU Power Management"
+7 −3
Original line number Diff line number Diff line
@@ -34,6 +34,10 @@ ifeq ($(CONFIG_FRAME_POINTER),y)
KBUILD_CFLAGS	+=-fno-omit-frame-pointer -mapcs -mno-sched-prolog
endif

ifeq ($(CONFIG_CC_STACKPROTECTOR),y)
KBUILD_CFLAGS	+=-fstack-protector
endif

ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
KBUILD_CPPFLAGS	+= -mbig-endian
AS		+= -EB
@@ -139,14 +143,14 @@ machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx
machine-$(CONFIG_ARCH_IXP4XX)		:= ixp4xx
machine-$(CONFIG_ARCH_KIRKWOOD)		:= kirkwood
machine-$(CONFIG_ARCH_KS8695)		:= ks8695
machine-$(CONFIG_ARCH_L7200)		:= l7200
machine-$(CONFIG_ARCH_LH7A40X)		:= lh7a40x
machine-$(CONFIG_ARCH_LOKI) 		:= loki
machine-$(CONFIG_ARCH_LPC32XX)		:= lpc32xx
machine-$(CONFIG_ARCH_MMP)		:= mmp
machine-$(CONFIG_ARCH_MSM)		:= msm
machine-$(CONFIG_ARCH_MV78XX0)		:= mv78xx0
machine-$(CONFIG_ARCH_MX1)		:= mx1
machine-$(CONFIG_ARCH_MX2)		:= mx2
machine-$(CONFIG_ARCH_MX1)		:= imx
machine-$(CONFIG_ARCH_MX2)		:= imx
machine-$(CONFIG_ARCH_MX25)		:= mx25
machine-$(CONFIG_ARCH_MX3)		:= mx3
machine-$(CONFIG_ARCH_MX5)		:= mx5
+3 −5
Original line number Diff line number Diff line
@@ -14,18 +14,16 @@
MKIMAGE         := $(srctree)/scripts/mkuboot.sh

ifneq ($(MACHINE),)
include $(srctree)/$(MACHINE)/Makefile.boot
-include $(srctree)/$(MACHINE)/Makefile.boot
endif

# Note: the following conditions must always be true:
#   ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
#   PARAMS_PHYS must be within 4MB of ZRELADDR
#   INITRD_PHYS must be in RAM
ZRELADDR    := $(zreladdr-y)
PARAMS_PHYS := $(params_phys-y)
INITRD_PHYS := $(initrd_phys-y)

export ZRELADDR INITRD_PHYS PARAMS_PHYS
export INITRD_PHYS PARAMS_PHYS

targets := Image zImage xipImage bootpImage uImage

@@ -67,7 +65,7 @@ quiet_cmd_uimage = UIMAGE $@
ifeq ($(CONFIG_ZBOOT_ROM),y)
$(obj)/uImage: LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
else
$(obj)/uImage: LOADADDR=$(ZRELADDR)
$(obj)/uImage: LOADADDR=$(CONFIG_ZRELADDR)
endif

ifeq ($(CONFIG_THUMB2_KERNEL),y)
Loading