"Rajendra Nayak" <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
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 [EMAIL PROTECTED]
> 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 [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html