Re: [RFC 0/7] OMAP: Basic DVFS framework

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

 



Thara Gopinath <thara@xxxxxx> writes:

> This patch series is RFC for support of Dynamic Voltage and
> Frequency Scaling (DVFS) for OMAP devices. DVFS is a technique that
> uses the optimal operating frequency and voltage to allow a task to be
> performed in the required amount of time.
> OMAP processors have voltage domains whose voltage can be scaled to
> various levels depending on which the operating frequencies of certain
> devices belonging to the domain will also need to be scaled. This voltage
> frequency tuple is known as Operating Performance Point (OPP). A device
> can have multiple OPP's. Also a voltage domain could be shared between
> multiple devices. Also there could be dependencies between various
> voltage domains for maintaining system performance like VDD<X>
> should be at voltage v1 when VDD<Y> is at voltage v2.
>
> The design of this framework take into account all the above mentioned points.
> To summarize the basic design of DVFS framework:-
>
> 1. Have device opp tables for each device whose operating frequency can be
>    scaled. This is easy now due to the existance of hwmod layer which
>    allow storing of device specific info. The device opp tables contain
>    the opp pairs (frequency voltage tuples), the voltage domain pointer
>    to which the device belongs to, the device specific set_rate and
>    get_rate API's which will do the actual scaling of the device frequency
>    and retrieve the current device frequency.
> 2. Introduce use counting on a per VDD basis. This is to take care multiple
>    requests to scale a VDD. The VDD will be scaled to the maximum of the
>    voltages requested.
> 3. Keep track of all scalable devices belonging to a particular voltage
>    domain the voltage layer.
> 4. Generic API in the omap device layer which can be called by anybody
>    to scale a device opp. This API will take in the device pointer and
>    frequency to which the device needs to be scaled to. This API will
>    then internally find out the voltage domain to which the device
>    belongs to and the voltage to which the voltage domain needs to
>    be put to for the device to be scaled to the new frequency from
>    the device opp table. Then this API will call into the newly
>    introduced API in voltage layer (as mentioned in 2) to see if
>    there are other requests for the associated voltage domain to
>    be at a voltage higher than the current chosen one. If not this
>    API will go ahead and scale the voltage domain to the new voltage,
>    run through the list of all scalable devices belonging to this
>    voltage domain and scale them to the appropriate frequencies using
>    the set_rate pointer in the device opp table.s
>
> Work pending -
> 1. Handle inter VDD dependencies.
> 2. Add OMAP4 support.
>
> Contributors to conceptualization of the design include
> Benoit Cousson <b-cousson@xxxxxx>,
> Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx>,
> Paul Wamsley <paul@xxxxxxxxx>,
> Vishwanath Sripathy <vishwanath.bs@xxxxxx>
> Parthasarathy Basak <p-basak2@xxxxxx>
> Anand Sawant <sawant@xxxxxx>
>
> This patch series is primarily based of pm-sr branch of kevin's PM tree due to
> it's dependency on the newly introduced opp and voltage layer. On top of this
> branch I had to apply a few patches to test out dvfs using cpufreq framework.
> The following are the link to these additional patches.
> 	https://patchwork.kernel.org/patch/107876/

This patch does not apply directly to the current pm-sr branch, and also
had some review comments to be addressed.

> 	http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=aa14cb9937e67c48f760c99a3c7fb3b2e7f5e623
> 	http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=8f1298921d10789bb2f0a2d56cd3b92d844a1450
> 	http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=10474ce3b07949d791b419aad433590e072e7159
> 	http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=52fd40b873f8cd5aaea2d01d86ef35017c207eba
> 	http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=commit;h=57a2e45ff4a596a175aba27ae55a2b0d99adc3b5	

This looks like the current pm-cpufreq branch.  Did you just merge
pm-cpufreq or manually apply these?

Can you please make this available using a git tree so we can determine
exactly what was used to put this together?

Your series doesn't apply directly to pm-sr neither does the above patch
from patchwork, so I cannot currently apply this to anything.

> This series has been tested on OMAP3430 SDP for mpu and iva DVFS through
> cpu freq framework.

Just to clarify, you're testing this without SRF correct?  Based on the
above description, I assume you no longer have SRF code included, but I
just want to be sure.

Kevin

> Thara Gopinath (7):
>   OMAP: Introduce a user list for each voltage domain instance in the
>     voltage driver.
>   OMAP: Introduce API in the OPP layer to find the opp entry
>     corresponding to a voltage.
>   OMAP: Introduce voltage domain pointer and device specific set rate
>     and get rate in device opp structures.
>   OMAP: Voltage layer changes to support DVFS.
>   OMAP: Introduce device set_rate and get_rate.
>   OMAP3: Update OMAP3 opp tables to contain the voltage domain and
>     device set rate get rate info
>   OMAP3: Update cpufreq driver to use the new set_rate API
>
>  arch/arm/mach-omap2/cpufreq34xx.c             |  160 +++++++++++++++++++----
>  arch/arm/mach-omap2/voltage.c                 |  172 ++++++++++++++++++++++++-
>  arch/arm/plat-omap/cpu-omap.c                 |    5 +-
>  arch/arm/plat-omap/include/plat/omap_device.h |    2 +
>  arch/arm/plat-omap/include/plat/opp.h         |   39 ++++++-
>  arch/arm/plat-omap/include/plat/voltage.h     |    6 +-
>  arch/arm/plat-omap/omap_device.c              |   87 +++++++++++++
>  arch/arm/plat-omap/opp.c                      |   75 +++++++++--
>  8 files changed, 505 insertions(+), 41 deletions(-)
--
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