Commit Graph

60 Commits

Author SHA1 Message Date
Ben Dooks
bd117bd161 [ARM] S3C64XX: Initial support for PM (suspend to RAM)
Add the initial support for the S3C64XX based systems to use
suspend-to-RAM to sleep.

Includes basic debugging for use with the SMDK6410 usign the
LEDs on the baseboard.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-05-07 11:04:55 +01:00
Ben Dooks
67b3e542ab [ARM] S3C64XX: Add USB OHCI support
Add USB OHCI host definitions.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-05-07 11:04:55 +01:00
Ben Dooks
1288b670e6 [ARM] S3C64XX: add AHB_CON and SPCON register address definitions
Add the address definitions for S3C64XX_AHB_CONx and
SPCON registers for use in the PM code.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:33:42 +00:00
Ben Dooks
36d543a3b5 [ARM] S3C64XX: Add definitions for the GPIO memory port configurations
Add defines for the registers that control the GPIO pins that are
run the memory interface.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:33:26 +00:00
Ben Dooks
2ae0b117a6 [ARM] S3C64XX: SYSCON power and sleep control register defines
Add the register defines for the sleep and power control
functions in the S3C64XX SYSCON register block.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:33:08 +00:00
Ben Dooks
2454e524bc [ARM] S3C64XX: Add S3C64XX_SPCON register bit definitions
Add the definitions for the SPCON register in the
GPIO block.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:30:44 +00:00
Ben Dooks
e383707131 [ARM] S3C64XX: Add GPIO SPCONSLP and SLPEN register definitions
Add GPIO register definitions for SPCONSLP and SLPEN
for controlling the state of the pins over sleep.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:30:27 +00:00
Ben Dooks
333053733f [ARM] S3C64XX: Add EINT group regs and move IRQ_EINT to regs-gpio.h
Add definitions for the EINT group registers and move the EINT IRQ
register definitions out of arch/arm/plat-s3c64xx/irq-eint.c so that
they are available for re-use with PM and the other code.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:29:11 +00:00
Ben Dooks
5b3d515fcf [ARM] S3C64XX: Add modem registers and a virtual map
Add the modem registers and a virtual mapping for the
modem block. This is is required as there are registers
that control the LCD block that need to be saved over
suspend as well as interrupt controls.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-03-10 16:26:52 +00:00
Ben Dooks
1264fa6f8c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into s3c-fixes 2009-03-06 17:13:52 +00:00
Werner Almesberger
efeff56867 [ARM] S3C64XX: Fix s3c64xx_setrate_clksrc
Some of the rate selection logic in s3c64xx_setrate_clksrc uses what
appears to be parent clock selection logic. This patch corrects it.

I also added a check for overly large dividers to prevent them from
changing unrelated clocks.

Signed-off-by: Werner Almesberger <werner@openmoko.org>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-27 11:34:01 +00:00
Ben Dooks
fdca9bf2da [ARM] S3C64XX: sparse warnings in arch/arm/plat-s3c64xx/irq.c
Fix the following sparse warnings in arch/arm/plat-s3c64xx/irq.c

arch/arm/plat-s3c64xx/irq.c:210:23: warning: incorrect type in initializer (different address spaces)
arch/arm/plat-s3c64xx/irq.c:210:23:    expected void *reg_base
arch/arm/plat-s3c64xx/irq.c:210:23:    got void [noderef] <asn:2>*regs
arch/arm/plat-s3c64xx/irq.c:215:2: warning: incorrect type in argument 1 (different address spaces)
arch/arm/plat-s3c64xx/irq.c:215:2:    expected void const volatile [noderef] <asn:2>*<noident>
arch/arm/plat-s3c64xx/irq.c:215:2:    got void *

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-27 11:29:23 +00:00
Ben Dooks
3782d36055 [ARM] S3C64XX: sparse warnings in arch/arm/plat-s3c64xx/s3c6400-clock.c
Fix the following sparse warnings in s3c6400-clock.c:

