"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