Re: [PATCH v3 02/11] OMAP3: PM: Adding voltage driver support for OMAP3

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

 



Thara Gopinath <thara@xxxxxx> writes:

> This patch adds voltage driver support for OMAP3. The driver
> allows  configuring the voltage controller and voltage
> processors during init and exports APIs to enable/disable
> voltage processors, scale voltage and reset voltage.
> The driver also maintains the global voltage table on a per
> VDD basis which contains the various voltages supported by the
> VDD along with per voltage dependent data like smartreflex
> n-target value, errminlimit and voltage processor errorgain.
> The driver allows scaling of VDD voltages either through
> "vc bypass method" or through "vp forceupdate method" the
> choice being configurable through the board file.
>
> This patch contains code originally in linux omap pm branch
> smartreflex driver.  Major contributors to this driver are
> Lesly A M, Rajendra Nayak, Kalle Jokiniemi, Paul Walmsley,
> Nishant Menon, Kevin Hilman.
>
> Signed-off-by: Thara Gopinath <thara@xxxxxx>

[...]

> +static void __init vdd_data_configure(struct omap_vdd_info *vdd)
> +{
> +	if (cpu_is_omap34xx())
> +		omap3_vdd_data_configure(vdd);
> +}
> +
> +static void __init init_voltagecontroller(void)
> +{
> +	if (cpu_is_omap34xx())
> +		omap3_init_voltagecontroller();
> +}

Drop these two functions...

[...]

> +/**
> + * omap_voltage_init : Volatage init API which does VP and VC init.
> + */
> +static int __init omap_voltage_init(void)
> +{
> +	int i;

...and setup function pointers in these cpu_is checks.  Something like
the below (not even compile tested.)

       void (*vdd_data_configure)(void);
       void (*init_voltageprocessor)(void);

> +
> +	if (cpu_is_omap34xx()) {
> +		volt_mod = OMAP3430_GR_MOD;
> +		vdd_info = omap3_vdd_info;
> +		nr_scalable_vdd = OMAP3_NR_SCALABLE_VDD;

                vdd_data_configure = omap3_vdd_data_configure;
                init_voltageprocessor = omap3_init_voltageprocessor;

> +	} else {
> +		pr_warning("%s: voltage driver support not added\n", __func__);
> +		return 0;
> +	}
> +	init_voltagecontroller();
> +	for (i = 0; i < nr_scalable_vdd; i++) {
> +		vdd_data_configure(&vdd_info[i]);
> +		init_voltageprocessor(&vdd_info[i]);
> +	}
> +	return 0;
> +}
> +core_initcall(omap_voltage_init);

We really want to minimize the cpu_is_* checks, and ideally they should
only be present in the first __init function.

Kevin
--
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