39:12: warning: symbol 'clk_ext_xtal_mux' was not declared. Should it be static?
66:12: warning: symbol 'clk_fout_apll' was not declared. Should it be static?
81:19: warning: symbol 'clk_mout_apll' was not declared. Should it be static?
91:12: warning: symbol 'clk_fout_epll' was not declared. Should it be static?
106:19: warning: symbol 'clk_mout_epll' was not declared. Should it be static?
126:19: warning: symbol 'clk_mout_mpll' was not declared. Should it be static?
148:12: warning: symbol 'clk_dout_mpll' was not declared. Should it be static?

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-27 11:25:37 +00:00
Ben Dooks
41ba41d7c7 [ARM] S3C64XX: Fix USB host clock mux list
The clock list for the USB host bus clock was in the wrong order,
move clk_48m to position 0.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:25:51 +00:00
Ben Dooks
19c5957081 [ARM] S3C64XX: Fix name of USB host clock.
The usb-host-bus clock should be named usb-bus-host.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:25:51 +00:00
Ben Dooks
4271c3bd46 [ARM] S3C64XX: Rename IRQ_UHOST to IRQ_USBH
The USB OHCI host device expects the IRQ definition to be named
IRQ_USBH, so rename the S3C64XX IRQ header to match.

Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:25:51 +00:00
Mark Brown
24d4076734 [ARM] S3C64XX: Do gpiolib configuration earlier
arch_initcall() runs after the machine init function which means that
any configuration of GPIO pins must currently be done later on, for
example in callbacks from drivers. Move the initialisation earlier in
order to allow machines to configure GPIOs directly in their init
functions rather than having to have a callback invoked later on.

Some other ARM platforms use this method. Other solutions for this
include providing a special interface for setting up GPIOs en masse,
adding callbacks to do the GPIO configuration from devices and doing
the GPIO configuration implicitly.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:21:50 +00:00
Mark Brown
8bd8dbdf37 [ARM] S3C64XX: Staticise s3c64xx_init_irq_eint()
It's an initcall and does not need to be exported.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:21:50 +00:00
Mark Brown
789b4ad36c [ARM] S3C64XX: Fix section mismatch for s3c64xx_register_clocks()
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:16:38 +00:00
Ben Dooks
28fd2d397b [ARM] S3C64XX: Set GPIO pin when select IRQ_EINT type
Set the GPIO pin mode to external interrupt when configuring
an IRQ_EINT's IRQ type.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-02-26 23:08:59 +00:00
Mark Brown
c8532db7f2 [ARM] 5411/1: S3C64XX: Fix EINT unmask
Currently the unmask function for EINT interrupts was setting the mask
bit rather than clearing it.  This was also previously reported and
fixed by Kyungmin Park <kyungmin.park@samsung.com> and others.

Acked-By: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2009-02-24 19:12:31 +00:00
Matt Hsu
43a55cdffc [ARM] S3C64XX: Fix EINT group macro definition
Fix IRQ_EINT_GROUP which has an extra _ in it and
an error in the IRQ offset.

Signed-off-by: Matt Hsu <matt_hsu@openmoko.org>
[ben-linux@fluff.org: rewrite description]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2009-01-08 16:25:24 +00:00
Ben Dooks
7bb56d01f1 [ARM] S3C64XX: Ensure CPU_V6 is selected
Select CPU_V6 with the S3C64XX series.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-18 22:06:42 +00:00
Ben Dooks
6a148eaa20 [ARM] S3C: Remove unnecessary <linux/delay.h> includes
As per Russell King's last review comment, find and remove
all unnecessary includes of <linux/delay.h> in the files
that do not need them.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-18 16:36:02 +00:00
Ben Dooks
56c035c9ce Merge branch 'next-s3c64xx-device' into next-merged
Conflicts:

	arch/arm/mach-s3c2440/mach-at2440evb.c
2008-12-18 16:17:37 +00:00
Matt Hsu
a9c5d23ac7 [ARM] S3C64XX: Correct the EINT IRQ type configuration
Select the correct EINT configuration register when configuring
the external interrupt level/edge type.

Signed-off-by: Matt Hsu <matt_hsu@openmoko.org>
[ben-linux@fluff.org: description improvement]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-16 10:19:26 +00:00
Kyungmin Park
11e3bd0923 [ARM] S3C64XX: Mask the pll values correctly
Correct the PLL field masks to ensure the PLL functions return the
right value.

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
[ben-linux@fluff.org: improve the description text]
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-16 10:19:13 +00:00
Ben Dooks
9d325f2341 [ARM] S3C: Update time initialisation to fix S3C64XX time problems
The S3C64XX timer is running at the wrong rate due to the
assumptions made in the timer initialisation about the way
the pwm dividers work. This means that time on the S3C64XX
runs twice as fast as it should.

