From: Nishanth Menon <menon.nishanth@gmail.com>
To: Sanjeev Premi <premi@ti.com>
Cc: linux-omap@vger.kernel.org
Subject: Re: [PATCHv1 1/1] omap3: pm: Delink opp layer and cpufreq
Date: Mon, 31 May 2010 20:29:07 +0300 [thread overview]
Message-ID: <4C03F1E3.9030202@gmail.com> (raw)
In-Reply-To: <1275309542-26004-1-git-send-email-premi@ti.com>
On 05/31/2010 03:39 PM, Sanjeev Premi wrote:
> The OPP layer was contained in the CONFIG_CPU_FREQ.
> This patch removes this containment relation.
>
> Signed-off-by: Sanjeev Premi<premi@ti.com>
> ---
> arch/arm/mach-omap2/Makefile | 6 +-
> arch/arm/mach-omap2/board-omap3evm.c | 2 +-
you sure this is the only board file having "omap3-opp.h" ? anyway.. the
need for board files to use opp_init is gone with my patch
http://marc.info/?l=linux-omap&m=127507237109393&w=2
so I wont harp on it, I would rather post a cleanup patch for all board
files once the patch is in..(or mebbe kevin could drop the patch that
adds opp_init_table to board files ;) )..
> arch/arm/mach-omap2/cpufreq34xx.c | 164 --------------------------------
> arch/arm/mach-omap2/omap3-opp.h | 20 ----
> arch/arm/mach-omap2/opp34xx_data.c | 166 +++++++++++++++++++++++++++++++++
> arch/arm/mach-omap2/pm34xx.c | 1 -
> arch/arm/plat-omap/Makefile | 7 +-
> arch/arm/plat-omap/cpu-omap.c | 47 +++++++++
> arch/arm/plat-omap/include/plat/opp.h | 82 +---------------
> arch/arm/plat-omap/opp.c | 46 ---------
> 10 files changed, 225 insertions(+), 316 deletions(-)
> delete mode 100644 arch/arm/mach-omap2/cpufreq34xx.c
> delete mode 100644 arch/arm/mach-omap2/omap3-opp.h
> create mode 100644 arch/arm/mach-omap2/opp34xx_data.c
>
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index ac08f99..4e51a99 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -55,10 +55,8 @@ AFLAGS_sleep34xx.o :=-Wa,-march=armv7-a
>
> endif
>
> -# CPU Frequency
> -ifeq ($(CONFIG_CPU_FREQ),y)
> -obj-$(CONFIG_ARCH_OMAP3) += cpufreq34xx.o
> -endif
> +# OPP definitions for OMAP3
> +obj-$(CONFIG_ARCH_OMAP3) += opp34xx_data.o
>
> # PRCM
> obj-$(CONFIG_ARCH_OMAP2) += cm.o
> diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
> index 0a3f5b6..cb97c5d 100644
> --- a/arch/arm/mach-omap2/board-omap3evm.c
> +++ b/arch/arm/mach-omap2/board-omap3evm.c
> @@ -50,11 +50,11 @@
> #include<plat/common.h>
> #include<plat/mcspi.h>
> #include<plat/display.h>
> +#include<plat/opp.h>
>
> #include "mux.h"
> #include "sdram-micron-mt46h32m32lf-6.h"
> #include "hsmmc.h"
> -#include "omap3-opp.h"
>
> #define GPMC_CS0_BASE 0x60
> #define GPMC_CS_SIZE 0x30
> diff --git a/arch/arm/mach-omap2/cpufreq34xx.c b/arch/arm/mach-omap2/cpufreq34xx.c
> deleted file mode 100644
> index 8747dd6..0000000
> --- a/arch/arm/mach-omap2/cpufreq34xx.c
> +++ /dev/null
> @@ -1,164 +0,0 @@
> -/*
> - * arch/arm/mach-omap2/cpufreq34xx.c
> - * OMAP3 resource init/change_level/validate_level functions
> - *
> - * Copyright (C) 2009 - 2010 Texas Instruments Incorporated.
> - * Nishanth Menon
> - * Copyright (C) 2009 - 2010 Deep Root Systems, LLC.
> - * Kevin Hilman
> - * Copyright (C) 2010 Nokia Corporation.
> - * Eduardo Valentin
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
> - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
> - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
> - * History:
> - *
> - */
> -
> -#include<linux/module.h>
> -#include<linux/err.h>
> -
> -#include<plat/opp.h>
> -#include<plat/cpu.h>
> -#include "omap3-opp.h"
> -
> -static struct omap_opp_def __initdata omap34xx_mpu_rate_table[] = {
> - /* OPP1 */
> - OMAP_OPP_DEF(true, 125000000, 975000),
> - /* OPP2 */
> - OMAP_OPP_DEF(true, 250000000, 1075000),
> - /* OPP3 */
> - OMAP_OPP_DEF(true, 500000000, 1200000),
> - /* OPP4 */
> - OMAP_OPP_DEF(true, 550000000, 1270000),
> - /* OPP5 */
> - OMAP_OPP_DEF(true, 600000000, 1350000),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -static struct omap_opp_def __initdata omap34xx_l3_rate_table[] = {
> - /*
> - * OPP1 - 41.5 MHz is disabled because: The voltage for that OPP is
> - * almost the same than the one at 83MHz thus providing very little
> - * gain for the power point of view. In term of energy it will even
> - * increase the consumption due to the very negative performance
> - * impact that frequency will do to the MPU and the whole system in
> - * general.
> - */
> - OMAP_OPP_DEF(false, 41500000, 975000),
> - /* OPP2 */
> - OMAP_OPP_DEF(true, 83000000, 1050000),
> - /* OPP3 */
> - OMAP_OPP_DEF(true, 166000000, 1150000),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -static struct omap_opp_def __initdata omap34xx_dsp_rate_table[] = {
> - /* OPP1 */
> - OMAP_OPP_DEF(true, 90000000, 975000),
> - /* OPP2 */
> - OMAP_OPP_DEF(true, 180000000, 1075000),
> - /* OPP3 */
> - OMAP_OPP_DEF(true, 360000000, 1200000),
> - /* OPP4 */
> - OMAP_OPP_DEF(true, 400000000, 1270000),
> - /* OPP5 */
> - OMAP_OPP_DEF(true, 430000000, 1350000),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -static struct omap_opp_def __initdata omap36xx_mpu_rate_table[] = {
> - /* OPP1 - OPP50 */
> - OMAP_OPP_DEF(true, 300000000, 930000),
> - /* OPP2 - OPP100 */
> - OMAP_OPP_DEF(true, 600000000, 1100000),
> - /* OPP3 - OPP-Turbo */
> - OMAP_OPP_DEF(false, 800000000, 1260000),
> - /* OPP4 - OPP-SB */
> - OMAP_OPP_DEF(false, 1000000000, 1350000),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -static struct omap_opp_def __initdata omap36xx_l3_rate_table[] = {
> - /* OPP1 - OPP50 */
> - OMAP_OPP_DEF(true, 100000000, 930000),
> - /* OPP2 - OPP100, OPP-Turbo, OPP-SB */
> - OMAP_OPP_DEF(true, 200000000, 1137500),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -static struct omap_opp_def __initdata omap36xx_dsp_rate_table[] = {
> - /* OPP1 - OPP50 */
> - OMAP_OPP_DEF(true, 260000000, 930000),
> - /* OPP2 - OPP100 */
> - OMAP_OPP_DEF(true, 520000000, 1100000),
> - /* OPP3 - OPP-Turbo */
> - OMAP_OPP_DEF(false, 660000000, 1260000),
> - /* OPP4 - OPP-SB */
> - OMAP_OPP_DEF(false, 800000000, 1350000),
> - /* Terminator */
> - OMAP_OPP_DEF(0, 0, 0)
> -};
> -
> -int __init omap3_pm_init_opp_table(void)
> -{
> - int i, r;
> - struct omap_opp_def **omap3_opp_def_list;
> - struct omap_opp_def *omap34xx_opp_def_list[] = {
> - omap34xx_mpu_rate_table,
> - omap34xx_l3_rate_table,
> - omap34xx_dsp_rate_table
> - };
> - struct omap_opp_def *omap36xx_opp_def_list[] = {
> - omap36xx_mpu_rate_table,
> - omap36xx_l3_rate_table,
> - omap36xx_dsp_rate_table
> - };
> - enum opp_t omap3_opps[] = {
> - OPP_MPU,
> - OPP_L3,
> - OPP_DSP
> - };
> -
> - omap3_opp_def_list = cpu_is_omap3630() ? omap36xx_opp_def_list :
> - omap34xx_opp_def_list;
> -
> - for (i = 0; i< ARRAY_SIZE(omap3_opps); i++) {
> - r = opp_init_list(omap3_opps[i], omap3_opp_def_list[i]);
> - if (r)
> - break;
> - }
> - if (!r)
> - return 0;
> -
> - /* Cascading error handling - disable all enabled OPPs */
> - pr_err("%s: Failed to register %d OPP type\n", __func__,
> - omap3_opps[i]);
> - i--;
> - while (i != -1) {
> - struct omap_opp *opp;
> - unsigned long freq = 0;
> -
> - do {
> - opp = opp_find_freq_ceil(omap3_opps[i],&freq);
> - if (IS_ERR(opp))
> - break;
> - opp_disable(opp);
> - freq++;
> - } while (1);
> - i--;
> - }
> -
> - return r;
> -}
> -
> diff --git a/arch/arm/mach-omap2/omap3-opp.h b/arch/arm/mach-omap2/omap3-opp.h
> deleted file mode 100644
> index 16d9e5b..0000000
> --- a/arch/arm/mach-omap2/omap3-opp.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __OMAP3_OPP_H_
> -#define __OMAP3_OPP_H_
> -
> -#include<plat/omap-pm.h>
> -
> -/**
> - * omap3_pm_init_opp_table - OMAP opp table lookup called after cpu is detected.
> - * Initialize the basic opp table here, board files could choose to modify opp
> - * table after the basic initialization
> - */
> -#ifdef CONFIG_CPU_FREQ
> -extern int omap3_pm_init_opp_table(void);
> -#else
> -static inline int omap3_pm_init_opp_table(void)
> -{
> - return -EINVAL;
> -}
> -#endif
> -
> -#endif
finding it difficult to align with this change, you introduce
omap3_pm_init_opp_table later into plat/opp.h which defeats generic
nature of opp.h - as it was supposed to be used for other omaps as well..
> diff --git a/arch/arm/mach-omap2/opp34xx_data.c b/arch/arm/mach-omap2/opp34xx_data.c
> new file mode 100644
> index 0000000..7017d6d
> --- /dev/null
> +++ b/arch/arm/mach-omap2/opp34xx_data.c
> @@ -0,0 +1,166 @@
> +/*
> + * arch/arm/mach-omap2/cpufreq34xx.c
one more reason why i think i prefer not to have file names in comment
headers ;) they get forgotten to be modified..
> + * OMAP3 resource init/change_level/validate_level functions
> + *
> + * Copyright (C) 2009 - 2010 Texas Instruments Incorporated.
> + * Nishanth Menon
> + * Copyright (C) 2009 - 2010 Deep Root Systems, LLC.
> + * Kevin Hilman
> + * Copyright (C) 2010 Nokia Corporation.
> + * Eduardo Valentin
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
> + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
> + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
> + * History:
> + *
> + */
> +
> +#include<linux/module.h>
> +#include<linux/err.h>
> +
> +#include<plat/opp.h>
> +#include<plat/cpu.h>
> +
> +static struct omap_opp_def __initdata omap34xx_mpu_rate_table[] = {
> + /* OPP1 */
> + OMAP_OPP_DEF(true, 125000000, 975000),
> + /* OPP2 */
> + OMAP_OPP_DEF(true, 250000000, 1075000),
> + /* OPP3 */
> + OMAP_OPP_DEF(true, 500000000, 1200000),
> + /* OPP4 */
> + OMAP_OPP_DEF(true, 550000000, 1270000),
> + /* OPP5 */
> + OMAP_OPP_DEF(true, 600000000, 1350000),
> + /* OPP6 */
> + OMAP_OPP_DEF(true, 720000000, 1350000),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +static struct omap_opp_def __initdata omap34xx_l3_rate_table[] = {
> + /*
> + * OPP1 - 41.5 MHz is disabled because: The voltage for that OPP is
> + * almost the same than the one at 83MHz thus providing very little
> + * gain for the power point of view. In term of energy it will even
> + * increase the consumption due to the very negative performance
> + * impact that frequency will do to the MPU and the whole system in
> + * general.
> + */
> + OMAP_OPP_DEF(false, 41500000, 975000),
> + /* OPP2 */
> + OMAP_OPP_DEF(true, 83000000, 1050000),
> + /* OPP3 */
> + OMAP_OPP_DEF(true, 166000000, 1150000),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +static struct omap_opp_def __initdata omap34xx_dsp_rate_table[] = {
> + /* OPP1 */
> + OMAP_OPP_DEF(true, 90000000, 975000),
> + /* OPP2 */
> + OMAP_OPP_DEF(true, 180000000, 1075000),
> + /* OPP3 */
> + OMAP_OPP_DEF(true, 360000000, 1200000),
> + /* OPP4 */
> + OMAP_OPP_DEF(true, 400000000, 1270000),
> + /* OPP5 */
> + OMAP_OPP_DEF(true, 430000000, 1350000),
> + /* OPP6 */
> + OMAP_OPP_DEF(true, 520000000, 1350000),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +static struct omap_opp_def __initdata omap36xx_mpu_rate_table[] = {
> + /* OPP1 - OPP50 */
> + OMAP_OPP_DEF(true, 300000000, 930000),
> + /* OPP2 - OPP100 */
> + OMAP_OPP_DEF(true, 600000000, 1100000),
> + /* OPP3 - OPP-Turbo */
> + OMAP_OPP_DEF(false, 800000000, 1260000),
> + /* OPP4 - OPP-SB */
> + OMAP_OPP_DEF(false, 1000000000, 1350000),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +static struct omap_opp_def __initdata omap36xx_l3_rate_table[] = {
> + /* OPP1 - OPP50 */
> + OMAP_OPP_DEF(true, 100000000, 930000),
> + /* OPP2 - OPP100, OPP-Turbo, OPP-SB */
> + OMAP_OPP_DEF(true, 200000000, 1137500),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +static struct omap_opp_def __initdata omap36xx_dsp_rate_table[] = {
> + /* OPP1 - OPP50 */
> + OMAP_OPP_DEF(true, 260000000, 930000),
> + /* OPP2 - OPP100 */
> + OMAP_OPP_DEF(true, 520000000, 1100000),
> + /* OPP3 - OPP-Turbo */
> + OMAP_OPP_DEF(false, 660000000, 1260000),
> + /* OPP4 - OPP-SB */
> + OMAP_OPP_DEF(false, 800000000, 1350000),
> + /* Terminator */
> + OMAP_OPP_DEF(0, 0, 0)
> +};
> +
> +int __init omap3_pm_init_opp_table(void)
> +{
> + int i, r;
> + struct omap_opp_def **omap3_opp_def_list;
> + struct omap_opp_def *omap34xx_opp_def_list[] = {
> + omap34xx_mpu_rate_table,
> + omap34xx_l3_rate_table,
> + omap34xx_dsp_rate_table
> + };
> + struct omap_opp_def *omap36xx_opp_def_list[] = {
> + omap36xx_mpu_rate_table,
> + omap36xx_l3_rate_table,
> + omap36xx_dsp_rate_table
> + };
> + enum opp_t omap3_opps[] = {
> + OPP_MPU,
> + OPP_L3,
> + OPP_DSP
> + };
> +
> + omap3_opp_def_list = cpu_is_omap3630() ? omap36xx_opp_def_list :
> + omap34xx_opp_def_list;
> +
> + for (i = 0; i< ARRAY_SIZE(omap3_opps); i++) {
> + r = opp_init_list(omap3_opps[i], omap3_opp_def_list[i]);
> + if (r)
> + break;
> + }
> + if (!r)
> + return 0;
> +
> + /* Cascading error handling - disable all enabled OPPs */
> + pr_err("%s: Failed to register %d OPP type\n", __func__,
> + omap3_opps[i]);
> + i--;
> + while (i != -1) {
> + struct omap_opp *opp;
> + unsigned long freq = 0;
> +
> + do {
> + opp = opp_find_freq_ceil(omap3_opps[i],&freq);
> + if (IS_ERR(opp))
> + break;
> + opp_disable(opp);
> + freq++;
> + } while (1);
> + i--;
> + }
> +
> + return r;
> +}
> diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
> index 48857a4..271d49f 100644
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -53,7 +53,6 @@
> #include "prm.h"
> #include "pm.h"
> #include "sdrc.h"
> -#include "omap3-opp.h"
>
> #ifdef CONFIG_SUSPEND
> static suspend_state_t suspend_state = PM_SUSPEND_ON;
> diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
> index 2b9ebf0..ee79885 100644
> --- a/arch/arm/plat-omap/Makefile
> +++ b/arch/arm/plat-omap/Makefile
> @@ -13,10 +13,9 @@ obj- :=
> obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
>
> # OPP support in (OMAP3+ only at the moment)
> -# XXX The OPP TWL/TPS code should only be included when a TWL/TPS
> -# PMIC is selected.
> -ifdef CONFIG_CPU_FREQ
> -obj-$(CONFIG_ARCH_OMAP3) += opp.o opp_twl_tps.o
> +ifdef CONFIG_ARCH_OMAP3
> +obj-y += opp.o
> +obj-$(CONFIG_TWL4030_POWER) += opp_twl_tps.o
NAK. you just need TWL4030_CORE not power here. any reason to retain
power? it has no dependency on power..
> endif
>
> # omap_device support (OMAP2+ only at the moment)
> diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
> index 0674405..d46b8d0 100644
> --- a/arch/arm/plat-omap/cpu-omap.c
> +++ b/arch/arm/plat-omap/cpu-omap.c
> @@ -121,6 +121,53 @@ static int omap_target(struct cpufreq_policy *policy,
> return ret;
> }
>
> +#ifdef CONFIG_ARCH_OMAP3
> +void opp_init_cpufreq_table(enum opp_t opp_type,
> + struct cpufreq_frequency_table **table)
> +{
> + int i = 0, j;
> + int opp_num;
> + struct cpufreq_frequency_table *freq_table;
> + struct omap_opp *opp;
> +
> + if (opp_type>= OPP_TYPES_MAX) {
> + pr_warning("%s: failed to initialize frequency"
> + "table\n", __func__);
> + return;
> + }
> +
> + opp_num = opp_get_opp_count(opp_type);
> + if (opp_num< 0) {
> + pr_err("%s: no opp table?\n", __func__);
> + return;
> + }
> +
> + freq_table = kmalloc(sizeof(struct cpufreq_frequency_table) *
> + (opp_num + 1), GFP_ATOMIC);
> + if (!freq_table) {
> + pr_warning("%s: failed to allocate frequency"
> + "table\n", __func__);
> + return;
> + }
> +
> + opp = _opp_list[opp_type];
> + opp += opp_num;
> + for (j = opp_num; j>= 0; j--) {
> + if (opp->enabled) {
> + freq_table[i].index = i;
> + freq_table[i].frequency = opp->rate / 1000;
> + i++;
> + }
> + opp--;
> + }
> +
> + freq_table[i].index = i;
> + freq_table[i].frequency = CPUFREQ_TABLE_END;
> +
> + *table =&freq_table[0];
> +}
> +#endif
> +
errrr.... why? it used to be here and was moved to opp.c - see
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=9a6b00f70e9f4bce30ad4f8fab41a24bd3706dbd
you are essentially reverting that patch!
> static int __init omap_cpu_init(struct cpufreq_policy *policy)
> {
> int result = 0;
> diff --git a/arch/arm/plat-omap/include/plat/opp.h b/arch/arm/plat-omap/include/plat/opp.h
> index 7d16a46..51b1776 100644
> --- a/arch/arm/plat-omap/include/plat/opp.h
> +++ b/arch/arm/plat-omap/include/plat/opp.h
> @@ -15,7 +15,6 @@
> #define __ASM_ARM_OMAP_OPP_H
>
> #include<linux/err.h>
> -#include<linux/cpufreq.h>
>
> #ifdef CONFIG_ARCH_OMAP3
> enum opp_t {
> @@ -66,7 +65,6 @@ struct omap_opp_def {
>
> struct omap_opp;
>
> -#ifdef CONFIG_CPU_FREQ
>
> /**
> * opp_get_voltage() - Gets the voltage corresponding to an opp
> @@ -233,79 +231,11 @@ struct omap_opp * __deprecated opp_find_by_opp_id(enum opp_t opp_type,
> u8 opp_id);
> u8 __deprecated opp_get_opp_id(struct omap_opp *opp);
>
> -void opp_init_cpufreq_table(enum opp_t opp_type,
> - struct cpufreq_frequency_table **table);
> -#else
> -static inline unsigned long opp_get_voltage(const struct omap_opp *opp)
> -{
> - return 0;
> -}
> -
> -static inline unsigned long opp_get_freq(const struct omap_opp *opp)
> -{
> - return 0;
> -}
> -
> -static inline int opp_get_opp_count(struct omap_opp *oppl)
> -{
> - return 0;
> -}
> -
> -static inline struct omap_opp *opp_find_freq_exact(struct omap_opp *oppl,
> - unsigned long freq, bool enabled)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline struct omap_opp *opp_find_freq_floor(struct omap_opp *oppl,
> - unsigned long *freq)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline struct omap_opp *opp_find_freq_ceil(struct omap_opp *oppl,
> - unsigned long *freq)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline
> -struct omap_opp __init *opp_init_list(const struct omap_opp_def *opp_defs)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline struct omap_opp *opp_add(struct omap_opp *oppl,
> - const struct omap_opp_def *opp_def)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline int opp_enable(struct omap_opp *opp)
> -{
> - return 0;
> -}
> -
> -static inline int opp_disable(struct omap_opp *opp)
> -{
> - return 0;
> -}
> -
> -static inline struct omap_opp * __deprecated
> -opp_find_by_opp_id(struct omap_opp *opps, u8 opp_id)
> -{
> - return ERR_PTR(-EINVAL);
> -}
> -
> -static inline u8 __deprecated opp_get_opp_id(struct omap_opp *opp)
> -{
> - return 0;
> -}
> -
> -static inline void opp_init_cpufreq_table(struct omap_opp *opps,
> - struct cpufreq_frequency_table **table)
> -{
> -}
> +/**
> + * omap3_pm_init_opp_table() - Initialize the OPP table for OMAP3 devices.
> + *
> + * Initializes the OPP table for the current OMAP3 device.
> + */
> +int __init omap3_pm_init_opp_table(void);
NAK. opp. is meant to be used by omap2, OMAP4 etc..
when you removed from omap3-opp.h, it kinda needed you to have it here,
which breaks the generic nature of this header.
>
> -#endif /* CONFIG_CPU_FREQ */
> #endif /* __ASM_ARM_OMAP_OPP_H */
> diff --git a/arch/arm/plat-omap/opp.c b/arch/arm/plat-omap/opp.c
> index 13da451..3ed3ec1 100644
> --- a/arch/arm/plat-omap/opp.c
> +++ b/arch/arm/plat-omap/opp.c
> @@ -351,49 +351,3 @@ int opp_disable(struct omap_opp *opp)
> opp->enabled = false;
> return 0;
> }
> -
> -/* XXX document */
> -void opp_init_cpufreq_table(enum opp_t opp_type,
> - struct cpufreq_frequency_table **table)
> -{
> - int i = 0, j;
> - int opp_num;
> - struct cpufreq_frequency_table *freq_table;
> - struct omap_opp *opp;
> -
> - if (opp_type>= OPP_TYPES_MAX) {
> - pr_warning("%s: failed to initialize frequency"
> - "table\n", __func__);
> - return;
> - }
> -
> - opp_num = opp_get_opp_count(opp_type);
> - if (opp_num< 0) {
> - pr_err("%s: no opp table?\n", __func__);
> - return;
> - }
> -
> - freq_table = kmalloc(sizeof(struct cpufreq_frequency_table) *
> - (opp_num + 1), GFP_ATOMIC);
> - if (!freq_table) {
> - pr_warning("%s: failed to allocate frequency"
> - "table\n", __func__);
> - return;
> - }
> -
> - opp = _opp_list[opp_type];
> - opp += opp_num;
> - for (j = opp_num; j>= 0; j--) {
> - if (opp->enabled) {
> - freq_table[i].index = i;
> - freq_table[i].frequency = opp->rate / 1000;
> - i++;
> - }
> - opp--;
> - }
> -
> - freq_table[i].index = i;
> - freq_table[i].frequency = CPUFREQ_TABLE_END;
> -
> - *table =&freq_table[0];
> -}
not sure why you removed this..
next prev parent reply other threads:[~2010-05-31 17:29 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-31 12:39 [PATCHv1 1/1] omap3: pm: Delink opp layer and cpufreq Sanjeev Premi
2010-05-31 17:29 ` Nishanth Menon [this message]
2010-06-01 12:01 ` Premi, Sanjeev
2010-06-02 4:36 ` Nishanth Menon
2010-07-26 15:35 ` Premi, Sanjeev
2010-07-26 15:41 ` Nishanth Menon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C03F1E3.9030202@gmail.com \
--to=menon.nishanth@gmail.com \
--cc=linux-omap@vger.kernel.org \
--cc=premi@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.