From patchwork Wed Apr 3 22:13:16 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Valentin X-Patchwork-Id: 2389401 X-Patchwork-Delegate: rui.zhang@intel.com Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id B82AA3FD8C for ; Wed, 3 Apr 2013 22:14:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760450Ab3DCWOb (ORCPT ); Wed, 3 Apr 2013 18:14:31 -0400 Received: from bear.ext.ti.com ([192.94.94.41]:56161 "EHLO bear.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755939Ab3DCWOb (ORCPT ); Wed, 3 Apr 2013 18:14:31 -0400 Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by bear.ext.ti.com (8.13.7/8.13.7) with ESMTP id r33MEUEA024483; Wed, 3 Apr 2013 17:14:30 -0500 Received: from DFLE73.ent.ti.com (dfle73.ent.ti.com [128.247.5.110]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id r33MEUnd029234; Wed, 3 Apr 2013 17:14:30 -0500 Received: from dlelxv24.itg.ti.com (172.17.1.199) by DFLE73.ent.ti.com (128.247.5.110) with Microsoft SMTP Server id 14.2.342.3; Wed, 3 Apr 2013 17:14:29 -0500 Received: from legion.dal.design.ti.com (legion.dal.design.ti.com [128.247.22.53]) by dlelxv24.itg.ti.com (8.13.8/8.13.8) with ESMTP id r33METrQ003913; Wed, 3 Apr 2013 17:14:29 -0500 Received: from localhost (h68-3.vpn.ti.com [172.24.68.3]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id r33MEPV12349; Wed, 3 Apr 2013 17:14:26 -0500 (CDT) From: Eduardo Valentin To: CC: , , , Eduardo Valentin Subject: [PATCHv2 2/3] thermal: expose thermal_zone_get_temp API Date: Wed, 3 Apr 2013 18:13:16 -0400 Message-ID: <1365027197-2793-3-git-send-email-eduardo.valentin@ti.com> X-Mailer: git-send-email 1.7.7.1.488.ge8e1c In-Reply-To: <1365027197-2793-1-git-send-email-eduardo.valentin@ti.com> References: <1365027197-2793-1-git-send-email-eduardo.valentin@ti.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org This patch exports the thermal_zone_get_temp API so that driver writers can fetch temperature of thermal zones managed by other drivers. Signed-off-by: Eduardo Valentin Acked-By: Durgadoss R --- drivers/thermal/thermal_sys.c | 20 +++++++++++++++++--- include/linux/thermal.h | 1 + 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c index 6e1da0a..e8afb7f 100644 --- a/drivers/thermal/thermal_sys.c +++ b/drivers/thermal/thermal_sys.c @@ -371,16 +371,28 @@ static void handle_thermal_trip(struct thermal_zone_device *tz, int trip) monitor_thermal_zone(tz); } -static int thermal_zone_get_temp(struct thermal_zone_device *tz, - unsigned long *temp) +/** + * thermal_zone_get_temp() - returns its the temperature of thermal zone + * @tz: a valid pointer to a struct thermal_zone_device + * @temp: a valid pointer to where to store the resulting temperature. + * + * When a valid thermal zone reference is passed, it will fetch its + * temperature and fill @temp. + * + * Return: On success returns 0, an error code otherwise + */ +int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp) { - int ret = 0; + int ret = -EINVAL; #ifdef CONFIG_THERMAL_EMULATION int count; unsigned long crit_temp = -1UL; enum thermal_trip_type type; #endif + if (IS_ERR_OR_NULL(tz)) + goto exit; + mutex_lock(&tz->lock); ret = tz->ops->get_temp(tz, temp); @@ -404,8 +416,10 @@ static int thermal_zone_get_temp(struct thermal_zone_device *tz, skip_emul: #endif mutex_unlock(&tz->lock); +exit: return ret; } +EXPORT_SYMBOL_GPL(thermal_zone_get_temp); static void update_temperature(struct thermal_zone_device *tz) { diff --git a/include/linux/thermal.h b/include/linux/thermal.h index 0cf9eb5..8eea86c 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -238,6 +238,7 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *, void *, const struct thermal_cooling_device_ops *); void thermal_cooling_device_unregister(struct thermal_cooling_device *); struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name); +int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp); int thermal_zone_trend_get(struct thermal_zone_device *, int); struct thermal_instance *thermal_instance_get(struct thermal_zone_device *,