Fix the problem by moving to using the clk framework to setup
the pwm timer clock muxes, as the pwm-clock code has all the
necessary knowledge of how the timer clock inputs are routed.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-16 10:13:02 +00:00
Ben Dooks
c7a0401e61 [ARM] S3C64XX: Add standard S3C64XX 24BPP LCD GPIO setup
Add a standard helper to configure the LCD output pins for a 24BPP
display with VSYNC/HSYNC/VDEN.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:57:19 +00:00
Ben Dooks
1aba834da1 [ARM] S3C: Add i2c1 device definition
Add device definition and support functions for the
second i2c device (i2c1). If this is selected, the first
i2c bus will become index 0 instead of index -1.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:56:41 +00:00
Ben Dooks
44539a7112 [ARM] S3C64XX: Fix MMC0 clock source register mask
Fix the definition of the MMC0 register shift and mask in the
CLKSRC register.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:50:22 +00:00
Ben Dooks
f9e2f3453c [ARM] S3C64XX: Setup functions for i2c bus 1.
Add common gpio setup for i2c bus 1 on all current
S3C64XX architectures.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:43:29 +00:00
Ben Dooks
55132b8b46 [ARM] S3C64XX: Add i2c device setup for I2C device 0
Add the necessary device initialisation information
for I2C device 0.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:42:21 +00:00
Ben Dooks
26da1bfc56 [ARM] S3C64XX: GPIO definitions for BANKS N,O,P,Q
GPIO register and configuration definitions for GPIO
banks N, O, P and Q.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:41:50 +00:00
Ben Dooks
4162d7e363 [ARM] S3C64XX: GPIO definitions for BANKS G,H,I,J
GPIO register and configuration definitions for GPIO
banks G, H, I and J.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:41:17 +00:00
Ben Dooks
b9f2d172f2 [ARM] S3C64XX: GPIO definitions for BANKS D,E,F
GPIO register and configuration definitions for GPIO
banks D, E and F.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:41:10 +00:00
Ben Dooks
995deb638d [ARM] S3C64XX: GPIO definitions for BANKS A,B,C
GPIO register and configuration definitions for GPIO
banks A, B and C.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:40:56 +00:00
Ben Dooks
3627379fc6 [ARM] S3C6XX: Add enable for clk_48
Add apropriate enable call for clk_48m.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:36:29 +00:00
Ben Dooks
1451325ced [ARM] S3C6400: Register clk_fout_epll
The clk_fout_epll clock wasn't registered as part of the initial clock
work, which can cause problems if it is used by one of the hardware
blocks.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:36:22 +00:00
Ben Dooks
21b23664b9 [ARM] S3C: Add new GPIO configuration calls
Add new GPIO configuration calls that mesh with the
new gpiolib support.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:34:15 +00:00
Ben Dooks
89d043c3db [ARM] S3C64XX: GPIO library support
Add gpiolib registration for the GPIOs available on the
S3C64XX platform

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:33:59 +00:00
Ben Dooks
8a53bdb907 [ARM] S3C: Add GPIO chip tracking
The gpiolib driver keeps its chip array to itself
and having a separate array for s3c-only gpios stops
any non-s3c gpio being used in one of the s3c specific
configuration calls.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:33:42 +00:00
Ben Dooks
8cdf47cb4b [ARM] S3C64XX: Add external interrupt group definitions
Add definitions for the external interrupt groups which accompany
the original IRQ_EINT from the s3c24xx series.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:19:49 +00:00
Ben Dooks
f945ee13cf [ARM] S3C64XX: Fix warnings from map_io initilaisers
Discard the 'void *' from the pointers used for the
virtual addresses when setting up the .virtual fields
of the io map to avoid implicit cast warnings

Signed-off-by: Ben Dooks <ben-linux@fluff.org>

 Index: linux.git/arch/arm/plat-s3c64xx/cpu.c
===================================================================
2008-12-15 23:19:35 +00:00
Ben Dooks
39669f594e [ARM] S3C64XX: Reduce some output from INFO to DEBUG
Some of the startup output can be reduced to
KERN_DEBUG from KERN_INFO as it is only really
useful when trying to debug kernel initialisation
problems.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:18:21 +00:00
Ben Dooks
80789e7915 [ARM] S3C64XX: Add IRQ_EINT support
Add the necessary code to support IRQ_EINT(x) on
the S3C64XX series of CPUs.

Note, since there is no GPIO configuration support
in the kernel, the irq set_type method does not
configure the relevant pin to interrupt.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:15:46 +00:00
Ben Dooks
94df868b88 [ARM] S3C64XX: Map GPIO block
Add mapping for GPIO block in the static mappings.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:03:41 +00:00
Ben Dooks
3e694d4bc6 [ARM] S3C64XX: Demux UART interrupts
Add demux handling for the UART interrupts
generated by the VIC into their seperate IRQs
that the serial driver can register.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 23:02:58 +00:00
Ben Dooks
cf18acf0e0 [ARM] S3C64XX: Clock support for S3C6400/S3C6410
Add the PLL clock initialisation and clock registration
and include the clocks sourced via CLKDIVx for most of
the on-chip peripherals.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 21:54:36 +00:00
Ben Dooks
4b31d8b225 [ARM] S3C64XX: Add initial clock framework
Add the initial clocks definitions for the s3c6400
and s3c6410. Move the epll and ext clock from the
s3c2443 support into the common code.

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
2008-12-15 21:53:58 +00:00