[PATCH v2] ARM: OMAP3: PM: fix I/O wakeup and I/O chain clock control detection

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Oct 6 18:29:12 EDT 2011


On Thu, Oct 06, 2011 at 01:47:22PM -0600, Paul Walmsley wrote:
> +	if ((omap_rev() == OMAP3430_REV_ES3_1 ||
> +	     omap_rev() == OMAP3430_REV_ES3_1_2) ||
> +	    cpu_is_omap3630())
> +		omap_features |= OMAP3_HAS_IO_CHAIN_CTRL;

	(a || b) || c === a || b || c

IOW, no need for the additional parens.

> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 7255d9b..a6156bd 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -99,31 +99,28 @@ static void omap3_enable_io_chain(void)
>  {
>  	int timeout = 0;
>  
> -	if (omap_rev() >= OMAP3430_REV_ES3_1) {
> -		omap2_prm_set_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK, WKUP_MOD,
> -				     PM_WKEN);
> -		/* Do a readback to assure write has been done */
> -		omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN);
> -
> -		while (!(omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN) &
> -			 OMAP3430_ST_IO_CHAIN_MASK)) {
> -			timeout++;
> -			if (timeout > 1000) {
> -				printk(KERN_ERR "Wake up daisy chain "
> -				       "activation failed.\n");
> -				return;
> -			}
> -			omap2_prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN_MASK,
> -					     WKUP_MOD, PM_WKEN);
> +	omap2_prm_set_mod_reg_bits(OMAP3430_EN_IO_CHAIN_MASK, WKUP_MOD,
> +				   PM_WKEN);
> +	/* Do a readback to assure write has been done */
> +	omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN);
> +
> +	while (!(omap2_prm_read_mod_reg(WKUP_MOD, PM_WKEN) &
> +		 OMAP3430_ST_IO_CHAIN_MASK)) {
> +		timeout++;
> +		if (timeout > 1000) {
> +			printk(KERN_ERR "Wake up daisy chain "
> +			       "activation failed.\n");
> +			return;
>  		}
> +		omap2_prm_set_mod_reg_bits(OMAP3430_ST_IO_CHAIN_MASK,
> +					   WKUP_MOD, PM_WKEN);
>  	}

This should've been caught before.  Two things:

1. Do you know how long it takes this to time out?
2. Don't wrap error printks, it prevents them being grepped for.



More information about the linux-arm-kernel mailing list