[PATCH v2 4/5] Add suspend/resume support for rx1950

Ben Dooks ben-linux at fluff.org
Sun Sep 27 02:19:51 EDT 2009


On Sun, Sep 27, 2009 at 12:04:57AM +0300, Vasily Khoruzhick wrote:
> 

> From d80afd66257a726995981c5376ab2d4854e8b120 Mon Sep 17 00:00:00 2001
> From: Vasily Khoruzhick <anarsoul at gmail.com>
> Date: Tue, 22 Sep 2009 20:59:04 +0300
> Subject: [PATCH v2 4/5] Add suspend/resume support for rx1950
> 
> Signed-off-by: Vasily Khoruzhick <anarsoul at gmail.com>
> ---
>  arch/arm/mach-s3c2410/pm.c |   23 +++++++++++++++++++++--
>  arch/arm/mm/mmu.c          |    5 +++--
>  2 files changed, 24 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/mach-s3c2410/pm.c b/arch/arm/mach-s3c2410/pm.c
> index 966119c..f2f3235 100644
> --- a/arch/arm/mach-s3c2410/pm.c
> +++ b/arch/arm/mach-s3c2410/pm.c
> @@ -60,10 +60,10 @@ 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
> +	/* RX3715 and RX1950 use similar to H1940 code and the
>  	 * same offsets for resume and checksum pointers */
>  
> -	if (machine_is_rx3715()) {
> +	if (machine_is_rx3715() || machine_is_rx1950()) {
>  		void *base = phys_to_virt(H1940_SUSPEND_CHECK);
>  		unsigned long ptr;
>  		unsigned long calc = 0;
> @@ -74,6 +74,19 @@ static void s3c2410_pm_prepare(void)
>  			calc += __raw_readl(base+ptr);
>  
>  		__raw_writel(calc, phys_to_virt(H1940_SUSPEND_CHECKSUM));
> +		if (machine_is_rx1950()) {
> +			/* According to S3C2442 user's manual, page 7-17,
> +			 * when the system is operating in NAND boot mode,
> +			 * the hardware pin configuration - EINT[23:21] ???
> +			 * must be set as input for starting up after
> +			 * wakeup from sleep mode */

given this is generic to the s3c2442, why put this here? it also holds
for the s3c2440 too... think about an implementation for the cpu's
sysdev for all nand-booting systems.

> +			s3c2410_gpio_cfgpin(S3C2410_GPG(15),
> +				S3C2410_GPIO_INPUT);
> +			s3c2410_gpio_cfgpin(S3C2410_GPG(14),
> +				S3C2410_GPIO_INPUT);
> +			s3c2410_gpio_cfgpin(S3C2410_GPG(13),
> +				S3C2410_GPIO_INPUT);
> +		}
>  	}
>  
>  	if ( machine_is_aml_m5900() )
> @@ -94,6 +107,12 @@ static int s3c2410_pm_resume(struct sys_device *dev)
>  	if ( machine_is_aml_m5900() )
>  		s3c2410_gpio_setpin(S3C2410_GPF(2), 0);
>  
> +	if (machine_is_rx1950()) {
> +		s3c2410_gpio_cfgpin(S3C2410_GPG(15), S3C2410_GPG15_EINT23);
> +		s3c2410_gpio_cfgpin(S3C2410_GPG(14), S3C2410_GPG14_EINT22);
> +		s3c2410_gpio_cfgpin(S3C2410_GPG(13), S3C2410_GPG13_EINT21);
> +	}
> +
>  	return 0;
>  }
>  
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 4426ee6..a13923e 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -827,9 +827,10 @@ void __init reserve_node_zero(pg_data_t *pgdat)
>  	if (machine_is_p720t())
>  		res_size = 0x00014000;
>  
> -	/* H1940 and RX3715 need to reserve this for suspend */
> +	/* H1940, RX3715 and RX1950 need to reserve this for suspend */
>  
> -	if (machine_is_h1940() || machine_is_rx3715()) {
> +	if (machine_is_h1940() || machine_is_rx3715()
> +		|| machine_is_rx1950()) {
>  		reserve_bootmem_node(pgdat, 0x30003000, 0x1000,
>  				BOOTMEM_DEFAULT);
>  		reserve_bootmem_node(pgdat, 0x30081000, 0x1000,
> -- 
> 1.6.5.rc1
> 

> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
-- 
Ben

Q:      What's a light-year?
A:      One-third less calories than a regular year.




More information about the linux-arm-kernel mailing list