From patchwork Sat Apr 23 23:34:26 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Valentin X-Patchwork-Id: 8919191 X-Patchwork-Delegate: rui.zhang@intel.com Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 741A19F441 for ; Sat, 23 Apr 2016 23:36:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 9305120219 for ; Sat, 23 Apr 2016 23:36:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 91175201FA for ; Sat, 23 Apr 2016 23:36:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752443AbcDWXgh (ORCPT ); Sat, 23 Apr 2016 19:36:37 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:35955 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751923AbcDWXez (ORCPT ); Sat, 23 Apr 2016 19:34:55 -0400 Received: by mail-pa0-f44.google.com with SMTP id er2so50883231pad.3; Sat, 23 Apr 2016 16:34:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=i6slp5jnXDSBANv6wF2bRa9G9NLOMoP1Aq6SUmDH0No=; b=IVEEWqJXNnumw85hTxAhgFu+TF7FYwPBKLwdF1Gt6IyFNVBsDbBJ1obkUIHxZZcAV/ 83c7/2p+GGSN3AW9txBs/77VuhgyeKd7iGBl7VDEZMkfLfqtzmyw/CqYWVV8ogZR8tEr 6A5agPHpfgznDjHw+AlTfu2YCtI+Z7VvEOEJI+phIEANvxpa32d03Br+/3j0x1B02gQg sT2faTdfTKQYjnGH42RAob115mb/i5/Cdt0qjVVWEtAznyyz62EGdbr9nuLtXDduOWUA Nbyysrkx+2SeAASFdYBqFeB+3mhnmypLcsoq5ieVN/j3DecvQYYgJajPeZga98/61441 CWxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=i6slp5jnXDSBANv6wF2bRa9G9NLOMoP1Aq6SUmDH0No=; b=Vl/toE1okNjmHp5GTpuvnPU7W9uN9Ys8rVJvAcPBw644g4D6k6AsAaiG1PO13FaNmw HPc9Wc7s6+wxM/KurQQzC+R7snsENAfwEma9eOteHcSTRmRxAU8j3X63IwaofPybtRur cFmeQzyOghS9ZHT5h2RWAlXjOUrKVE8JeLpHrWl5ruDGHXSq39Z/vMgxu3a60O3N6AnQ 6qotY1ZATfvAJ4mXy1jfNL8QmpqymT6Mpc1nYit2aRxPORO8aT1ddxl6iG69dofWWOqt tNQB7RFUnLyKDIBjwQT2eu9dJSZe50XlFdZfDpfn72mAqb3W1SZ9D+c5oZeCOwv0QX4p rHlw== X-Gm-Message-State: AOPr4FUzsGsCfpTRRw80csfea+1vc4B+ZfPdGyUiZ/ZUSqJpveZ2PAAbRGUOEF+Fp5JY8Q== X-Received: by 10.66.40.236 with SMTP id a12mr38898656pal.58.1461454494924; Sat, 23 Apr 2016 16:34:54 -0700 (PDT) Received: from localhost ([2601:647:4203:c8e0:7256:81ff:febd:926d]) by smtp.gmail.com with ESMTPSA id yl5sm18792781pac.38.2016.04.23.16.34.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Apr 2016 16:34:54 -0700 (PDT) From: Eduardo Valentin To: Rui Zhang Cc: Linux PM , LKML , Eduardo Valentin Subject: [RFC PATCH 07/11] thermal: move passive attr to tz->device.groups Date: Sat, 23 Apr 2016 16:34:26 -0700 Message-Id: <1461454470-27714-8-git-send-email-edubezval@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1461454470-27714-1-git-send-email-edubezval@gmail.com> References: <1461454470-27714-1-git-send-email-edubezval@gmail.com> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch moves the passive attribute to tz->device.groups. Moving the passive attribute also requires a .is_visible() callback implementation for its attribute group. The logic behind the visibility of passive attribute is kept the same. We only expose the passive attribute if the thermal driver has exposed at least one passive trip point. Cc: Zhang Rui Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Eduardo Valentin --- drivers/thermal/thermal_core.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 6e44038..e48c720 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -1054,9 +1054,41 @@ static struct attribute_group thermal_zone_mode_attribute_group = { .is_visible = thermal_zone_mode_is_visible, }; +/* We expose passive only if passive trips are present */ +static struct attribute *thermal_zone_passive_attrs[] = { + &dev_attr_passive.attr, +}; + +static umode_t thermal_zone_passive_is_visible(struct kobject *kobj, + struct attribute *attr, + int attrno) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct thermal_zone_device *tz; + enum thermal_trip_type trip_type; + int count; + + tz = container_of(dev, struct thermal_zone_device, device); + + for (count = 0; count < tz->trips; count++) { + tz->ops->get_trip_type(tz, count, &trip_type); + + if (trip_type == THERMAL_TRIP_PASSIVE) + return attr->mode; + } + + return 0; +} + +static struct attribute_group thermal_zone_passive_attribute_group = { + .attrs = thermal_zone_passive_attrs, + .is_visible = thermal_zone_passive_is_visible, +}; + static const struct attribute_group *thermal_zone_attribute_groups[] = { &thermal_zone_attribute_group, &thermal_zone_mode_attribute_group, + &thermal_zone_passive_attribute_group, NULL }; @@ -1841,7 +1873,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type, int trip_temp; int result; int count; - int passive = 0; struct thermal_governor *governor; if (!type || strlen(type) == 0) @@ -1902,8 +1933,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type, for (count = 0; count < trips; count++) { if (tz->ops->get_trip_type(tz, count, &trip_type)) set_bit(count, &tz->trips_disabled); - if (trip_type == THERMAL_TRIP_PASSIVE) - passive = 1; if (tz->ops->get_trip_temp(tz, count, &trip_temp)) set_bit(count, &tz->trips_disabled); /* Check for bogus trip points */ @@ -1911,12 +1940,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type, set_bit(count, &tz->trips_disabled); } - if (!passive) { - result = device_create_file(&tz->device, &dev_attr_passive); - if (result) - goto unregister; - } - /* Update 'this' zone's governor information */ mutex_lock(&thermal_governor_lock);