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

Commit dca1d9f6 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: (370 commits)
  ARM: S3C2443: Add set_rate and round_rate calls for armdiv clock
  ARM: S3C2443: Remove #if 0 for clk_mpll
  ARM: S3C2443: Update notes on MPLLREF clock
  ARM: S3C2443: Further clksrc-clk conversions
  ARM: S3C2443: Change to using plat-samsung clksrc-clk implementation
  USB: Fix s3c-hsotg build following Samsung platform header moves
  ARM: S3C64XX: Reintroduce unconditional build of audio device
  ARM: 5961/1: ux500: fix CLKRST addresses
  ARM: 5977/1: arm: Enable backtrace printing on oops when PC is corrupted
  ASoC: Fix S3C64xx IIS driver for Samsung header reorg
  ARM: S3C2440: Fix plat-s3c24xx move of s3c2440/s3c2442 support
  [ARM] pxa: fix typo in mxm8x10.h
  [ARM] pxa/raumfeld: set GPIO drive bits for LED pins
  [ARM] pxa/zeus: Add support for mcp2515 CAN bus
  [ARM] pxa/zeus: Add support for onboard max6369 watchdog
  [ARM] pxa/zeus: Add Eurotech as the manufacturer
  [ARM] pxa/zeus: Correct the USB host initialisation flags
  [ARM] pxa/zeus: Allow usage of 8250-compatible UART in uncompress
  [ARM] pxa: refactor uncompress.h for non-PXA uarts
  [ARM] mmp2: fix incorrect calling of chip->mask_ack() for 2nd level cascaded IRQs
  ...
parents 9ff99339 91e01382
Loading
Loading
Loading
Loading
+86 −0
Original line number Diff line number Diff line
		Samsung ARM Linux Overview
		==========================

Introduction
------------

  The Samsung range of ARM SoCs spans many similar devices, from the initial
  ARM9 through to the newest ARM cores. This document shows an overview of
  the current kernel support, how to use it and where to find the code
  that supports this.

  The currently supported SoCs are:

  - S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list
  - S3C64XX: S3C6400 and S3C6410
  - S5PC6440

  S5PC100 and S5PC110 support is currently being merged


S3C24XX Systems
---------------

  There is still documentation in Documnetation/arm/Samsung-S3C24XX/ which
  deals with the architecture and drivers specific to these devices.

  See Documentation/arm/Samsung-S3C24XX/Overview.txt for more information
  on the implementation details and specific support.


Configuration
-------------

  A number of configurations are supplied, as there is no current way of
  unifying all the SoCs into one kernel.

  s5p6440_defconfig - S5P6440 specific default configuration
  s5pc100_defconfig - S5PC100 specific default configuration


Layout
------

  The directory layout is currently being restructured, and consists of
  several platform directories and then the machine specific directories
  of the CPUs being built for.

  plat-samsung provides the base for all the implementations, and is the
  last in the line of include directories that are processed for the build
  specific information. It contains the base clock, GPIO and device definitions
  to get the system running.

  plat-s3c is the s3c24xx/s3c64xx platform directory, although it is currently
  involved in other builds this will be phased out once the relevant code is
  moved elsewhere.

  plat-s3c24xx is for s3c24xx specific builds, see the S3C24XX docs.

  plat-s3c64xx is for the s3c64xx specific bits, see the S3C24XX docs.

  plat-s5p is for s5p specific builds, more to be added.


  [ to finish ]


Port Contributors
-----------------

  Ben Dooks (BJD)
  Vincent Sanders
  Herbert Potzl
  Arnaud Patard (RTP)
  Roc Wu
  Klaus Fetscher
  Dimitry Andric
  Shannon Holland
  Guillaume Gourat (NexVision)
  Christer Weinigel (wingel) (Acer N30)
  Lucas Correia Villa Real (S3C2400 port)


Document Author
---------------

