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

Commit 2a56d222 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (45 commits)
  ARM: 6945/1: Add unwinding support for division functions
  ARM: kill pmd_off()
  ARM: 6944/1: mm: allow ASID 0 to be allocated to tasks
  ARM: 6943/1: mm: use TTBR1 instead of reserved context ID
  ARM: 6942/1: mm: make TTBR1 always point to swapper_pg_dir on ARMv6/7
  ARM: 6941/1: cache: ensure MVA is cacheline aligned in flush_kern_dcache_area
  ARM: add sendmmsg syscall
  ARM: 6863/1: allow hotplug on msm
  ARM: 6832/1: mmci: support for ST-Ericsson db8500v2
  ARM: 6830/1: mach-ux500: force PrimeCell revisions
  ARM: 6829/1: amba: make hardcoded periphid override hardware
  ARM: 6828/1: mach-ux500: delete SSP PrimeCell ID
  ARM: 6827/1: mach-netx: delete hardcoded periphid
  ARM: 6940/1: fiq: Briefly document driver responsibilities for suspend/resume
  ARM: 6938/1: fiq: Refactor {get,set}_fiq_regs() for Thumb-2
  ARM: 6914/1: sparsemem: fix highmem detection when using SPARSEMEM
  ARM: 6913/1: sparsemem: allow pfn_valid to be overridden when using SPARSEMEM
  at91: drop at572d940hf support
  at91rm9200: introduce at91rm9200_set_type to specficy cpu package
  at91: drop boot_params and PLAT_PHYS_OFFSET
  ...
parents 46f2cc80 239df0fd
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -65,13 +65,19 @@ looks at the connected hardware is beyond the scope of this document.
The boot loader must ultimately be able to provide a MACH_TYPE_xxx
value to the kernel. (see linux/arch/arm/tools/mach-types).


4. Setup the kernel tagged list
-------------------------------
4. Setup boot data
------------------

Existing boot loaders:		OPTIONAL, HIGHLY RECOMMENDED
New boot loaders:		MANDATORY

The boot loader must provide either a tagged list or a dtb image for
passing configuration data to the kernel.  The physical address of the
boot data is passed to the kernel in register r2.

4a. Setup the kernel tagged list
--------------------------------

The boot loader must create and initialise the kernel tagged list.
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE.
The ATAG_CORE tag may or may not be empty.  An empty ATAG_CORE tag
@@ -101,6 +107,24 @@ The tagged list must be placed in a region of memory where neither
the kernel decompressor nor initrd 'bootp' program will overwrite
it.  The recommended placement is in the first 16KiB of RAM.

4b. Setup the device tree
-------------------------

The boot loader must load a device tree image (dtb) into system ram
at a 64bit aligned address and initialize it with the boot data.  The
dtb format is documented in Documentation/devicetree/booting-without-of.txt.
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb
physical address to determine if a dtb has been passed instead of a
tagged list.

The boot loader must pass at a minimum the size and location of the
system memory, and the root filesystem location.  The dtb must be
placed in a region of memory where the kernel decompressor will not
overwrite it.  The recommended placement is in the first 16KiB of RAM
with the caveat that it may not be located at physical address 0 since
the kernel interprets a value of 0 in r2 to mean neither a tagged list
nor a dtb were passed.

5. Calling the kernel image
---------------------------

@@ -125,7 +149,8 @@ In either case, the following conditions must be met:
- CPU register settings
  r0 = 0,
  r1 = machine type number discovered in (3) above.
  r2 = physical address of tagged list in system RAM.
  r2 = physical address of tagged list in system RAM, or
       physical address of device tree block (dtb) in system RAM

- CPU mode
  All forms of interrupts must be disabled (IRQs and FIQs)
+0 −2
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@ Introduction
  - S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list
  - S3C64XX: S3C6400 and S3C6410
  - S5P6440
  - S5P6442
  - S5PC100
  - S5PC110 / S5PV210

@@ -36,7 +35,6 @@ Configuration
  unifying all the SoCs into one kernel.

  s5p6440_defconfig - S5P6440 specific default configuration
  s5p6442_defconfig - S5P6442 specific default configuration
  s5pc100_defconfig - S5PC100 specific default configuration
  s5pc110_defconfig - S5PC110 specific default configuration
  s5pv210_defconfig - S5PV210 specific default configuration
+44 −4
Original line number Diff line number Diff line
@@ -12,8 +12,9 @@ Table of Contents
=================

  I - Introduction
    1) Entry point for arch/powerpc
    2) Entry point for arch/x86
    1) Entry point for arch/arm
    2) Entry point for arch/powerpc
    3) Entry point for arch/x86

  II - The DT block format
    1) Header
@@ -148,7 +149,46 @@ upgrades without significantly impacting the kernel code or cluttering
it with special cases.


