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

Commit f705b1ae authored by Ben Dooks's avatar Ben Dooks Committed by Russell King
Browse files

[PATCH] ARM: 2764/1: S3C24XX - Common PM functions for Simtec boards



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: default avatarBen Dooks <ben-linux@fluff.org>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 99a0616b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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

+4 −35
Original line number Diff line number Diff line
@@ -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>
@@ -67,7 +68,6 @@
#include "devs.h"
#include "cpu.h"
#include "usb-simtec.h"
#include "pm.h"

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

@@ -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 −0
Original line number Diff line number Diff line
/* 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);