Copyright 2009-2010 Ben Dooks <ben-linux@fluff.org>
+167 −0
Original line number Diff line number Diff line
#!/usr/bin/awk -f
#
# Copyright 2010 Ben Dooks <ben-linux@fluff.org>
#
# Released under GPLv2

# example usage
# ./clksrc-change-registers.awk arch/arm/plat-s5pc1xx/include/plat/regs-clock.h < src > dst

function extract_value(s)
{
    eqat = index(s, "=")
    comat = index(s, ",")
    return substr(s, eqat+2, (comat-eqat)-2)
}

function remove_brackets(b)
{
    return substr(b, 2, length(b)-2)
}

function splitdefine(l, p)
{
    r = split(l, tp)

    p[0] = tp[2]
    p[1] = remove_brackets(tp[3])
}

function find_length(f)
{
    if (0)
	printf "find_length " f "\n" > "/dev/stderr"

    if (f ~ /0x1/)
	return 1
    else if (f ~ /0x3/)
	return 2
    else if (f ~ /0x7/)
	return 3
    else if (f ~ /0xf/)
	return 4

    printf "unknown legnth " f "\n" > "/dev/stderr"
    exit
}

function find_shift(s)
{
    id = index(s, "<")
    if (id <= 0) {
	printf "cannot find shift " s "\n" > "/dev/stderr"
	exit
    }

    return substr(s, id+2)
}


BEGIN {
    if (ARGC < 2) {
	print "too few arguments" > "/dev/stderr"
	exit
    }

# read the header file and find the mask values that we will need
# to replace and create an associative array of values

    while (getline line < ARGV[1] > 0) {
	if (line ~ /\#define.*_MASK/ &&
	    !(line ~ /S5PC100_EPLL_MASK/) &&
	    !(line ~ /USB_SIG_MASK/)) {
	    splitdefine(line, fields)
	    name = fields[0]
	    if (0)
		printf "MASK " line "\n" > "/dev/stderr"
	    dmask[name,0] = find_length(fields[1])
	    dmask[name,1] = find_shift(fields[1])
	    if (0)
		printf "=> '" name "' LENGTH=" dmask[name,0] " SHIFT=" dmask[name,1] "\n" > "/dev/stderr"
	} else {
	}
    }

    delete ARGV[1]
}

