Skip to content

Commit

Permalink
[ARM] 3999/1: RX3715: suspend to RAM support
Browse files Browse the repository at this point in the history
The RX3715 is similar to the H1940 in the way
that suspend to RAM works, so we can use most
of the extant support for the H1940 with only
a few modifictions

Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Ben Dooks authored and Russell King committed Dec 7, 2006
1 parent b2eba6b commit bbf6f28
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 2 deletions.
8 changes: 8 additions & 0 deletions arch/arm/mach-s3c2410/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,16 @@ config BAST_PC104_IRQ
Say Y here to enable the PC104 IRQ routing on the
Simtec BAST (EB2410ITX)

config PM_H1940
bool
depends on PM
help
Internal node for H1940 and related PM

config ARCH_H1940
bool "IPAQ H1940"
select CPU_S3C2410
select PM_H1940
help
Say Y here if you are using the HP IPAQ H1940

Expand Down Expand Up @@ -115,6 +122,7 @@ config MACH_VR1000
config MACH_RX3715
bool "HP iPAQ rx3715"
select CPU_S3C2440
select PM_H1940
help
Say Y here if you are using the HP iPAQ rx3715.

Expand Down
3 changes: 2 additions & 1 deletion arch/arm/mach-s3c2410/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ obj-$(CONFIG_CPU_S3C2410_DMA) += s3c2410-dma.o

obj-$(CONFIG_PM) += pm.o sleep.o
obj-$(CONFIG_PM_SIMTEC) += pm-simtec.o
obj-$(CONFIG_PM_H1940) += pm-h1940.o

# S3C2412 support
obj-$(CONFIG_CPU_S3C2412) += s3c2412.o
Expand Down Expand Up @@ -77,7 +78,7 @@ obj-$(CONFIG_MACH_AML_M5900) += mach-amlm5900.o
obj-$(CONFIG_MACH_ANUBIS) += mach-anubis.o
obj-$(CONFIG_MACH_OSIRIS) += mach-osiris.o
obj-$(CONFIG_ARCH_BAST) += mach-bast.o usb-simtec.o
obj-$(CONFIG_ARCH_H1940) += mach-h1940.o pm-h1940.o
obj-$(CONFIG_ARCH_H1940) += mach-h1940.o
obj-$(CONFIG_MACH_N30) += mach-n30.o
obj-$(CONFIG_ARCH_SMDK2410) += mach-smdk2410.o
obj-$(CONFIG_MACH_SMDK2413) += mach-smdk2413.o
Expand Down
3 changes: 3 additions & 0 deletions arch/arm/mach-s3c2410/mach-rx3715.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include <asm/arch/regs-gpio.h>
#include <asm/arch/regs-lcd.h>

#include <asm/arch/h1940.h>
#include <asm/arch/nand.h>
#include <asm/arch/fb.h>

Expand Down Expand Up @@ -224,7 +225,9 @@ static void __init rx3715_init_irq(void)

static void __init rx3715_init_machine(void)
{
memcpy(phys_to_virt(H1940_SUSPEND_RESUMEAT), h1940_pm_return, 1024);
s3c2410_pm_init();

s3c24xx_fb_set_platdata(&rx3715_lcdcfg);
}

Expand Down
16 changes: 16 additions & 0 deletions arch/arm/mach-s3c2410/s3c2410-pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,22 @@ static void s3c2410_pm_prepare(void)
__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
}

/* the RX3715 uses similar code and the same H1940 and the
* same offsets for resume and checksum pointers */

if (machine_is_rx3715()) {
void *base = phys_to_virt(H1940_SUSPEND_CHECK);
unsigned long ptr;
unsigned long calc = 0;

/* generate check for the bootloader to check on resume */

for (ptr = 0; ptr < 0x40000; ptr += 0x4)
calc += __raw_readl(base+ptr);

__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
}

if ( machine_is_aml_m5900() )
s3c2410_gpio_setpin(S3C2410_GPF2, 1);

Expand Down
4 changes: 3 additions & 1 deletion arch/arm/mm/mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,9 @@ void __init reserve_node_zero(pg_data_t *pgdat)
if (machine_is_p720t())
res_size = 0x00014000;

if (machine_is_h1940()) {
/* H1940 and RX3715 need to reserve this for suspend */

if (machine_is_h1940() || machine_is_rx3715()) {
reserve_bootmem_node(pgdat, 0x30003000, 0x1000);
reserve_bootmem_node(pgdat, 0x30081000, 0x1000);
}
Expand Down

0 comments on commit bbf6f28

Please sign in to comment.