Skip to content

Commit

Permalink
[PATCH] ARM: 2764/1: S3C24XX - Common PM functions for Simtec boards
Browse files Browse the repository at this point in the history
Patch from Ben Dooks

All current S3C24XX implementations from Simtec share the same
requirements for suspend/resume information.
This patch moves the save code out of the mach-bast.c file,
and into it's own so it can be shared by all the current
Simtec S3C24XX implementations.

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 Jun 29, 2005
1 parent 99a0616 commit f705b1a
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 35 deletions.
5 changes: 5 additions & 0 deletions arch/arm/mach-s3c2410/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,11 @@ config S3C2410_PM_CHECK_CHUNKSIZE
the CRC data block will take more memory, but wil identify any
faults with better precision.

config PM_SIMTEC
bool
depends on PM && (ARCH_BAST || MACH_VR1000)
default y

config S3C2410_LOWLEVEL_UART_PORT
int "S3C2410 UART to use for low-level messages"
default 0
Expand Down
1 change: 1 addition & 0 deletions arch/arm/mach-s3c2410/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ obj-$(CONFIG_S3C2410_DMA) += dma.o
# Power Management support

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

# S3C2440 support

Expand Down
39 changes: 4 additions & 35 deletions arch/arm/mach-s3c2410/mach-bast.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 14-Mar-2006 BJD Updated for __iomem changes
* 22-Jun-2006 BJD Added DM9000 platform information
* 28-Jun-2006 BJD Moved pm functionality out to common code
*/

#include <linux/kernel.h>
Expand Down Expand Up @@ -67,7 +68,6 @@
#include "devs.h"
#include "cpu.h"
#include "usb-simtec.h"
#include "pm.h"

#define COPYRIGHT ", (c) 2004-2005 Simtec Electronics"

Expand Down Expand Up @@ -405,44 +405,13 @@ void __init bast_map_io(void)
usb_simtec_init();
}

void __init bast_init_irq(void)
{
s3c24xx_init_irq();
}

#ifdef CONFIG_PM

/* bast_init_machine
*
* enable the power management functions for the EB2410ITX
*/

static __init void bast_init_machine(void)
{
unsigned long gstatus4;

printk(KERN_INFO "BAST Power Manangement" COPYRIGHT "\n");

gstatus4 = (__raw_readl(S3C2410_BANKCON7) & 0x3) << 30;
gstatus4 |= (__raw_readl(S3C2410_BANKCON6) & 0x3) << 28;
gstatus4 |= (__raw_readl(S3C2410_BANKSIZE) & S3C2410_BANKSIZE_MASK);

__raw_writel(gstatus4, S3C2410_GSTATUS4);

s3c2410_pm_init();
}

#else
#define bast_init_machine NULL
#endif


MACHINE_START(BAST, "Simtec-BAST")
MAINTAINER("Ben Dooks <ben@simtec.co.uk>")
BOOT_MEM(S3C2410_SDRAM_PA, S3C2410_PA_UART, (u32)S3C24XX_VA_UART)
BOOT_PARAMS(S3C2410_SDRAM_PA + 0x100)
MAPIO(bast_map_io)
INITIRQ(bast_init_irq)
.init_machine = bast_init_machine,

.map_io = bast_map_io,
.init_irq = s3c24xx_init_irq,
.timer = &s3c24xx_timer,
MACHINE_END
65 changes: 65 additions & 0 deletions arch/arm/mach-s3c2410/pm-simtec.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/* linux/arch/arm/mach-s3c2410/pm-simtec.c
*
* Copyright (c) 2004 Simtec Electronics
* Ben Dooks <ben@simtec.co.uk>
*
* http://armlinux.simtec.co.uk/
*
* Power Management helpers for Simtec S3C24XX implementations
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/device.h>

#include <asm/mach/arch.h>
#include <asm/mach/map.h>

#include <asm/hardware.h>
#include <asm/io.h>

#include <asm/arch/map.h>
#include <asm/arch/regs-serial.h>
#include <asm/arch/regs-gpio.h>
#include <asm/arch/regs-mem.h>

#include <asm/mach-types.h>

#include "pm.h"

#define COPYRIGHT ", (c) 2005 Simtec Electronics"

/* pm_simtec_init
*
* enable the power management functions
*/

static __init int pm_simtec_init(void)
{
unsigned long gstatus4;

/* check which machine we are running on */

if (!machine_is_bast() && !machine_is_vr1000())
return 0;

printk(KERN_INFO "Simtec Board Power Manangement" COPYRIGHT "\n");

gstatus4 = (__raw_readl(S3C2410_BANKCON7) & 0x3) << 30;
gstatus4 |= (__raw_readl(S3C2410_BANKCON6) & 0x3) << 28;
gstatus4 |= (__raw_readl(S3C2410_BANKSIZE) & S3C2410_BANKSIZE_MASK);

__raw_writel(gstatus4, S3C2410_GSTATUS4);

return s3c2410_pm_init();
}

arch_initcall(pm_simtec_init);

0 comments on commit f705b1a

Please sign in to comment.