/clksrc_clk.*=.*{/ {
    shift=""
    mask=""
    divshift=""
    reg_div=""
    reg_src=""
    indent=1

    print $0

    for(; indent >= 1;) {
	if ((getline line) <= 0) {
	    printf "unexpected end of file" > "/dev/stderr"
	    exit 1;
	}

	if (line ~ /\.shift/) {
	    shift = extract_value(line)
	} else if (line ~ /\.mask/) {
	    mask = extract_value(line)
	} else if (line ~ /\.reg_divider/) {
	    reg_div = extract_value(line)
	} else if (line ~ /\.reg_source/) {
	    reg_src = extract_value(line)
	} else if (line ~ /\.divider_shift/) {
	    divshift = extract_value(line)
	} else if (line ~ /{/) {
		indent++
		print line
	    } else if (line ~ /}/) {
	    indent--

	    if (indent == 0) {
		if (0) {
		    printf "shift '" shift   "' ='" dmask[shift,0] "'\n" > "/dev/stderr"
		    printf "mask  '" mask    "'\n" > "/dev/stderr"
		    printf "dshft '" divshift "'\n" > "/dev/stderr"
		    printf "rdiv  '" reg_div "'\n" > "/dev/stderr"
		    printf "rsrc  '" reg_src "'\n" > "/dev/stderr"
		}

		generated = mask
		sub(reg_src, reg_div, generated)

		if (0) {
		    printf "/* rsrc " reg_src " */\n"
		    printf "/* rdiv " reg_div " */\n"
		    printf "/* shift " shift " */\n"
		    printf "/* mask " mask " */\n"
		    printf "/* generated " generated " */\n"
		}

		if (reg_div != "") {
		    printf "\t.reg_div = { "
		    printf ".reg = " reg_div ", "
		    printf ".shift = " dmask[generated,1] ", "
		    printf ".size = " dmask[generated,0] ", "
		    printf "},\n"
		}

		printf "\t.reg_src = { "
		printf ".reg = " reg_src ", "
		printf ".shift = " dmask[mask,1] ", "
		printf ".size = " dmask[mask,0] ", "

		printf "},\n"

	    }

	    print line
	} else {
	    print line
	}

	if (0)
	    printf indent ":" line "\n" > "/dev/stderr"
    }
}

// && ! /clksrc_clk.*=.*{/ { print $0 }
+23 −0
Original line number Diff line number Diff line
@@ -666,6 +666,12 @@ T: git://git.pengutronix.de/git/imx/linux-2.6.git
F:	arch/arm/mach-mx*/
F:	arch/arm/plat-mxc/

ARM/FREESCALE IMX51
M:	Amit Kucheria <amit.kucheria@canonical.com>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S:	Maintained
F:	arch/arm/mach-mx5/

ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
M:	Lennert Buytenhek <kernel@wantstofly.org>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -939,6 +945,16 @@ W: http://www.fluff.org/ben/linux/
S:	Maintained
F:	arch/arm/mach-s3c6410/

ARM/SHMOBILE ARM ARCHITECTURE
M:	Paul Mundt <lethal@linux-sh.org>
M:	Magnus Damm <magnus.damm@gmail.com>
L:	linux-sh@vger.kernel.org
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
W:	http://oss.renesas.com
S:	Supported
F:	arch/arm/mach-shmobile/
F:	drivers/sh/

ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
M:	Lennert Buytenhek <kernel@wantstofly.org>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -4502,6 +4518,13 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
S:	Maintained

MMP2 SUPPORT (aka ARMADA610)
M:	Haojian Zhuang <haojian.zhuang@marvell.com>
M:	Eric Miao <eric.y.miao@gmail.com>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
S:	Maintained

PXA MMCI DRIVER
S:	Orphan

+60 −11
Original line number Diff line number Diff line
@@ -324,10 +324,9 @@ config ARCH_MXC
	bool "Freescale MXC/iMX-based"
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select ARCH_MTD_XIP
	select GENERIC_GPIO
	select ARCH_REQUIRE_GPIOLIB
	select HAVE_CLK
	select COMMON_CLKDEV
	help
	  Support for Freescale MXC/iMX-based family of processors

@@ -511,7 +510,7 @@ config ARCH_ORION5X
	  Orion-2 (5281), Orion-1-90 (6183).

config ARCH_MMP
	bool "Marvell PXA168/910"
	bool "Marvell PXA168/910/MMP2"
	depends on MMU
	select GENERIC_GPIO
	select ARCH_REQUIRE_GPIOLIB
@@ -522,7 +521,7 @@ config ARCH_MMP
	select TICK_ONESHOT
	select PLAT_PXA
	help
	  Support for Marvell's PXA168/910 processor line.
	  Support for Marvell's PXA168/PXA910(MMP) and MMP2 processor line.

config ARCH_KS8695
	bool "Micrel/Kendin KS8695"
@@ -608,6 +607,11 @@ config ARCH_MSM
	  interface to the ARM9 modem processor which runs the baseband stack
	  and controls some vital subsystems (clock and power control, etc).

config ARCH_SHMOBILE
	bool "Renesas SH-Mobile"
	help
	  Support for Renesas's SH-Mobile ARM platforms

config ARCH_RPC
	bool "RiscPC"
	select ARCH_ACORN
@@ -651,12 +655,43 @@ config ARCH_S3C2410

config ARCH_S3C64XX
	bool "Samsung S3C64XX"
	select PLAT_SAMSUNG
	select CPU_V6
	select GENERIC_GPIO
	select ARM_VIC
	select HAVE_CLK
	select NO_IOPORT
	select ARCH_HAS_CPUFREQ
	select ARCH_REQUIRE_GPIOLIB
	select SAMSUNG_CLKSRC
	select SAMSUNG_IRQ_VIC_TIMER
	select SAMSUNG_IRQ_UART
	select S3C_GPIO_TRACK
	select S3C_GPIO_PULL_UPDOWN
	select S3C_GPIO_CFG_S3C24XX
	select S3C_GPIO_CFG_S3C64XX
	select S3C_DEV_NAND
	select USB_ARCH_HAS_OHCI
	select SAMSUNG_GPIOLIB_4BIT
	help
	  Samsung S3C64XX series based systems

config ARCH_S5P6440
	bool "Samsung S5P6440"
	select CPU_V6
	select GENERIC_GPIO
	select HAVE_CLK
	help
	  Samsung S5P6440 CPU based systems

config ARCH_S5P6442
	bool "Samsung S5P6442"
	select CPU_V6
	select GENERIC_GPIO
	select HAVE_CLK
	help
	  Samsung S5P6442 CPU based systems

config ARCH_S5PC1XX
	bool "Samsung S5PC1XX"
	select GENERIC_GPIO
@@ -666,6 +701,15 @@ config ARCH_S5PC1XX
	help
	  Samsung S5PC1XX series based systems

config ARCH_S5PV210
	bool "Samsung S5PV210/S5PC110"
	select CPU_V7
	select GENERIC_GPIO
	select HAVE_CLK
	select ARM_L1_CACHE_SHIFT_6
	help
	  Samsung S5PV210/S5PC110 series based systems

config ARCH_SHARK
	bool "Shark"
	select CPU_SA110
@@ -831,8 +875,7 @@ source "arch/arm/mach-sa1100/Kconfig"

source "arch/arm/plat-samsung/Kconfig"
source "arch/arm/plat-s3c24xx/Kconfig"
source "arch/arm/plat-s3c64xx/Kconfig"
source "arch/arm/plat-s3c/Kconfig"
source "arch/arm/plat-s5p/Kconfig"
source "arch/arm/plat-s5pc1xx/Kconfig"

if ARCH_S3C2410
@@ -840,21 +883,27 @@ source "arch/arm/mach-s3c2400/Kconfig"
source "arch/arm/mach-s3c2410/Kconfig"
source "arch/arm/mach-s3c2412/Kconfig"
source "arch/arm/mach-s3c2440/Kconfig"
source "arch/arm/mach-s3c2442/Kconfig"
source "arch/arm/mach-s3c2443/Kconfig"
endif

if ARCH_S3C64XX
source "arch/arm/mach-s3c6400/Kconfig"
source "arch/arm/mach-s3c6410/Kconfig"
source "arch/arm/mach-s3c64xx/Kconfig"
endif

source "arch/arm/plat-stmp3xxx/Kconfig"
source "arch/arm/mach-s5p6440/Kconfig"

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

if ARCH_S5PC1XX
source "arch/arm/mach-s5pc100/Kconfig"
endif

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

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

source "arch/arm/plat-stmp3xxx/Kconfig"

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

source "arch/arm/mach-ux500/Kconfig"
@@ -1120,7 +1169,7 @@ source kernel/Kconfig.preempt
config HZ
	int
	default 128 if ARCH_L7200
	default 200 if ARCH_EBSA110 || ARCH_S3C2410
	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 100
+1 −1
Original line number Diff line number Diff line
@@ -117,7 +117,7 @@ config DEBUG_CLPS711X_UART2
	  cause the debug messages to appear on the first serial port.

config DEBUG_S3C_UART
	depends on PLAT_S3C
	depends on PLAT_SAMSUNG
	int "S3C UART to use for low-level debug"
	default "0"
	help
Loading