[PATCH V3] OMAP3+: SR Layer Cleanup
Menon, Nishanth
nm at ti.com
Wed May 11 07:15:22 EDT 2011
On Wed, May 11, 2011 at 04:12, Shweta Gulati <shweta.gulati at ti.com> wrote:
> To set sr ntarget values for all volt_domain,
> volt_table is retrieved by doing a look_up of 'vdd_name'
> field from omap_hwmod but voltage domain pointer does not
> belong to omap_hwmod and is not used anywhere else.
> As a part of voltage layer and SR Layer clean up volt
> pointer is removed from omap_hwmod and added in dev
> attributes of SR.
>
> Tested on OMAP3630 SDP and OMAP4430 SDP Board
>
> Signed-off-by: Shweta Gulati <shweta.gulati at ti.com>
> Cc: Nishanth Menon <nm at ti.com>
> ---
> V3:
> Changed the Subject and Rephrased Commit log as reviewed
> by Nishanth Menon.
> V2:
> Rebased on latest 'pm-wip/voltdm_a' branch.
thanks.. actually it applies on voltdm_c branch as well :) might be
good if kevin where to roll it up
Regards,
Nishanth Menon
>
> arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 17 +++++++++++++----
> arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 19 ++++++++++++++++---
> arch/arm/mach-omap2/smartreflex.h | 10 ++++++++++
> arch/arm/mach-omap2/sr_device.c | 11 +++++++----
> arch/arm/plat-omap/include/plat/omap_hwmod.h | 1 -
> 5 files changed, 46 insertions(+), 12 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> index 3cd91ac..6a704bd 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> @@ -29,6 +29,7 @@
>
> #include "omap_hwmod_common_data.h"
>
> +#include "smartreflex.h"
> #include "prm-regbits-34xx.h"
> #include "cm-regbits-34xx.h"
> #include "wd_timer.h"
> @@ -2904,6 +2905,10 @@ static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = {
> };
>
> /* SR1 */
> +static struct omap_sr_dev_attr sr1_dev_attr = {
> + .voltdm_name = "mpu_iva",
> +};
> +
> static struct omap_hwmod_ocp_if *omap3_sr1_slaves[] = {
> &omap3_l4_core__sr1,
> };
> @@ -2912,7 +2917,6 @@ static struct omap_hwmod omap34xx_sr1_hwmod = {
> .name = "sr1_hwmod",
> .class = &omap34xx_smartreflex_hwmod_class,
> .main_clk = "sr1_fck",
> - .vdd_name = "mpu_iva",
> .prcm = {
> .omap2 = {
> .prcm_reg_id = 1,
> @@ -2924,6 +2928,7 @@ static struct omap_hwmod omap34xx_sr1_hwmod = {
> },
> .slaves = omap3_sr1_slaves,
> .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves),
> + .dev_attr = &sr1_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2 |
> CHIP_IS_OMAP3430ES3_0 |
> CHIP_IS_OMAP3430ES3_1),
> @@ -2934,7 +2939,6 @@ static struct omap_hwmod omap36xx_sr1_hwmod = {
> .name = "sr1_hwmod",
> .class = &omap36xx_smartreflex_hwmod_class,
> .main_clk = "sr1_fck",
> - .vdd_name = "mpu_iva",
> .prcm = {
> .omap2 = {
> .prcm_reg_id = 1,
> @@ -2946,10 +2950,15 @@ static struct omap_hwmod omap36xx_sr1_hwmod = {
> },
> .slaves = omap3_sr1_slaves,
> .slaves_cnt = ARRAY_SIZE(omap3_sr1_slaves),
> + .dev_attr = &sr1_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1),
> };
>
> /* SR2 */
> +static struct omap_sr_dev_attr sr2_dev_attr = {
> + .voltdm_name = "core",
> +};
> +
> static struct omap_hwmod_ocp_if *omap3_sr2_slaves[] = {
> &omap3_l4_core__sr2,
> };
> @@ -2958,7 +2967,6 @@ static struct omap_hwmod omap34xx_sr2_hwmod = {
> .name = "sr2_hwmod",
> .class = &omap34xx_smartreflex_hwmod_class,
> .main_clk = "sr2_fck",
> - .vdd_name = "core",
> .prcm = {
> .omap2 = {
> .prcm_reg_id = 1,
> @@ -2970,6 +2978,7 @@ static struct omap_hwmod omap34xx_sr2_hwmod = {
> },
> .slaves = omap3_sr2_slaves,
> .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves),
> + .dev_attr = &sr2_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2 |
> CHIP_IS_OMAP3430ES3_0 |
> CHIP_IS_OMAP3430ES3_1),
> @@ -2980,7 +2989,6 @@ static struct omap_hwmod omap36xx_sr2_hwmod = {
> .name = "sr2_hwmod",
> .class = &omap36xx_smartreflex_hwmod_class,
> .main_clk = "sr2_fck",
> - .vdd_name = "core",
> .prcm = {
> .omap2 = {
> .prcm_reg_id = 1,
> @@ -2992,6 +3000,7 @@ static struct omap_hwmod omap36xx_sr2_hwmod = {
> },
> .slaves = omap3_sr2_slaves,
> .slaves_cnt = ARRAY_SIZE(omap3_sr2_slaves),
> + .dev_attr = &sr2_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3630ES1),
> };
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> index 3e88dd3..1331b39 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
> @@ -30,6 +30,7 @@
>
> #include "omap_hwmod_common_data.h"
>
> +#include "smartreflex.h"
> #include "cm1_44xx.h"
> #include "cm2_44xx.h"
> #include "prm44xx.h"
> @@ -3775,6 +3776,10 @@ static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
> };
>
> /* smartreflex_core */
> +static struct omap_sr_dev_attr sr_core_dev_attr = {
> + .voltdm_name = "core",
> +};
> +
> static struct omap_hwmod omap44xx_smartreflex_core_hwmod;
> static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
> { .irq = 19 + OMAP44XX_IRQ_GIC_START },
> @@ -3809,7 +3814,6 @@ static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
> .mpu_irqs = omap44xx_smartreflex_core_irqs,
> .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_irqs),
> .main_clk = "smartreflex_core_fck",
> - .vdd_name = "core",
> .prcm = {
> .omap4 = {
> .clkctrl_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
> @@ -3817,10 +3821,15 @@ static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
> },
> .slaves = omap44xx_smartreflex_core_slaves,
> .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_slaves),
> + .dev_attr = &sr_core_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
> };
>
> /* smartreflex_iva */
> +static struct omap_sr_dev_attr sr_iva_dev_attr = {
> + .voltdm_name = "iva",
> +};
> +
> static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;
> static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
> { .irq = 102 + OMAP44XX_IRQ_GIC_START },
> @@ -3855,7 +3864,6 @@ static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
> .mpu_irqs = omap44xx_smartreflex_iva_irqs,
> .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_irqs),
> .main_clk = "smartreflex_iva_fck",
> - .vdd_name = "iva",
> .prcm = {
> .omap4 = {
> .clkctrl_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
> @@ -3863,10 +3871,15 @@ static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
> },
> .slaves = omap44xx_smartreflex_iva_slaves,
> .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),
> + .dev_attr = &sr_iva_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
> };
>
> /* smartreflex_mpu */
> +static struct omap_sr_dev_attr sr_mpu_dev_attr = {
> + .voltdm_name = "mpu",
> +};
> +
> static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;
> static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
> { .irq = 18 + OMAP44XX_IRQ_GIC_START },
> @@ -3901,7 +3914,6 @@ static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
> .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
> .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_irqs),
> .main_clk = "smartreflex_mpu_fck",
> - .vdd_name = "mpu",
> .prcm = {
> .omap4 = {
> .clkctrl_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
> @@ -3909,6 +3921,7 @@ static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
> },
> .slaves = omap44xx_smartreflex_mpu_slaves,
> .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),
> + .dev_attr = &sr_mpu_dev_attr,
> .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
> };
>
> diff --git a/arch/arm/mach-omap2/smartreflex.h b/arch/arm/mach-omap2/smartreflex.h
> index 5f35b9e..9a7f770 100644
> --- a/arch/arm/mach-omap2/smartreflex.h
> +++ b/arch/arm/mach-omap2/smartreflex.h
> @@ -197,6 +197,16 @@ struct omap_sr_nvalue_table {
> };
>
> /**
> + * struct omap_sr_dev_attr - Smartreflex Device attribute.
> + *
> + * @voltdm_name: Name of voltdomain of SR instance
> + */
> +
> +struct omap_sr_dev_attr {
> + const char *voltdm_name;
> +};
> +
> +/**
> * struct omap_sr_data - Smartreflex platform data.
> *
> * @ip_type: Smartreflex IP type.
> diff --git a/arch/arm/mach-omap2/sr_device.c b/arch/arm/mach-omap2/sr_device.c
> index 2782d3f..65b2aae 100644
> --- a/arch/arm/mach-omap2/sr_device.c
> +++ b/arch/arm/mach-omap2/sr_device.c
> @@ -82,6 +82,7 @@ static int sr_dev_init(struct omap_hwmod *oh, void *user)
> struct omap_sr_data *sr_data;
> struct omap_device *od;
> struct omap_volt_data *volt_data;
> + struct omap_sr_dev_attr *sr_dev_attr;
> char *name = "smartreflex";
> static int i;
>
> @@ -92,9 +93,11 @@ static int sr_dev_init(struct omap_hwmod *oh, void *user)
> return -ENOMEM;
> }
>
> - if (!oh->vdd_name) {
> + sr_dev_attr = (struct omap_sr_dev_attr *)oh->dev_attr;
> + if (!sr_dev_attr->voltdm_name) {
> pr_err("%s: No voltage domain specified for %s."
> - "Cannot initialize\n", __func__, oh->name);
> + "Cannot initialize\n", __func__,
> + sr_dev_attr->voltdm_name);
> goto exit;
> }
>
> @@ -102,10 +105,10 @@ static int sr_dev_init(struct omap_hwmod *oh, void *user)
> sr_data->senn_mod = 0x1;
> sr_data->senp_mod = 0x1;
>
> - sr_data->voltdm = voltdm_lookup(oh->vdd_name);
> + sr_data->voltdm = voltdm_lookup(sr_dev_attr->voltdm_name);
> if (IS_ERR(sr_data->voltdm)) {
> pr_err("%s: Unable to get voltage domain pointer for VDD %s\n",
> - __func__, oh->vdd_name);
> + __func__, sr_dev_attr->voltdm_name);
> goto exit;
> }
>
> diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h
> index a5fa7c1..39d809a 100644
> --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
> +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
> @@ -519,7 +519,6 @@ struct omap_hwmod {
> const char *main_clk;
> struct clk *_clk;
> struct omap_hwmod_opt_clk *opt_clks;
> - char *vdd_name;
> struct omap_hwmod_ocp_if **masters; /* connect to *_IA */
> struct omap_hwmod_ocp_if **slaves; /* connect to *_TA */
> void *dev_attr;
> --
> 1.7.0.4
>
>
More information about the linux-arm-kernel
mailing list