Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 187430
b: refs/heads/master
c: 5601280
h: refs/heads/master
v: v3
  • Loading branch information
Russell King committed Feb 15, 2010
1 parent 1a1d7e4 commit 359a3f4
Show file tree
Hide file tree
Showing 177 changed files with 9,820 additions and 2,214 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b2a731aa5cbca7e0252da75e16de7ae5feb1313a
refs/heads/master: 56012808f4d5606e401539f663d92009d964425b
86 changes: 86 additions & 0 deletions trunk/Documentation/arm/Samsung/Overview.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
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 changes: 167 additions & 0 deletions trunk/Documentation/arm/Samsung/clksrc-change-registers.awk
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
#!/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 }
13 changes: 12 additions & 1 deletion trunk/arch/arm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,14 @@ config ARCH_S3C64XX
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_S5PC1XX
bool "Samsung S5PC1XX"
select GENERIC_GPIO
Expand Down Expand Up @@ -806,6 +814,7 @@ 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
Expand All @@ -822,6 +831,8 @@ source "arch/arm/mach-s3c6400/Kconfig"
source "arch/arm/mach-s3c6410/Kconfig"
endif

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

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

if ARCH_S5PC1XX
Expand Down Expand Up @@ -1075,7 +1086,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
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
default AT91_TIMER_HZ if ARCH_AT91
default 100
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ machine-$(CONFIG_ARCH_RPC) := rpc
machine-$(CONFIG_ARCH_S3C2410) := s3c2410 s3c2400 s3c2412 s3c2440 s3c2442 s3c2443
machine-$(CONFIG_ARCH_S3C24A0) := s3c24a0
machine-$(CONFIG_ARCH_S3C64XX) := s3c6400 s3c6410
machine-$(CONFIG_ARCH_S5P6440) := s5p6440
machine-$(CONFIG_ARCH_S5PC1XX) := s5pc100
machine-$(CONFIG_ARCH_SA1100) := sa1100
machine-$(CONFIG_ARCH_SHARK) := shark
Expand All @@ -185,6 +186,7 @@ plat-$(CONFIG_PLAT_PXA) := pxa
plat-$(CONFIG_PLAT_S3C24XX) := s3c24xx s3c samsung
plat-$(CONFIG_PLAT_S3C64XX) := s3c64xx s3c samsung
plat-$(CONFIG_PLAT_S5PC1XX) := s5pc1xx s3c samsung
plat-$(CONFIG_PLAT_S5P) := s5p samsung s3c

ifeq ($(CONFIG_ARCH_EBSA110),y)
# This is what happens if you forget the IOCS16 line.
Expand Down
6 changes: 3 additions & 3 deletions trunk/arch/arm/configs/mini2440_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ CONFIG_S3C24XX_PWM=y
CONFIG_S3C24XX_GPIO_EXTRA=0
CONFIG_S3C2410_DMA=y
# CONFIG_S3C2410_DMA_DEBUG is not set
CONFIG_S3C24XX_ADC=y
CONFIG_S3C_ADC=y
CONFIG_PLAT_S3C=y
CONFIG_CPU_LLSERIAL_S3C2440_ONLY=y
CONFIG_CPU_LLSERIAL_S3C2440=y
Expand All @@ -199,8 +199,8 @@ CONFIG_S3C_BOOT_UART_FORCE_FIFO=y
#
# Power management
#
# CONFIG_S3C2410_PM_DEBUG is not set
# CONFIG_S3C2410_PM_CHECK is not set
# CONFIG_SAMSUNG_PM_DEBUG is not set
# CONFIG_SAMSUNG_PM_CHECK is not set
CONFIG_S3C_LOWLEVEL_UART_PORT=0
CONFIG_S3C_GPIO_SPACE=0

Expand Down
Loading

0 comments on commit 359a3f4

Please sign in to comment.