From patchwork Wed May 4 06:02:21 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Valentin X-Patchwork-Id: 9010621 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 215A59F1C1 for ; Wed, 4 May 2016 06:10:22 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4272520373 for ; Wed, 4 May 2016 06:10:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4ADA1202B8 for ; Wed, 4 May 2016 06:10:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757227AbcEDGJx (ORCPT ); Wed, 4 May 2016 02:09:53 -0400 Received: from mail-pa0-f53.google.com ([209.85.220.53]:36105 "EHLO mail-pa0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757007AbcEDGDD (ORCPT ); Wed, 4 May 2016 02:03:03 -0400 Received: by mail-pa0-f53.google.com with SMTP id bt5so19912839pac.3; Tue, 03 May 2016 23:03:03 -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=NXV5WcYwakYICiox/qi7E2qxb/exShTbGT3sVv1ewhVl+5u8KxWLqYxE1/+dHiHuBX 0ROjne6PKI8ykpw6dSTws/+ql1uHVpLtX/gZWSYC2iecSYuLKdSXA1cVj6lVemBa88ZO 4HDzuPbEjCIr8hwnOBJEBPEPgJj8ICNNMlrXALqB5VMGItqVJ1aGnH/3LMxokxm2Jkbq Mmu2Ilc3rcdXN5ym+1qhqUOXk+e92UezoTAxvWyt7vGjHLi+yXR3GRPpg5+q8TLVtFPR lY/Us+E0fhIvgaPTXuvoHkFuYGemmGnUw2Ph0/BXspKtdjuPlO4+wBZafmqZ7iV6QSE/ CiEA== 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=DnIL8dg2lBBcEodcsoZVII3TmX7HT8E30OB4Erh3SYgeetbbXrvDtnN+6MYjaRsLgg K0RZ+9P/DGpguA2Gr83ksPyhUdqynSLwx9p7KicyIBNwpZbwmkjbVjMfP5wwd3UQUtC5 1JclEC/08dZGufxROoSlOIc2IIG4Gtlc4Dm8g1M+u04DC5AWNzgVMif/fGljxwvA9tyD YiCKlLmUzcdwZZNCmc36nB3ImqZRIXdwS7BLOAm8/l3p9VO1WM07gRa4vUNGxDgUcwhi KsJR0AmWRu38CIMEy0du2zjDDk8itlVJNGZPFF2t5w08LH96xiMKj1mJWO2oPYdhwog3 kW7g== X-Gm-Message-State: AOPr4FVovyQyUWvVcbE/wlowx30FG/T5fjDGnCKq5sBTsdwCYVrtkOWtrv4AOjHf2Pk8Fg== X-Received: by 10.66.142.73 with SMTP id ru9mr9589695pab.51.1462341782694; Tue, 03 May 2016 23:03:02 -0700 (PDT) Received: from localhost ([2601:647:4203:c8e0:7256:81ff:febd:926d]) by smtp.gmail.com with ESMTPSA id ez6sm2647552pab.12.2016.05.03.23.03.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 May 2016 23:03:02 -0700 (PDT) From: Eduardo Valentin To: Rui Zhang Cc: Linux PM , LKML , Eduardo Valentin Subject: [PATCH 07/31] thermal: core: move passive attr to tz->device.groups Date: Tue, 3 May 2016 23:02:21 -0700 Message-Id: <1462341765-13268-8-git-send-email-edubezval@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1462341765-13268-1-git-send-email-edubezval@gmail.com> References: <1462341765-13268-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=-8.9 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);