1) Entry point for arch/powerpc
1) Entry point for arch/arm
---------------------------

   There is one single entry point to the kernel, at the start
   of the kernel image. That entry point supports two calling
   conventions.  A summary of the interface is described here.  A full
   description of the boot requirements is documented in
   Documentation/arm/Booting

        a) ATAGS interface.  Minimal information is passed from firmware
        to the kernel with a tagged list of predefined parameters.

                r0 : 0

                r1 : Machine type number

                r2 : Physical address of tagged list in system RAM

        b) Entry with a flattened device-tree block.  Firmware loads the
        physical address of the flattened device tree block (dtb) into r2,
        r1 is not used, but it is considered good practise to use a valid
        machine number as described in Documentation/arm/Booting.

                r0 : 0

                r1 : Valid machine type number.  When using a device tree,
                a single machine type number will often be assigned to
                represent a class or family of SoCs.

                r2 : physical pointer to the device-tree block
                (defined in chapter II) in RAM.  Device tree can be located
                anywhere in system RAM, but it should be aligned on a 64 bit
                boundary.

   The kernel will differentiate between ATAGS and device tree booting by
   reading the memory pointed to by r2 and looking for either the flattened
   device tree block magic value (0xd00dfeed) or the ATAG_CORE value at
   offset 0x4 from r2 (0x54410001).

2) Entry point for arch/powerpc
-------------------------------

   There is one single entry point to the kernel, at the start
@@ -226,7 +266,7 @@ it with special cases.
  cannot support both configurations with Book E and configurations
  with classic Powerpc architectures.

2) Entry point for arch/x86
3) Entry point for arch/x86
-------------------------------

  There is one single 32bit entry point to the kernel at code32_start,
+14 −15
Original line number Diff line number Diff line
@@ -294,6 +294,8 @@ config ARCH_AT91
	bool "Atmel AT91"
	select ARCH_REQUIRE_GPIOLIB
	select HAVE_CLK
	select CLKDEV_LOOKUP
	select ARM_PATCH_PHYS_VIRT if MMU
	help
	  This enables support for systems based on the Atmel AT91RM9200,
	  AT91SAM9 and AT91CAP9 processors.
@@ -730,16 +732,6 @@ config ARCH_S5P64X0
	  Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
	  SMDK6450.

config ARCH_S5P6442
	bool "Samsung S5P6442"
	select CPU_V6
	select GENERIC_GPIO
	select HAVE_CLK
	select ARCH_USES_GETTIMEOFFSET
	select HAVE_S3C2410_WATCHDOG if WATCHDOG
	help
	  Samsung S5P6442 CPU based systems

config ARCH_S5PC100
	bool "Samsung S5PC100"
	select GENERIC_GPIO
@@ -991,8 +983,6 @@ endif

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

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

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

source "arch/arm/mach-s5pv210/Kconfig"
@@ -1399,7 +1389,6 @@ config NR_CPUS
config HOTPLUG_CPU
	bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
	depends on SMP && HOTPLUG && EXPERIMENTAL
	depends on !ARCH_MSM
	help
	  Say Y here to experiment with turning CPUs off and on.  CPUs
	  can be controlled through /sys/devices/system/cpu.
@@ -1420,7 +1409,7 @@ source kernel/Kconfig.preempt
config HZ
	int
	default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \
		ARCH_S5P6442 || ARCH_S5PV210 || ARCH_EXYNOS4
		ARCH_S5PV210 || ARCH_EXYNOS4
	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
@@ -1516,6 +1505,9 @@ config ARCH_SPARSEMEM_DEFAULT
config ARCH_SELECT_MEMORY_MODEL
	def_bool ARCH_SPARSEMEM_ENABLE

config HAVE_ARCH_PFN_VALID
	def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM

config HIGHMEM
	bool "High Memory Support"
	depends on MMU
@@ -1683,6 +1675,13 @@ endmenu

menu "Boot options"

config USE_OF
	bool "Flattened Device Tree support"
	select OF
	select OF_EARLY_FLATTREE
	help
	  Include support for flattened device tree machine descriptions.

# Compressed boot loader in ROM.  Yes, we really want to ask about
# TEXT and BSS so we preserve their values in the config files.
config ZBOOT_ROM_TEXT
@@ -2021,7 +2020,7 @@ menu "Power management options"
source "kernel/power/Kconfig"

config ARCH_SUSPEND_POSSIBLE
	depends on !ARCH_S5P64X0 && !ARCH_S5P6442 && !ARCH_S5PC100
	depends on !ARCH_S5P64X0 && !ARCH_S5PC100
	depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
		CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
	def_bool y
+0 −1
Original line number Diff line number Diff line
@@ -176,7 +176,6 @@ machine-$(CONFIG_ARCH_S3C2410) := s3c2410 s3c2400 s3c2412 s3c2416 s3c2440 s3c24
machine-$(CONFIG_ARCH_S3C24A0)		:= s3c24a0
machine-$(CONFIG_ARCH_S3C64XX)		:= s3c64xx
machine-$(CONFIG_ARCH_S5P64X0)		:= s5p64x0
machine-$(CONFIG_ARCH_S5P6442)		:= s5p6442
machine-$(CONFIG_ARCH_S5PC100)		:= s5pc100
machine-$(CONFIG_ARCH_S5PV210)		:= s5pv210
machine-$(CONFIG_ARCH_EXYNOS4)		:= exynos4
Loading