From patchwork Mon Dec 12 20:58:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 32530 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp2463038wrr; Mon, 12 Dec 2022 13:01:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf4cc2lg2N4U+Z3fe3ZEQfDS82KThBOxngZg7KNLmsMyWdDqTMAVbR2wDLK1fK7HaQGtyMom X-Received: by 2002:a17:906:4905:b0:7be:fb2c:c112 with SMTP id b5-20020a170906490500b007befb2cc112mr14306062ejq.66.1670878918839; Mon, 12 Dec 2022 13:01:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670878918; cv=none; d=google.com; s=arc-20160816; b=x95h75wYo18c2USeFR5vkQeM8kxPjAJZLWn9+EdWqpCV9fZ6ukPW54HkWpD3xhEjot /aey2JoFa/5s/fhFoJQYuwUIAMkmeVzD/yxDrESyO6HTGTL5jDzI1rGzmjrT8uhq+EmZ DRclhUDcWzLiEM38lwI8ticXSMVJZpRPHFe1Tx2JyLxHhqRLT/VohVYd44lOvN5BZi4p baLPWtAgRq11c/xlgoGEEpxtY8YDOTVdWXbwR7u7n4K/RBnb+7Ai2ApGkB4p1MX5j7Vd TPAcDZeLH2IVGG0VNosySoBB+VkGDT3EYoCW4hVoA5tDhY1Yxh4rXE0gOUQ393SPcTQi RL8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=NevQn9Y5RI1VimgruaO0EgtIiQx7BC1ue3AUHCaSES4=; b=TF8EYkzBIgLQFjqQiXuPDodAV7URBXMOez7b9avGMxlNBn+GL01y+c+SmTiVqOchmS KxAWGOvKqPcLRt440NGmt9pxpsc+w7dhL0v7p5zJqONfamvb/nkaz8Cv0zQAM2PZczLl zCqqPev49QvuoTJIr6CcLtKjA27nv1Aw7UB510dpog9dRUNfj4TpUvDQyiKQybs+IjKp Me2r/fm6FCEwAZImvxh/PiFymoPWeEz82ucMleKuQdQeRqykc9mMeo0Iv4PlKCf/8+32 d5trxVqKdxOnWlM42ZohCrk2xRBQ1yEqvxy8iDNyWYxKQf1pea22FAmKsVRocunh+Ho6 djtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rnkA+iLO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e12-20020a17090658cc00b007c0fa609b09si8348552ejs.771.2022.12.12.13.01.34; Mon, 12 Dec 2022 13:01:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rnkA+iLO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-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 S233020AbiLLU7R (ORCPT + 99 others); Mon, 12 Dec 2022 15:59:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233396AbiLLU7C (ORCPT ); Mon, 12 Dec 2022 15:59:02 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08556186C7 for ; Mon, 12 Dec 2022 12:59:01 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id o15so6696377wmr.4 for ; Mon, 12 Dec 2022 12:59:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NevQn9Y5RI1VimgruaO0EgtIiQx7BC1ue3AUHCaSES4=; b=rnkA+iLO6oQMzR+jyX4KPrl1mhgTNVDRrtrXuScS7PK0XH/LCNPoiZFIIhImwe4s+Q bsY0hLJF4iZdRolhjHAhrDCdy0Mqcbok1T6TxDzEoS1bzBMCdiMA8Z/CPccYTx3hKzJG 4EjXDdUMEl5S76DqwJc+kDheV0n7y44Fj2c7+2KtsHz5pLHPTHKCy9uk7nU8we0fvjYD sHtHgvDsCfoUY1+PJpdj90aA9w/Hvlx2XVZW6kLNcyTCeUd/qU4U/2TKsSXCD3A/Ob08 QW/zWPxyYXJ+XdjCQgxkTC3SG8RnXV9q+wZKIi5xq5im8EE2aG8OyItORyBxE4lG1lK2 uAtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NevQn9Y5RI1VimgruaO0EgtIiQx7BC1ue3AUHCaSES4=; b=NltnWDCqAPQ7APbFWGNVnq1gGNVwW9Es4k95I3hz27HrfUrHoVmtHgz5Gyy3xs5+iR mX4Cv3XYMCmGGW0bqB7mF/1CY+FqOAe4TpdNgLJ3KrhzrI8yBcz2JeLTZDbZmN8rTu/a iqaafh7B5oLP8tCic7IA3BRoHvvFxfMKNn7WDi3wlG5db9XVcF9gfD4qb7VUZIBeZIV+ vlrMLV4wal8WyAX8+c1me21doqIH6Gki1+xte8OVdk6O5aktae5WKWWVFAu2G4o/3pEb jAoFLM9CIxo4zDln24uY76aRqB5q4GujLgAU6NDPWKwwutuBTt/sJdt66JJ2PADAg0wY BwTg== X-Gm-Message-State: ANoB5pm6IdB9MdnrxbGGUueuWE/cxZigYUG4gHtqxYrW1E3VnsZjZU5N wk75bz7JjXzRi+j+azTPyeiEaA== X-Received: by 2002:a05:600c:13c8:b0:3cf:69a5:3621 with SMTP id e8-20020a05600c13c800b003cf69a53621mr13743797wmg.41.1670878739531; Mon, 12 Dec 2022 12:58:59 -0800 (PST) Received: from mai.. (146725694.box.freepro.com. [130.180.211.218]) by smtp.gmail.com with ESMTPSA id t123-20020a1c4681000000b003a3170a7af9sm10537201wma.4.2022.12.12.12.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Dec 2022 12:58:59 -0800 (PST) From: Daniel Lezcano X-Google-Original-From: Daniel Lezcano To: rafael@kernel.org, srinivas.pandruvada@linux.intel.com Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/5] thermal/drivers/intel: Use generic trip points for intel_pch Date: Mon, 12 Dec 2022 21:58:40 +0100 Message-Id: <20221212205843.3119407-3-daniel.lezcano@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221212205843.3119407-1-daniel.lezcano@kernel.org> References: <20221212205843.3119407-1-daniel.lezcano@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=1.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: * X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752043533058589528?= X-GMAIL-MSGID: =?utf-8?q?1752043533058589528?= From: Daniel Lezcano The thermal framework gives the possibility to register the trip points with the thermal zone. When that is done, no get_trip_* ops are needed and they can be removed. Convert ops content logic into generic trip points and register them with the thermal zone. Signed-off-by: Daniel Lezcano --- drivers/thermal/intel/intel_pch_thermal.c | 88 +++++------------------ 1 file changed, 19 insertions(+), 69 deletions(-) diff --git a/drivers/thermal/intel/intel_pch_thermal.c b/drivers/thermal/intel/intel_pch_thermal.c index dabf11a687a1..530fe9b38381 100644 --- a/drivers/thermal/intel/intel_pch_thermal.c +++ b/drivers/thermal/intel/intel_pch_thermal.c @@ -65,6 +65,8 @@ #define WPT_TEMP_OFFSET (PCH_TEMP_OFFSET * MILLIDEGREE_PER_DEGREE) #define GET_PCH_TEMP(x) (((x) / 2) + PCH_TEMP_OFFSET) +#define PCH_MAX_TRIPS 3 /* critical, hot, passive */ + /* Amount of time for each cooling delay, 100ms by default for now */ static unsigned int delay_timeout = 100; module_param(delay_timeout, int, 0644); @@ -82,12 +84,7 @@ struct pch_thermal_device { const struct pch_dev_ops *ops; struct pci_dev *pdev; struct thermal_zone_device *tzd; - int crt_trip_id; - unsigned long crt_temp; - int hot_trip_id; - unsigned long hot_temp; - int psv_trip_id; - unsigned long psv_temp; + struct thermal_trip trips[PCH_MAX_TRIPS]; bool bios_enabled; }; @@ -102,33 +99,22 @@ static void pch_wpt_add_acpi_psv_trip(struct pch_thermal_device *ptd, int *nr_trips) { struct acpi_device *adev; - - ptd->psv_trip_id = -1; + int ret; adev = ACPI_COMPANION(&ptd->pdev->dev); - if (adev) { - unsigned long long r; - acpi_status status; - - status = acpi_evaluate_integer(adev->handle, "_PSV", NULL, - &r); - if (ACPI_SUCCESS(status)) { - unsigned long trip_temp; - - trip_temp = deci_kelvin_to_millicelsius(r); - if (trip_temp) { - ptd->psv_temp = trip_temp; - ptd->psv_trip_id = *nr_trips; - ++(*nr_trips); - } - } - } + if (!adev) + return; + + ret = thermal_acpi_trip_psv(adev, &ptd->trips[*nr_trips]); + if (ret) + return; + + ++(*nr_trips); } #else static void pch_wpt_add_acpi_psv_trip(struct pch_thermal_device *ptd, int *nr_trips) { - ptd->psv_trip_id = -1; } #endif @@ -163,21 +149,19 @@ static int pch_wpt_init(struct pch_thermal_device *ptd, int *nr_trips) } read_trips: - ptd->crt_trip_id = -1; trip_temp = readw(ptd->hw_base + WPT_CTT); trip_temp &= 0x1FF; if (trip_temp) { - ptd->crt_temp = GET_WPT_TEMP(trip_temp); - ptd->crt_trip_id = 0; + ptd->trips[*nr_trips].temperature = GET_WPT_TEMP(trip_temp); + ptd->trips[*nr_trips].type = THERMAL_TRIP_CRITICAL; ++(*nr_trips); } - ptd->hot_trip_id = -1; trip_temp = readw(ptd->hw_base + WPT_PHL); trip_temp &= 0x1FF; if (trip_temp) { - ptd->hot_temp = GET_WPT_TEMP(trip_temp); - ptd->hot_trip_id = *nr_trips; + ptd->trips[*nr_trips].temperature = GET_WPT_TEMP(trip_temp); + ptd->trips[*nr_trips].type = THERMAL_TRIP_HOT; ++(*nr_trips); } @@ -298,39 +282,6 @@ static int pch_thermal_get_temp(struct thermal_zone_device *tzd, int *temp) return ptd->ops->get_temp(ptd, temp); } -static int pch_get_trip_type(struct thermal_zone_device *tzd, int trip, - enum thermal_trip_type *type) -{ - struct pch_thermal_device *ptd = tzd->devdata; - - if (ptd->crt_trip_id == trip) - *type = THERMAL_TRIP_CRITICAL; - else if (ptd->hot_trip_id == trip) - *type = THERMAL_TRIP_HOT; - else if (ptd->psv_trip_id == trip) - *type = THERMAL_TRIP_PASSIVE; - else - return -EINVAL; - - return 0; -} - -static int pch_get_trip_temp(struct thermal_zone_device *tzd, int trip, int *temp) -{ - struct pch_thermal_device *ptd = tzd->devdata; - - if (ptd->crt_trip_id == trip) - *temp = ptd->crt_temp; - else if (ptd->hot_trip_id == trip) - *temp = ptd->hot_temp; - else if (ptd->psv_trip_id == trip) - *temp = ptd->psv_temp; - else - return -EINVAL; - - return 0; -} - static void pch_critical(struct thermal_zone_device *tzd) { dev_dbg(&tzd->device, "%s: critical temperature reached\n", tzd->type); @@ -338,8 +289,6 @@ static void pch_critical(struct thermal_zone_device *tzd) static struct thermal_zone_device_ops tzd_ops = { .get_temp = pch_thermal_get_temp, - .get_trip_type = pch_get_trip_type, - .get_trip_temp = pch_get_trip_temp, .critical = pch_critical, }; @@ -423,8 +372,9 @@ static int intel_pch_thermal_probe(struct pci_dev *pdev, if (err) goto error_cleanup; - ptd->tzd = thermal_zone_device_register(bi->name, nr_trips, 0, ptd, - &tzd_ops, NULL, 0, 0); + ptd->tzd = thermal_zone_device_register_with_trips(bi->name, ptd->trips, + nr_trips, 0, ptd, + &tzd_ops, NULL, 0, 0); if (IS_ERR(ptd->tzd)) { dev_err(&pdev->dev, "Failed to register thermal zone %s\n", bi->name);