1. 01 8月, 2019 1 次提交
  2. 27 6月, 2019 1 次提交
  3. 14 5月, 2019 1 次提交
    • G
      thermal: Introduce devm_thermal_of_cooling_device_register · b4ab114c
      Guenter Roeck 提交于
      thermal_of_cooling_device_register() and thermal_cooling_device_register()
      are typically called from driver probe functions, and
      thermal_cooling_device_unregister() is called from remove functions. This
      makes both a perfect candidate for device managed functions.
      
      Introduce devm_thermal_of_cooling_device_register(). This function can
      also be used to replace thermal_cooling_device_register() by passing a NULL
      pointer as device node. The new function requires both struct device *
      and struct device_node * as parameters since the struct device_node *
      parameter is not always identical to dev->of_node.
      
      Don't introduce a device managed remove function since it is not needed
      at this point.
      Signed-off-by: NGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      b4ab114c
  4. 06 5月, 2019 1 次提交
  5. 30 5月, 2018 1 次提交
  6. 02 4月, 2018 1 次提交
    • V
      thermal: Add cooling device's statistics in sysfs · 8ea22951
      Viresh Kumar 提交于
      This extends the sysfs interface for thermal cooling devices and exposes
      some pretty useful statistics. These statistics have proven to be quite
      useful specially while doing benchmarks related to the task scheduler,
      where we want to make sure that nothing has disrupted the test,
      specially the cooling device which may have put constraints on the CPUs.
      The information exposed here tells us to what extent the CPUs were
      constrained by the thermal framework.
      
      The write-only "reset" file is used to reset the statistics.
      
      The read-only "time_in_state_ms" file shows the time (in msec) spent by the
      device in the respective cooling states, and it prints one line per
      cooling state.
      
      The read-only "total_trans" file shows single positive integer value
      showing the total number of cooling state transitions the device has
      gone through since the time the cooling device is registered or the time
      when statistics were reset last.
      
      The read-only "trans_table" file shows a two dimensional matrix, where
      an entry <i,j> (row i, column j) represents the number of transitions
      from State_i to State_j.
      
      This is how the directory structure looks like for a single cooling
      device:
      
      $ ls -R /sys/class/thermal/cooling_device0/
      /sys/class/thermal/cooling_device0/:
      cur_state  max_state  power  stats  subsystem  type  uevent
      
      /sys/class/thermal/cooling_device0/power:
      autosuspend_delay_ms  runtime_active_time  runtime_suspended_time
      control               runtime_status
      
      /sys/class/thermal/cooling_device0/stats:
      reset  time_in_state_ms  total_trans  trans_table
      
      This is tested on ARM 64-bit Hisilicon hikey620 board running Ubuntu and
      ARM 64-bit Hisilicon hikey960 board running Android.
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      8ea22951
  7. 17 10月, 2017 1 次提交
  8. 11 8月, 2017 1 次提交
  9. 04 1月, 2017 1 次提交
  10. 23 11月, 2016 1 次提交
    • E
      thermal: core: move trips attributes to tz->device.groups · 4d0fe749
      Eduardo Valentin 提交于
      Finally, move the last thermal zone sysfs attributes to
      tz->device.groups: trips attributes. This requires adding a
      attribute_group to thermal_zone_device, creating it dynamically, and
      then setting all trips attributes in it. The trips attribute is then
      added to the tz->device.groups.
      
      As the removal of all attributes are handled by device core, the device
      remove calls are not needed anymore.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: linux-pm@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      4d0fe749
  11. 27 9月, 2016 5 次提交
  12. 01 6月, 2016 1 次提交
  13. 17 5月, 2016 1 次提交
  14. 21 4月, 2016 1 次提交
  15. 18 3月, 2016 1 次提交
  16. 10 3月, 2016 1 次提交
  17. 29 12月, 2015 2 次提交
  18. 24 11月, 2015 1 次提交
    • A
      thermal: fix thermal_zone_bind_cooling_device prototype · c86b3de8
      Arnd Bergmann 提交于
      When the prototype for thermal_zone_bind_cooling_device
      changed, the static inline wrapper function was left alone,
      which in theory can cause build warnings:
      
      I have seen this error in the past:
      drivers/thermal/db8500_thermal.c: In function 'db8500_cdev_bind':
      drivers/thermal/db8500_thermal.c:78:9: error: too many arguments to function 'thermal_zone_bind_cooling_device'
         ret = thermal_zone_bind_cooling_device(thermal, i, cdev,
      
      while this one no longer shows up, there is no doubt that
      the prototype is still wrong, so let's just fix it anyway.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: 6cd9e9f6 ("thermal: of: fix cooling device weights in device tree")
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      c86b3de8
  19. 10 10月, 2015 1 次提交
  20. 14 9月, 2015 2 次提交
  21. 03 8月, 2015 1 次提交
    • S
      thermal: consistently use int for temperatures · 17e8351a
      Sascha Hauer 提交于
      The thermal code uses int, long and unsigned long for temperatures
      in different places.
      
      Using an unsigned type limits the thermal framework to positive
      temperatures without need. Also several drivers currently will report
      temperatures near UINT_MAX for temperatures below 0°C. This will probably
      immediately shut the machine down due to overtemperature if started below
      0°C.
      
      'long' is 64bit on several architectures. This is not needed since INT_MAX °mC
      is above the melting point of all known materials.
      
      Consistently use a plain 'int' for temperatures throughout the thermal code and
      the drivers. This only changes the places in the drivers where the temperature
      is passed around as pointer, when drivers internally use another type this is
      not changed.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      Acked-by: NGeert Uytterhoeven <geert+renesas@glider.be>
      Reviewed-by: NJean Delvare <jdelvare@suse.de>
      Reviewed-by: NLukasz Majewski <l.majewski@samsung.com>
      Reviewed-by: NDarren Hart <dvhart@linux.intel.com>
      Reviewed-by: NHeiko Stuebner <heiko@sntech.de>
      Reviewed-by: NPeter Feuerer <peter@piie.net>
      Cc: Punit Agrawal <punit.agrawal@arm.com>
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Cc: linux-pm@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: Jean Delvare <jdelvare@suse.de>
      Cc: Peter Feuerer <peter@piie.net>
      Cc: Heiko Stuebner <heiko@sntech.de>
      Cc: Lukasz Majewski <l.majewski@samsung.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: linux-acpi@vger.kernel.org
      Cc: platform-driver-x86@vger.kernel.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-omap@vger.kernel.org
      Cc: linux-samsung-soc@vger.kernel.org
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Cc: Darren Hart <dvhart@infradead.org>
      Cc: lm-sensors@lm-sensors.org
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      17e8351a
  22. 12 5月, 2015 1 次提交
    • E
      thermal: support slope and offset coefficients · 9d0be7f4
      Eduardo Valentin 提交于
      It is common to have a linear extrapolation from
      the current sensor readings and the actual temperature
      value. This is specially the case when the sensor
      is in use to extrapolate hotspots.
      
      This patch adds slope and offset constants for
      single sensor linear extrapolation equation. Because
      the same sensor can be use in different locations,
      from board to board, these constants are added
      as part of thermal_zone_params.
      
      The constants are available through sysfs.
      
      It is up to the device driver to determine
      the usage of these values.
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      9d0be7f4
  23. 05 5月, 2015 5 次提交
    • J
      thermal: introduce the Power Allocator governor · 6b775e87
      Javi Merino 提交于
      The power allocator governor is a thermal governor that controls system
      and device power allocation to control temperature.  Conceptually, the
      implementation divides the sustainable power of a thermal zone among
      all the heat sources in that zone.
      
      This governor relies on "power actors", entities that represent heat
      sources.  They can report current and maximum power consumption and
      can set a given maximum power consumption, usually via a cooling
      device.
      
      The governor uses a Proportional Integral Derivative (PID) controller
      driven by the temperature of the thermal zone.  The output of the
      controller is a power budget that is then allocated to each power
      actor that can have bearing on the temperature we are trying to
      control.  It decides how much power to give each cooling device based
      on the performance they are requesting.  The PID controller ensures
      that the total power budget does not exceed the control temperature.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Signed-off-by: NPunit Agrawal <punit.agrawal@arm.com>
      Signed-off-by: NJavi Merino <javi.merino@arm.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      6b775e87
    • J
      thermal: extend the cooling device API to include power information · 35b11d2e
      Javi Merino 提交于
      Add three optional callbacks to the cooling device interface to allow
      them to express power.  In addition to the callbacks, add helpers to
      identify cooling devices that implement the power cooling device API.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Signed-off-by: NJavi Merino <javi.merino@arm.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      35b11d2e
    • J
      thermal: let governors have private data for each thermal zone · e33df1d2
      Javi Merino 提交于
      A governor may need to store its current state between calls to
      throttle().  That state depends on the thermal zone, so store it as
      private data in struct thermal_zone_device.
      
      The governors may have two new ops: bind_to_tz() and unbind_from_tz().
      When provided, these functions let governors do some initialization
      and teardown when they are bound/unbound to a tz and possibly store that
      information in the governor_data field of the struct
      thermal_zone_device.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Signed-off-by: NJavi Merino <javi.merino@arm.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      e33df1d2
    • J
      thermal: fair_share: generalize the weight concept · bcdcbbc7
      Javi Merino 提交于
      The fair share governor has the concept of weights, which is the
      influence of each cooling device in a thermal zone.  The current
      implementation forces the weights of all cooling devices in a thermal
      zone to add up to a 100.  This complicates setups, as you need to know
      in advance how many cooling devices you are going to have.  If you bind a
      new cooling device, you have to modify all the other cooling devices
      weights, which is error prone.  Furthermore, you can't specify a
      "default" weight for platforms since that default value depends on the
      number of cooling devices in the platform.
      
      This patch generalizes the concept of weight by allowing any number to
      be a "weight".  Weights are now relative to each other.  Platforms that
      don't specify weights get the same default value for all their cooling
      devices, so all their cdevs are considered to be equally influential.
      
      It's important to note that previous users of the weights don't need to
      alter the code: percentages continue to work as they used to.  This
      patch just removes the constraint of all the weights in a thermal zone
      having to add up to a 100.  If they do, you get the same behavior as
      before.  If they don't, fair share now works for that platform.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Cc: Durgadoss R <durgadoss.r@intel.com>
      Acked-by: NDurgadoss R <durgadoss.r@intel.com>
      Signed-off-by: NJavi Merino <javi.merino@arm.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      bcdcbbc7
    • K
      thermal: of: fix cooling device weights in device tree · 6cd9e9f6
      Kapileshwar Singh 提交于
      Currently you can specify the weight of the cooling device in the device
      tree but that information is not populated to the
      thermal_bind_params where the fair share governor expects it to
      be.  The of thermal zone device doesn't have a thermal_bind_params
      structure and arguably it's better to pass the weight inside the
      thermal_instance as it is specific to the bind of a cooling device to a
      thermal zone parameter.
      
      Core thermal code is fixed to populate the weight in the instance from
      the thermal_bind_params, so platform code that was passing the weight
      inside the thermal_bind_params continue to work seamlessly.
      
      While we are at it, create a default value for the weight parameter for
      those thermal zones that currently don't define it and remove the
      hardcoded default in of-thermal.
      
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Peter Feuerer <peter@piie.net>
      Cc: Darren Hart <dvhart@infradead.org>
      Cc: Eduardo Valentin <edubezval@gmail.com>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Durgadoss R <durgadoss.r@intel.com>
      Signed-off-by: NKapileshwar Singh <kapileshwar.singh@arm.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      6cd9e9f6
  24. 25 2月, 2015 1 次提交
  25. 10 12月, 2014 1 次提交
  26. 09 12月, 2014 3 次提交
  27. 20 11月, 2014 1 次提交
    • E
      thermal: of: improve of-thermal sensor registration API · 2251aef6
      Eduardo Valentin 提交于
      Different drivers request API extensions in of-thermal. For this reason,
      additional callbacks are required to fit the new drivers needs.
      
      The current API implementation expects the registering sensor driver
      to provide a get_temp and get_trend callbacks as function parameters.
      As the amount of callbacks is growing, this patch changes the existing
      implementation to use a .ops field to hold all the of thermal callbacks
      to sensor drivers.
      
      This patch also changes the existing of-thermal users to fit the new
      API design. No functional change is introduced in this patch.
      
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: devicetree@vger.kernel.org
      Cc: Grant Likely <grant.likely@linaro.org>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: Jean Delvare <jdelvare@suse.de>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-pm@vger.kernel.org
      Cc: linux-tegra@vger.kernel.org
      Cc: lm-sensors@lm-sensors.org
      Cc: Rob Herring <robh+dt@kernel.org>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Cc: Thierry Reding <thierry.reding@gmail.com>
      Cc: Zhang Rui <rui.zhang@intel.com>
      Acked-by: NGuenter Roeck <linux@roeck-us.net>
      Tested-by: NMikko Perttunen <mikko.perttunen@kapsi.fi>
      Reviewed-by: NMikko Perttunen <mikko.perttunen@kapsi.fi>
      Reviewed-by: NAlexandre Courbot <acourbot@nvidia.com>
      Reviewed-by: NLukasz Majewski <l.majewski@samsung.com>
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      2251aef6
  28. 10 10月, 2014 1 次提交