Re: [PATCH 01/08] OMAP3 SRF: Add CORE rate table param in OMAP-PM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Rajendra Nayak" <rnayak@xxxxxx> writes:

> This patch modifies the omap_pm_if_init API in OMAP-PM
> layer to take the L3 interconnect/CORE OPP table
> as an additional parameter.
>
> Signed-off-by: Rajendra Nayak <rnayak@xxxxxx>

Rajendra,

The current code does not handle well the case where board files pass
in NULL values for the various rate tables.

In the init code, there are a few places where you use the *_opps values
without checking if they are non-NULL, and this will trigger faults.

Can you test and fix the case where your board file passes in NULL for
all the OPP tables?

Kevin

> ---
>  arch/arm/mach-omap2/io.c                  |    2 +-
>  arch/arm/plat-omap/include/mach/omap-pm.h |    4 +++-
>  arch/arm/plat-omap/omap-pm-noop.c         |    5 ++++-
>  arch/arm/plat-omap/omap-pm-srf.c          |    5 ++++-
>  4 files changed, 12 insertions(+), 4 deletions(-)
>
> Index: linux-omap-2.6/arch/arm/plat-omap/include/mach/omap-pm.h
> ===================================================================
> --- linux-omap-2.6.orig/arch/arm/plat-omap/include/mach/omap-pm.h	2008-11-10 12:09:03.000000000 +0530
> +++ linux-omap-2.6/arch/arm/plat-omap/include/mach/omap-pm.h	2008-11-10 12:09:12.000000000 +0530
> @@ -57,12 +57,14 @@ int __init omap_pm_if_early_init(void);
>   * omap_pm_if_init - OMAP PM init code called after clock fw init
>   * @mpu_opp_table: array ptr to struct omap_opp for MPU
>   * @dsp_opp_table: array ptr to struct omap_opp for DSP
> + * @l3_opp_table : array ptr to struct omap_opp for CORE
>   *
>   * The main initialization code.  OPP tables are passed in here.  The
>   * "_if_" is to avoid name collisions with the PM idle-loop code.
>   */
>  int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
> -			   struct omap_opp *dsp_opp_table);
> +			   struct omap_opp *dsp_opp_table,
> +			   struct omap_opp *l3_opp_table);
>  
>  /**
>   * omap_pm_if_exit - OMAP PM exit code
> Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-noop.c
> ===================================================================
> --- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-noop.c	2008-11-10 12:09:03.000000000 +0530
> +++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-noop.c	2008-11-10 12:09:12.000000000 +0530
> @@ -28,6 +28,7 @@
>  
>  static struct omap_opp *dsp_opps;
>  static struct omap_opp *mpu_opps;
> +static struct omap_opp *l3_opps;
>  
>  /*
>   * Device-driver-originated constraints (via board-*.c files)
> @@ -316,10 +317,12 @@ int __init omap_pm_if_early_init(void)
>  
>  /* Must be called after clock framework is initialized */
>  int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
> -			   struct omap_opp *dsp_opp_table)
> +			   struct omap_opp *dsp_opp_table,
> +			   struct omap_opp *l3_opp_table)
>  {
>  	mpu_opps = mpu_opp_table;
>  	dsp_opps = dsp_opp_table;
> +	l3_opps = l3_opp_table;
>  	return 0;
>  }
>  
> Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
> ===================================================================
> --- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-srf.c	2008-11-10 12:09:03.000000000 +0530
> +++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c	2008-11-10 12:09:12.000000000 +0530
> @@ -29,6 +29,7 @@
>  
>  static struct omap_opp *dsp_opps;
>  static struct omap_opp *mpu_opps;
> +static struct omap_opp *l3_opps;
>  
>  #define LAT_RES_POSTAMBLE "_latency"
>  #define MAX_LATENCY_RES_NAME 30
> @@ -346,10 +347,12 @@ int __init omap_pm_if_early_init(void)
>  
>  /* Must be called after clock framework is initialized */
>  int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
> -			   struct omap_opp *dsp_opp_table)
> +			   struct omap_opp *dsp_opp_table,
> +			   struct omap_opp *l3_opp_table)
>  {
>  	mpu_opps = mpu_opp_table;
>  	dsp_opps = dsp_opp_table;
> +	l3_opps = l3_opp_table;
>  	resource_init(resources_omap);
>  	return 0;
>  }
> Index: linux-omap-2.6/arch/arm/mach-omap2/io.c
> ===================================================================
> --- linux-omap-2.6.orig/arch/arm/mach-omap2/io.c	2008-11-10 12:09:03.000000000 +0530
> +++ linux-omap-2.6/arch/arm/mach-omap2/io.c	2008-11-10 12:09:12.000000000 +0530
> @@ -206,7 +206,7 @@ void __init omap2_init_common_hw(struct 
>  	clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
>  	omapdev_init(omapdevs);
>  	omap2_clk_init();
> -	omap_pm_if_init(NULL, NULL);
> +	omap_pm_if_init(NULL, NULL, NULL);
>  	omap2_sdrc_init(sp);
>  	gpmc_init();
>  }
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux