[PATCH 2/5] ARM: SAMSUNG: Make the sleep code common for S3C64XX and newer SoCs

Russell King - ARM Linux linux at arm.linux.org.uk
Wed Sep 7 05:55:13 EDT 2011


On Fri, Aug 12, 2011 at 03:56:24PM +0530, Abhilash Kesavan wrote:
> +ENTRY(s3c_cpu_resume)
> +#if defined(CONFIG_S3C_PM_DEBUG_LED_SMDK)
> +
> +#undef S3C64XX_VA_GPIO
> +#define S3C64XX_VA_GPIO (0x0)
> +#define S3C64XX_GPNCON			(S3C64XX_GPN_BASE + 0x00)
> +#define S3C64XX_GPNDAT			(S3C64XX_GPN_BASE + 0x04)
> +
> +#define S3C64XX_GPN_CONMASK(__gpio)	(0x3 << ((__gpio) * 2))
> +#define S3C64XX_GPN_OUTPUT(__gpio)	(0x1 << ((__gpio) * 2))
> +
> +	/* Initialise the GPIO state if we are debugging via the SMDK LEDs,
> +	 * as the uboot version supplied resets these to inputs during the
> +	 * resume checks.
> +	*/
> +
> +	ldr	r3, =S3C64XX_PA_GPIO
> +	ldr	r0, [ r3, #S3C64XX_GPNCON ]
> +	bic	r0, r0, #(S3C64XX_GPN_CONMASK(12) | S3C64XX_GPN_CONMASK(13) | \
> +			  S3C64XX_GPN_CONMASK(14) | S3C64XX_GPN_CONMASK(15))
> +	orr	r0, r0, #(S3C64XX_GPN_OUTPUT(12) | S3C64XX_GPN_OUTPUT(13) | \
> +			  S3C64XX_GPN_OUTPUT(14) | S3C64XX_GPN_OUTPUT(15))
> +	str	r0, [ r3, #S3C64XX_GPNCON ]
> +
> +	ldr	r0, [ r3, #S3C64XX_GPNDAT ]
> +	bic	r0, r0, #0xf << 12			@ GPN12..15
> +	orr	r0, r0, #1 << 15			@ GPN15
> +	str	r0, [ r3, #S3C64XX_GPNDAT ]
> +#endif

This is incompatible with the aim of a single kernel booting on many ARM
platforms.

Rather than consolidating down to just one implementation, how about
consolidating to two - one for everything but SMDK, and one for the SMDK
with the LED stuff.  You can then chose which you want - either the
s3c_generic_resume (which is just the magic code plus the branch)
or s3c_smdk_leds_resume (which would be the magic code plus the LEDS
stuff plus the branch.)



More information about the linux-arm-kernel mailing list