Re: [linux-pm] [PATCH v6 1/6] thermal: add generic cpufreq cooling implementation
On 16 August 2012 20:22, Valentin, Eduardo wrote: > > Amit, > > Thanks again for keeping this up. > > On Thu, Aug 16, 2012 at 2:41 PM, Amit Daniel Kachhap > wrote: > > This patchset introduces a new generic cooling device based on cpufreq > > that can be used on non-ACPI platforms. As a proof of concept, we have > > drivers for the following platforms using this mechanism now: > > > > * Samsung Exynos (Exynos4 and Exynos5) in the current patchset. > > * Freescale i.MX (git://git.linaro.org/people/amitdanielk/linux.git > > imx6q_thermal) > > FYI, the OMAP code is under drivers/staging/omap-thermal/. The file > omap-thermal-common.c is the one which is using your generic cooling > device. But it needs to be updated accordingly to the API change you > mention. > > > > > There is a small change in cpufreq cooling registration APIs, so a minor > > change is needed for Freescale platforms. > > > > Brief Description: > > > > 1) The generic cooling devices code is placed inside driver/thermal/* > >as placing inside acpi folder will need un-necessary enabling of acpi > >code. This code is architecture independent. > > > > 2) This patchset adds generic cpu cooling low level implementation > >through frequency clipping. In future, other cpu related cooling > >devices may be added here. An ACPI version of this already exists > >(drivers/acpi/processor_thermal.c) .But this will be useful for > >platforms like ARM using the generic thermal interface along with the > >generic cpu cooling devices. The cooling device registration API's > >return cooling device pointers which can be easily binded with the > >thermal zone trip points. The important APIs exposed are, > > > >a) struct thermal_cooling_device *cpufreq_cooling_register( > > struct cpumask *clip_cpus) > >b) void cpufreq_cooling_unregister(struct thermal_cooling_device > > *cdev) > > > > 3) Samsung exynos platform thermal implementation is done using the > >generic cpu cooling APIs and the new trip type. The temperature > > sensor > >driver present in the hwmon folder(registered as hwmon driver) is > > moved > >to thermal folder and registered as a thermal driver. > > > > A simple data/control flow diagrams is shown below, > > > > Core Linux thermal <-> Exynos thermal interface <- Temperature > > Sensor > > | | > > \|/| > > Cpufreq cooling device <--- > > > > TODO: > > *Will send the DT enablement patches later after the driver is merged. > > > > This patch: > > > > Add support for generic cpu thermal cooling low level implementations > > using frequency scaling up/down based on the registration parameters. > > Different cpu related cooling devices can be registered by the user and > > the binding of these cooling devices to the corresponding trip points > > can > > be easily done as the registration APIs return the cooling device > > pointer. > > The user of these APIs are responsible for passing clipping frequency . > > The drivers can also register to recieve notification about any cooling > > action called. > > > > [a...@linux-foundation.org: fix comment layout] > > Signed-off-by: Amit Daniel Kachhap > > Cc: Guenter Roeck > > Cc: SangWook Ju > > Cc: Durgadoss > > Cc: Len Brown > > Cc: Jean Delvare > > Cc: Kyungmin Park > > Cc: Kukjin Kim > > Signed-off-by: Andrew Morton > > Signed-off-by: Amit Daniel Kachhap > > > Reviewed-by: Eduardo Valentin Thanks Eduardo . > > > > --- > > Documentation/thermal/cpu-cooling-api.txt | 52 +++ > > drivers/thermal/Kconfig | 11 + > > drivers/thermal/Makefile |1 + > > drivers/thermal/cpu_cooling.c | 512 > > + > > include/linux/cpu_cooling.h | 79 + > > 5 files changed, 655 insertions(+), 0 deletions(-) > > create mode 100644 Documentation/thermal/cpu-cooling-api.txt > > create mode 100644 drivers/thermal/cpu_cooling.c > > create mode 100644 include/linux/cpu_cooling.h > > > > diff --git a/Documentation/thermal/cpu-cooling-api.txt > > b/Documentation/thermal/cpu-cooling-api.txt > > new file mode 100644 > > index 000..a1f2a6b > > --- /dev/null > > +++ b/Documentation/thermal/cpu-cooling-api.txt > > @@ -0,0 +1,52 @@ > > +CPU cooling APIs How To > > +=== > > + > > +Written by Amit Daniel Kachhap > > + > > +Updated: 12 May 2012 > > + > > +Copyright (c) 2012 Samsung Electronics Co., > > Ltd(http://www.samsung.com) > > + > > +0. Introduction > > + > > +The generic cpu cooling(freq clipping) provides > > registration/unregistration APIs > > +to the caller. The binding of the cooling devices to the trip point is > > left for > > +the user. The registration APIs returns the cooling device pointer. > > + > > +1. cpu cooling APIs > > + > > +1.1 cpufreq registration/unregistration APIs > > +1.1.1 struct thermal_coo
Re: [linux-pm] [PATCH v6 1/6] thermal: add generic cpufreq cooling implementation
Amit, Thanks again for keeping this up. On Thu, Aug 16, 2012 at 2:41 PM, Amit Daniel Kachhap wrote: > This patchset introduces a new generic cooling device based on cpufreq > that can be used on non-ACPI platforms. As a proof of concept, we have > drivers for the following platforms using this mechanism now: > > * Samsung Exynos (Exynos4 and Exynos5) in the current patchset. > * Freescale i.MX (git://git.linaro.org/people/amitdanielk/linux.git > imx6q_thermal) FYI, the OMAP code is under drivers/staging/omap-thermal/. The file omap-thermal-common.c is the one which is using your generic cooling device. But it needs to be updated accordingly to the API change you mention. > > There is a small change in cpufreq cooling registration APIs, so a minor > change is needed for Freescale platforms. > > Brief Description: > > 1) The generic cooling devices code is placed inside driver/thermal/* >as placing inside acpi folder will need un-necessary enabling of acpi >code. This code is architecture independent. > > 2) This patchset adds generic cpu cooling low level implementation >through frequency clipping. In future, other cpu related cooling >devices may be added here. An ACPI version of this already exists >(drivers/acpi/processor_thermal.c) .But this will be useful for >platforms like ARM using the generic thermal interface along with the >generic cpu cooling devices. The cooling device registration API's >return cooling device pointers which can be easily binded with the >thermal zone trip points. The important APIs exposed are, > >a) struct thermal_cooling_device *cpufreq_cooling_register( > struct cpumask *clip_cpus) >b) void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev) > > 3) Samsung exynos platform thermal implementation is done using the >generic cpu cooling APIs and the new trip type. The temperature sensor >driver present in the hwmon folder(registered as hwmon driver) is moved >to thermal folder and registered as a thermal driver. > > A simple data/control flow diagrams is shown below, > > Core Linux thermal <-> Exynos thermal interface <- Temperature Sensor > | | > \|/| > Cpufreq cooling device <--- > > TODO: > *Will send the DT enablement patches later after the driver is merged. > > This patch: > > Add support for generic cpu thermal cooling low level implementations > using frequency scaling up/down based on the registration parameters. > Different cpu related cooling devices can be registered by the user and > the binding of these cooling devices to the corresponding trip points can > be easily done as the registration APIs return the cooling device pointer. > The user of these APIs are responsible for passing clipping frequency . > The drivers can also register to recieve notification about any cooling > action called. > > [a...@linux-foundation.org: fix comment layout] > Signed-off-by: Amit Daniel Kachhap > Cc: Guenter Roeck > Cc: SangWook Ju > Cc: Durgadoss > Cc: Len Brown > Cc: Jean Delvare > Cc: Kyungmin Park > Cc: Kukjin Kim > Signed-off-by: Andrew Morton > Signed-off-by: Amit Daniel Kachhap Reviewed-by: Eduardo Valentin > --- > Documentation/thermal/cpu-cooling-api.txt | 52 +++ > drivers/thermal/Kconfig | 11 + > drivers/thermal/Makefile |1 + > drivers/thermal/cpu_cooling.c | 512 > + > include/linux/cpu_cooling.h | 79 + > 5 files changed, 655 insertions(+), 0 deletions(-) > create mode 100644 Documentation/thermal/cpu-cooling-api.txt > create mode 100644 drivers/thermal/cpu_cooling.c > create mode 100644 include/linux/cpu_cooling.h > > diff --git a/Documentation/thermal/cpu-cooling-api.txt > b/Documentation/thermal/cpu-cooling-api.txt > new file mode 100644 > index 000..a1f2a6b > --- /dev/null > +++ b/Documentation/thermal/cpu-cooling-api.txt > @@ -0,0 +1,52 @@ > +CPU cooling APIs How To > +=== > + > +Written by Amit Daniel Kachhap > + > +Updated: 12 May 2012 > + > +Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) > + > +0. Introduction > + > +The generic cpu cooling(freq clipping) provides registration/unregistration > APIs > +to the caller. The binding of the cooling devices to the trip point is left > for > +the user. The registration APIs returns the cooling device pointer. > + > +1. cpu cooling APIs > + > +1.1 cpufreq registration/unregistration APIs > +1.1.1 struct thermal_cooling_device *cpufreq_cooling_register( > + struct cpumask *clip_cpus) > + > +This interface function registers the cpufreq cooling device with the > name > +"thermal-cpufreq-%x". This api can support multiple instances of cpufreq > +cooling devices. > + > + clip_cpus: cpumask of cpus where the frequency constrain