From patchwork Mon Jan 14 16:34:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amit Kucheria X-Patchwork-Id: 155552 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp3857985jaa; Mon, 14 Jan 2019 08:36:34 -0800 (PST) X-Google-Smtp-Source: ALg8bN5sJQZLxzn0cDEJhckUyiA/6cspzhywMgEcf+Djm0O3Fbn+YV2LhrbrOWjSiclcFWKWF5nS X-Received: by 2002:a63:31cc:: with SMTP id x195mr23815229pgx.52.1547483794298; Mon, 14 Jan 2019 08:36:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547483794; cv=none; d=google.com; s=arc-20160816; b=utPrypcc/i3R05cp/94GFCdYGy2AlZCNESU1uPs5D/VMGQNXAM9N96Kjt6jm11VESQ 7LedWQ7eIgiWple/8xobHmqfZOAgSYkDmzh2HD0ck8I15q8rBJCPuqMKGSXmYm63iCqk /YYRBa09hzVUOfQJWMmP/512QGfpOHspizpblSxkiaGAzizCMMDHshJ4Qk7uEW+8hUiG XOLJMaIhTdgcjS/XXdbPh8p055Wa45nbjbSTk9VfoE6ocmlk3JPnJakiVjdi0Nx8gQMZ oFnucLPXpwJRpU833dkMIxhFJMuNXmNlHTqy9U4BxNMYvGYGuZ5cWFxknL9n5tmqzWMA sBEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=raje0KyJSfgQ1XlDTxNcMYQ5pbNyRq5aHVfsy61nUJY=; b=P5Z7mIcymk1e1EIMz5ttmqeMqDOx0FYfL8iMc+8FuPiAuBhWF6oIiDLisuq/COH8Me pXoL7nLlFXVAyl02w2i1QPyKTW56wezBxWyEvPHP7/1YH9Avhs8ppxemRPbIQ56C06i3 csXKvrLIzaE7DF/ZzRCcgPHU3nmxp5p1p3fOB5g2R9RK7MUDDAEJwOsOwKoV4XmTv+yJ KtwHafg5no0Nhx0Q20KZdZJdaos1qrK2eNIllPGhV3UXdU+Y+jB7BGVNuV7X+h+HiR4d mPTGERu0ZAiQPiwOqaZuSYj5L+vgl4JDq9S/aJtTI+iCy62nfSJ/lLbGlgXb7XcTQ6uV fa1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cD1FRQJ9; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v14si772851pfc.76.2019.01.14.08.36.34; Mon, 14 Jan 2019 08:36:34 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=cD1FRQJ9; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726642AbfANQgd (ORCPT + 11 others); Mon, 14 Jan 2019 11:36:33 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:39576 "EHLO mail-wr1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726656AbfANQgd (ORCPT ); Mon, 14 Jan 2019 11:36:33 -0500 Received: by mail-wr1-f65.google.com with SMTP id t27so23633195wra.6 for ; Mon, 14 Jan 2019 08:36:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=raje0KyJSfgQ1XlDTxNcMYQ5pbNyRq5aHVfsy61nUJY=; b=cD1FRQJ9YR5b0pY9h+iFZO5Qu66uT5l+f3/g0UlwezD4Nm21Mr0qEp89AKa8ZCsduo qnnMSZQEbjrf82PDdkpbDOvX+VURzTsa8nMTXJtSDk/ojD90Y2odKyIyd6wES5/N9zki qXNFRjl+o64wM5WEZ+3BYizUFbMV/ZZ056DnU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=raje0KyJSfgQ1XlDTxNcMYQ5pbNyRq5aHVfsy61nUJY=; b=UNDQ5szKBNjckPUgk/8LJy8rC8z3Vcuy0lsytUTK42FAoW6FzSNzIrinzpSxkYjWuS x6pTUVK2fJpQ5hdQ0TYtGq3iueKDrkaEphVehs5II84/5Tiu4AQ9Xdzpw30oMRXnB4wq xMqR+AvrOK9h9AyKGYCVAPns1dNLp/+DZth5/vkUTAW/MOcKM1Ohxb9wQKXsnUAZz9W+ lig5m1VwlXWIDjwqjpbDfo5liaTNRux/zDHjP2vP4wokD+c6Rkqj/IjThpVKgSHgPNLc rAmGy2zwtdPv0EadgyQzNZ9mBfyoI3YvOQH+nQ0zRktmwmu2bC5qvH7DmBU4H+LfzQlP XQGg== X-Gm-Message-State: AJcUukdt2EkqHLDh86OIqPn6K2WpkCchGiYlMPLjqjXnHrdRk7x7HORh NN+x+dA+7AhSmJlqah5Knt4LFg== X-Received: by 2002:adf:f091:: with SMTP id n17mr22754144wro.292.1547483791612; Mon, 14 Jan 2019 08:36:31 -0800 (PST) Received: from localhost ([49.248.190.171]) by smtp.gmail.com with ESMTPSA id o82sm26166937wmo.29.2019.01.14.08.36.29 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 Jan 2019 08:36:30 -0800 (PST) From: Amit Kucheria To: linux-kernel@vger.kernel.org Cc: linux-arm-msm@vger.kernel.org, viresh.kumar@linaro.org, edubezval@gmail.com, swboyd@chromium.org, dianders@chromium.org, mka@chromium.org, "Rafael J. Wysocki" , linux-pm@vger.kernel.org Subject: [PATCH v1 02/10] cpufreq: Add a flag to auto-register a cooling device Date: Mon, 14 Jan 2019 22:04:54 +0530 Message-Id: X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org All cpufreq drivers do similar things to register as a cooling device. Provide a cpufreq driver flag so drivers can just ask the cpufreq core to register the cooling device on their behalf. This allows us to get rid of duplicated code in the drivers. Suggested-by: Stephen Boyd Suggested-by: Viresh Kumar Signed-off-by: Amit Kucheria --- drivers/cpufreq/cpufreq.c | 17 +++++++++++++++++ include/linux/cpufreq.h | 6 ++++++ 2 files changed, 23 insertions(+) -- 2.17.1 Reviewed-by: Matthias Kaehlcke Tested-by: Matthias Kaehlcke diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 6f23ebb395f1..cd6e750d3d82 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c @@ -30,6 +30,7 @@ #include #include #include +#include static LIST_HEAD(cpufreq_policy_list); @@ -1318,6 +1319,14 @@ static int cpufreq_online(unsigned int cpu) if (cpufreq_driver->ready) cpufreq_driver->ready(policy); +#ifdef CONFIG_CPU_THERMAL + if (cpufreq_driver->flags & CPUFREQ_AUTO_REGISTER_COOLING_DEV) { + struct thermal_cooling_device **cdev = &policy->cooldev; + + *cdev = of_cpufreq_cooling_register(policy); + } +#endif + pr_debug("initialization complete\n"); return 0; @@ -1411,6 +1420,14 @@ static int cpufreq_offline(unsigned int cpu) if (has_target()) cpufreq_exit_governor(policy); +#ifdef CONFIG_CPU_THERMAL + if (cpufreq_driver->flags & CPUFREQ_AUTO_REGISTER_COOLING_DEV) { + struct thermal_cooling_device **cdev = &policy->cooldev; + + cpufreq_cooling_unregister(*cdev); + } +#endif + /* * Perform the ->exit() even during light-weight tear-down, * since this is a core component, and is essential for the diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 7d0cf54125fa..70ad02088825 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -390,6 +390,12 @@ struct cpufreq_driver { */ #define CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING (1 << 6) +/* + * Set by drivers that want the core to automatically register the cpufreq + * driver as a thermal cooling device + */ +#define CPUFREQ_AUTO_REGISTER_COOLING_DEV (1 << 7) + int cpufreq_register_driver(struct cpufreq_driver *driver_data); int cpufreq_unregister_driver(struct cpufreq_driver *driver_data);