Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932191Ab3CYGUe (ORCPT ); Mon, 25 Mar 2013 02:20:34 -0400 Received: from mga01.intel.com ([192.55.52.88]:6786 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932156Ab3CYGUc (ORCPT ); Mon, 25 Mar 2013 02:20:32 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.84,902,1355126400"; d="scan'208";a="311411876" From: "R, Durgadoss" To: "Zhang, Rui" , Eduardo Valentin CC: "linux-pm@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH 1/2] thermal: introduce thermal_zone_lookup_temperature helper function Thread-Topic: [PATCH 1/2] thermal: introduce thermal_zone_lookup_temperature helper function Thread-Index: AQHOJ0KDnJ+mHwhbq0aIU2P+QPfuzJi1lDeAgABeXtA= Date: Mon, 25 Mar 2013 06:20:27 +0000 Message-ID: <4D68720C2E767A4AA6A8796D42C8EB59C57DBF@BGSMSX101.gar.corp.intel.com> References: <1363986787-28147-1-git-send-email-eduardo.valentin@ti.com> <1363986787-28147-2-git-send-email-eduardo.valentin@ti.com> <1364191837.2465.7.camel@rzhang1-mobl4> In-Reply-To: <1364191837.2465.7.camel@rzhang1-mobl4> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.223.10.10] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id r2P6Kapo026128 Content-Length: 3169 Lines: 89 > -----Original Message----- > From: linux-pm-owner@vger.kernel.org [mailto:linux-pm- > owner@vger.kernel.org] On Behalf Of Zhang Rui > Sent: Monday, March 25, 2013 11:41 AM > To: Eduardo Valentin > Cc: linux-pm@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: Re: [PATCH 1/2] thermal: introduce > thermal_zone_lookup_temperature helper function > > On Fri, 2013-03-22 at 17:13 -0400, Eduardo Valentin wrote: > > This patch adds a helper function to get temperature of > > a thermal zone, based on the zone type name. > > > > It will perform a zone name lookup and return the last > > sensor temperature reading. In case the zone is not found > > or if the required parameters are invalid, it will return > > the corresponding error code. > > > > Signed-off-by: Eduardo Valentin > > --- > > drivers/thermal/thermal_sys.c | 32 > ++++++++++++++++++++++++++++++++ > > include/linux/thermal.h | 1 + > > 2 files changed, 33 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c > > index 5bd95d4..f0caa13 100644 > > --- a/drivers/thermal/thermal_sys.c > > +++ b/drivers/thermal/thermal_sys.c > > @@ -1790,6 +1790,38 @@ void thermal_zone_device_unregister(struct > thermal_zone_device *tz) > > } > > EXPORT_SYMBOL_GPL(thermal_zone_device_unregister); > > > > +/** > > + * thermal_lookup_temperature - search for a zone and returns its > temperature > > + * @name: thermal zone name to fetch the temperature > > + * @temperature: pointer to store the zone temperature, in case it is > found > > + * > > + * When the zone is found, updates @temperature and returns 0. > > + * > > + * Return: -EINVAL in case of wrong parameters, -ENODEV in case the > zone > > + * is not found and 0 when it is successfully found. > > + */ > > +int thermal_zone_lookup_temperature(const char *name, int > *temperature) > > +{ > > + struct thermal_zone_device *pos = NULL; > > + bool found = false; > > + > > + if (!name || !temperature) > > + return -EINVAL; > > + > > + mutex_lock(&thermal_list_lock); > > + list_for_each_entry(pos, &thermal_tz_list, node) > > + if (!strcmp(pos->type, name)) { > > + found = true; > > + break; > > + } > > + if (found) > > + *temperature = pos->last_temperature; > > + mutex_unlock(&thermal_list_lock); > > + > > + return found ? 0 : -ENODEV; > > +} > > +EXPORT_SYMBOL_GPL(thermal_zone_lookup_temperature); > > + > please do not use thermal zone type as the parameter because unique > thermal zone type string is not a hard rule. Okay, agree with this. This is what I am implementing in my changes as well. > If this is really needed, I'd prefer two APIs instead > 1. struct thermal_zone_device * thermal_zone_get_zone_by_name(char > *name); > 2. int thermal_zone_get_temperature(struct thermal_zone_device *, int > *temperature); Why do we need this second API? If the driver has a 'tz' pointer, it can use tz->ops->get_temp to retrieve the temperature, right ? Thanks, Durga ????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?