From patchwork Sun Feb 24 20:07:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1047534 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="j0qlIXp6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 446x4B4RPpz9s1B for ; Mon, 25 Feb 2019 07:09:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728062AbfBXUJN (ORCPT ); Sun, 24 Feb 2019 15:09:13 -0500 Received: from mail-wm1-f67.google.com ([209.85.128.67]:34453 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726458AbfBXUJM (ORCPT ); Sun, 24 Feb 2019 15:09:12 -0500 Received: by mail-wm1-f67.google.com with SMTP id o10so1515776wmc.1 for ; Sun, 24 Feb 2019 12:09:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=qDD0MCvqr3zdfq9s8nihY8vSoDo1dceGUCVDBfQz8Z0=; b=j0qlIXp6okUwspVhN9l3WjNge0dYO5cv0mIdK9GTJQYIcXzumHk8TB8gYQxQuBYpMN e3rmsHvjLVdvyIH5Km2ZTrGTRGFaJBShe+L19KWJR2O7NpKQ01xDmE+qG7vHakbQEsYp mEi2T6KRVCmw8KOqQMcsVw0FQCgGVnCWGJtxLKGRtyPTnlgFekIiu2l/yDlurGXRszd0 8R+QlrMToS8f9t109A1/qKNGVPsDAhy4UVTaHIw2KN6iSuty5XOgEA+nPXtipjKPmK95 XvzRXxB4ijUc/P3k9CCkCUQUS/17k3qBY3Yo7aFSDnf//03Gi/I08txklFZ11pMS7IyO 82LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=qDD0MCvqr3zdfq9s8nihY8vSoDo1dceGUCVDBfQz8Z0=; b=tBJBS8IAe08pYQLXHtcOTXrcReO7rwbVL+L2SFxeF8m4HHcT+uvrgDU0IhnleN+na7 cp4JzcHO+k3b0D9w3rxFccq7WCnCAxCSxnKUKFeG2pJbSfP6HEpyUqdsDjO8eJnDLy5n lqlySNXpyNcMHd8fB4Q7G7w8Zc7+IIw3/EiiTeu85ZijjOb33/oDKLwIcRSwE6bUjr1C uoI/0DW3Rbqbpu9PLMhTREp4mu2Qsene0zgxWy0YKapSFT1/vn8yHw64LFWyiUHUI95w EGrHUZI2CsfRBdm6jxHqG3Mlx7C8l9d4oQQ7mX7d28lHbOj5UxLSyy9HvTSkw58G6zy/ egRw== X-Gm-Message-State: AHQUAuYNPYgt1VseylXEbNJ7f0+tQDQC8fXQ9bTjKTPWI6doKb9JDmav ba9m5rs9UXrpin0HxRdSGhVnaup4 X-Google-Smtp-Source: AHgI3IYzlzBxENMHvXZxTbDjFuqeg/JoJLB6aaF0O2aw1Fym21DleZ2laaAQSPLsGK5A349cfxtITQ== X-Received: by 2002:a1c:d183:: with SMTP id i125mr8148747wmg.30.1551038950038; Sun, 24 Feb 2019 12:09:10 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:1133:81d:72d3:c59f? (p200300EA8BF1E2001133081D72D3C59F.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:1133:81d:72d3:c59f]) by smtp.googlemail.com with ESMTPSA id z17sm5328875wrs.75.2019.02.24.12.09.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Feb 2019 12:09:09 -0800 (PST) Subject: [PATCH net-next 1/2] net: phy: aquantia: rename aquantia.c to aquantia_main.c From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <0a05279a-ab9e-a978-df4d-f09869c3bba2@gmail.com> Message-ID: Date: Sun, 24 Feb 2019 21:07:36 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <0a05279a-ab9e-a978-df4d-f09869c3bba2@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Rename aquantia.c to aquantia_main.c to be prepared for adding new functionality to separate source code files. Signed-off-by: Heiner Kallweit --- drivers/net/phy/Makefile | 1 + drivers/net/phy/{aquantia.c => aquantia_main.c} | 0 2 files changed, 1 insertion(+) rename drivers/net/phy/{aquantia.c => aquantia_main.c} (100%) diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile index 5805c0b7d..b0845adaf 100644 --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile @@ -45,6 +45,7 @@ sfp-obj-$(CONFIG_SFP) += sfp-bus.o obj-y += $(sfp-obj-y) $(sfp-obj-m) obj-$(CONFIG_AMD_PHY) += amd.o +aquantia-objs += aquantia_main.o obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o obj-$(CONFIG_ASIX_PHY) += asix.o obj-$(CONFIG_AT803X_PHY) += at803x.o diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia_main.c similarity index 100% rename from drivers/net/phy/aquantia.c rename to drivers/net/phy/aquantia_main.c From patchwork Sun Feb 24 20:09:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 1047535 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="oGYhmMFY"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 446x4D3vPHz9s1B for ; Mon, 25 Feb 2019 07:09:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728128AbfBXUJP (ORCPT ); Sun, 24 Feb 2019 15:09:15 -0500 Received: from mail-wm1-f68.google.com ([209.85.128.68]:38827 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727798AbfBXUJO (ORCPT ); Sun, 24 Feb 2019 15:09:14 -0500 Received: by mail-wm1-f68.google.com with SMTP id v26so6183899wmh.3 for ; Sun, 24 Feb 2019 12:09:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=xTu6yIZvFt3LZvwonFFrVEAKAgVlUbhUcZWXUPk0kwE=; b=oGYhmMFYUIlsPQanxWTq5w6gq0yNuGclwfGzGwgtjCwtRA3pjB+Lc8ncdoDFJt8NIO XqyyZBVoTnZefqHwx7rkB/s/4MWPCtztdIz10YhHRA/4Sry+jQQHOrqkqvPq/YDuWApz qikip6z5BhS39uRNf0uF4BecRIBqM3o6CaAwy6i293njDvK04a98HqJz4N/22wajbyqn bRenFk3TcNyetdNRROHTsI4oLlOLyskcRBcBpCkE3soU7D7BRPMRbCEgxpldyw+2WYrB GDrZXCRIcmgwrJyRmZjR84GwXHwFtrebkq4E8S9bcId7ZDn8RDIuE6Aj8ft8PDSRuq6c Or0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=xTu6yIZvFt3LZvwonFFrVEAKAgVlUbhUcZWXUPk0kwE=; b=sVXv7NSRJ3bQl1EJVvfgi4yDS67i/jF+t8z5M13i/dJ1mDxWqpRN6vvL8EQ05p8ULl HqOgRS/bpghAn91a4n4u1OCOscb/0q1ryGDI/A98OAv57ZNKYmpv79LU2yitZlVFSGxv F/UmzbGy+3vNObHZU3dtLkbBIvaTFFiJooz+/99VFSSin9ax5v0cZihwMRQzR1ay2s4o 58jRDP3y7/TB4Y9r8UvvZMfQSzxn461ZGBZmGDUj6LxvwWI/73CsZaA8Vn3+o2kGzLEy j7TiRQO3UNtD3f5wQ2ltuhuXVNv8a46wHFLMp/P8Ynsei7P0PTfQP1vb8CCPMKaV1mWF GoZQ== X-Gm-Message-State: AHQUAuYuR/mPZzSnxk+2XFnuAODyqLSsirQt6x60yoLcPYnJaFNdW9z2 hl+RYB/eHaNoT694274N2kOqj8er X-Google-Smtp-Source: AHgI3IZvK2bRuNxItMxpwVKiiOnJ9RLkrc6ywVpkE0KrYhVz+hrUIhcefS81nvnnaYcbQtL3jy439A== X-Received: by 2002:a1c:e344:: with SMTP id a65mr8892448wmh.117.1551038951598; Sun, 24 Feb 2019 12:09:11 -0800 (PST) Received: from ?IPv6:2003:ea:8bf1:e200:1133:81d:72d3:c59f? (p200300EA8BF1E2001133081D72D3C59F.dip0.t-ipconnect.de. [2003:ea:8bf1:e200:1133:81d:72d3:c59f]) by smtp.googlemail.com with ESMTPSA id a184sm7227654wmh.37.2019.02.24.12.09.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Feb 2019 12:09:10 -0800 (PST) Subject: [PATCH net-next 2/2] net: phy: aquantia: add hwmon support From: Heiner Kallweit To: Andrew Lunn , Florian Fainelli , David Miller Cc: "netdev@vger.kernel.org" References: <0a05279a-ab9e-a978-df4d-f09869c3bba2@gmail.com> Message-ID: <590d1e26-999e-3b09-fcd9-6d570cadb3bf@gmail.com> Date: Sun, 24 Feb 2019 21:09:03 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: <0a05279a-ab9e-a978-df4d-f09869c3bba2@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This adds HWMON support for the temperature sensor and the related alarms on the 107/108/109 chips. This patch is based on work from Nikita and Andrew. I added: - support for changing alarm thresholds via sysfs - move HWMON code to a separate source file to improve maintainability - smaller changes like using IS_REACHABLE instead of ifdef (avoids problems if PHY driver is built in and HWMON is a module) Signed-off-by: Nikita Yushchenko Signed-off-by: Andrew Lunn Signed-off-by: Heiner Kallweit --- drivers/net/phy/Makefile | 2 +- drivers/net/phy/aquantia_hwmon.c | 263 +++++++++++++++++++++++++++++++ drivers/net/phy/aquantia_hwmon.h | 15 ++ drivers/net/phy/aquantia_main.c | 4 + 4 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 drivers/net/phy/aquantia_hwmon.c create mode 100644 drivers/net/phy/aquantia_hwmon.h diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile index b0845adaf..c48596626 100644 --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile @@ -45,7 +45,7 @@ sfp-obj-$(CONFIG_SFP) += sfp-bus.o obj-y += $(sfp-obj-y) $(sfp-obj-m) obj-$(CONFIG_AMD_PHY) += amd.o -aquantia-objs += aquantia_main.o +aquantia-objs += aquantia_main.o aquantia_hwmon.o obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o obj-$(CONFIG_ASIX_PHY) += asix.o obj-$(CONFIG_AT803X_PHY) += at803x.o diff --git a/drivers/net/phy/aquantia_hwmon.c b/drivers/net/phy/aquantia_hwmon.c new file mode 100644 index 000000000..c0dd695f6 --- /dev/null +++ b/drivers/net/phy/aquantia_hwmon.c @@ -0,0 +1,263 @@ +// SPDX-License-Identifier: GPL-2.0 +/* HWMON driver for Aquantia PHY + * + * Author: Nikita Yushchenko + * Author: Andrew Lunn + * Author: Heiner Kallweit + */ + +#include +#include +#include +#include + +#include "aquantia_hwmon.h" + +/* Vendor specific 1, MDIO_MMD_VEND1 */ +#define VEND1_THERMAL_PROV_HIGH_TEMP_FAIL 0xc421 +#define VEND1_THERMAL_PROV_LOW_TEMP_FAIL 0xc422 +#define VEND1_THERMAL_PROV_HIGH_TEMP_WARN 0xc423 +#define VEND1_THERMAL_PROV_LOW_TEMP_WARN 0xc424 +#define VEND1_THERMAL_STAT1 0xc820 +#define VEND1_THERMAL_STAT2 0xc821 +#define VEND1_THERMAL_STAT2_VALID BIT(0) +#define VEND1_GENERAL_STAT1 0xc830 +#define VEND1_GENERAL_STAT1_HIGH_TEMP_FAIL BIT(14) +#define VEND1_GENERAL_STAT1_LOW_TEMP_FAIL BIT(13) +#define VEND1_GENERAL_STAT1_HIGH_TEMP_WARN BIT(12) +#define VEND1_GENERAL_STAT1_LOW_TEMP_WARN BIT(11) + +struct aqr_priv { + struct device *hwmon_dev; + char *hwmon_name; +}; + +#if IS_REACHABLE(CONFIG_HWMON) + +static umode_t aqr_hwmon_is_visible(const void *data, + enum hwmon_sensor_types type, + u32 attr, int channel) +{ + if (type != hwmon_temp) + return 0; + + switch (attr) { + case hwmon_temp_input: + case hwmon_temp_min_alarm: + case hwmon_temp_max_alarm: + case hwmon_temp_lcrit_alarm: + case hwmon_temp_crit_alarm: + return 0444; + case hwmon_temp_min: + case hwmon_temp_max: + case hwmon_temp_lcrit: + case hwmon_temp_crit: + return 0644; + default: + return 0; + } +} + +static int aqr_hwmon_get(struct phy_device *phydev, int reg, long *value) +{ + int temp = phy_read_mmd(phydev, MDIO_MMD_VEND1, reg); + + if (temp < 0) + return temp; + + /* register value is 2's complement with LSB = 1/256th degree Celsius */ + if (temp > 0x8000) + temp -= 0x10000; + + *value = temp * 1000 / 256; + + return 0; +} + +static int aqr_hwmon_set(struct phy_device *phydev, int reg, long value) +{ + int temp; + + if (value >= 128000 || value < -128000) + return -ERANGE; + + temp = value * 256 / 1000; + + if (temp < 0) + temp += 0x10000; + + return phy_write_mmd(phydev, MDIO_MMD_VEND1, reg, temp); +} + +static int aqr_hwmon_status1(struct phy_device *phydev, int bit, long *value) +{ + int reg = phy_read_mmd(phydev, MDIO_MMD_VEND1, VEND1_GENERAL_STAT1); + + if (reg < 0) + return reg; + + *value = !!(reg & bit); + + return 0; +} + +static int aqr_hwmon_read(struct device *dev, enum hwmon_sensor_types type, + u32 attr, int channel, long *value) +{ + struct phy_device *phydev = dev_get_drvdata(dev); + int reg; + + if (type != hwmon_temp) + return -EOPNOTSUPP; + + switch (attr) { + case hwmon_temp_input: + reg = phy_read_mmd(phydev, MDIO_MMD_VEND1, + VEND1_THERMAL_STAT2); + if (reg < 0) + return reg; + if (!(reg & VEND1_THERMAL_STAT2_VALID)) + return -EIO; + + return aqr_hwmon_get(phydev, VEND1_THERMAL_STAT1, value); + + case hwmon_temp_lcrit: + return aqr_hwmon_get(phydev, VEND1_THERMAL_PROV_LOW_TEMP_FAIL, + value); + case hwmon_temp_min: + return aqr_hwmon_get(phydev, VEND1_THERMAL_PROV_LOW_TEMP_WARN, + value); + case hwmon_temp_max: + return aqr_hwmon_get(phydev, VEND1_THERMAL_PROV_HIGH_TEMP_WARN, + value); + case hwmon_temp_crit: + return aqr_hwmon_get(phydev, VEND1_THERMAL_PROV_HIGH_TEMP_FAIL, + value); + case hwmon_temp_lcrit_alarm: + return aqr_hwmon_status1(phydev, + VEND1_GENERAL_STAT1_LOW_TEMP_FAIL, + value); + case hwmon_temp_min_alarm: + return aqr_hwmon_status1(phydev, + VEND1_GENERAL_STAT1_LOW_TEMP_WARN, + value); + case hwmon_temp_max_alarm: + return aqr_hwmon_status1(phydev, + VEND1_GENERAL_STAT1_HIGH_TEMP_WARN, + value); + case hwmon_temp_crit_alarm: + return aqr_hwmon_status1(phydev, + VEND1_GENERAL_STAT1_HIGH_TEMP_FAIL, + value); + default: + return -EOPNOTSUPP; + } +} + +static int aqr_hwmon_write(struct device *dev, enum hwmon_sensor_types type, + u32 attr, int channel, long value) +{ + struct phy_device *phydev = dev_get_drvdata(dev); + + if (type != hwmon_temp) + return -EOPNOTSUPP; + + switch (attr) { + case hwmon_temp_lcrit: + return aqr_hwmon_set(phydev, VEND1_THERMAL_PROV_LOW_TEMP_FAIL, + value); + case hwmon_temp_min: + return aqr_hwmon_set(phydev, VEND1_THERMAL_PROV_LOW_TEMP_WARN, + value); + case hwmon_temp_max: + return aqr_hwmon_set(phydev, VEND1_THERMAL_PROV_HIGH_TEMP_WARN, + value); + case hwmon_temp_crit: + return aqr_hwmon_set(phydev, VEND1_THERMAL_PROV_HIGH_TEMP_FAIL, + value); + default: + return -EOPNOTSUPP; + } +} + +static const struct hwmon_ops aqr_hwmon_ops = { + .is_visible = aqr_hwmon_is_visible, + .read = aqr_hwmon_read, + .write = aqr_hwmon_write, +}; + +static u32 aqr_hwmon_chip_config[] = { + HWMON_C_REGISTER_TZ, + 0, +}; + +static const struct hwmon_channel_info aqr_hwmon_chip = { + .type = hwmon_chip, + .config = aqr_hwmon_chip_config, +}; + +static u32 aqr_hwmon_temp_config[] = { + HWMON_T_INPUT | + HWMON_T_MAX | HWMON_T_MIN | + HWMON_T_MAX_ALARM | HWMON_T_MIN_ALARM | + HWMON_T_CRIT | HWMON_T_LCRIT | + HWMON_T_CRIT_ALARM | HWMON_T_LCRIT_ALARM, + 0, +}; + +static const struct hwmon_channel_info aqr_hwmon_temp = { + .type = hwmon_temp, + .config = aqr_hwmon_temp_config, +}; + +static const struct hwmon_channel_info *aqr_hwmon_info[] = { + &aqr_hwmon_chip, + &aqr_hwmon_temp, + NULL, +}; + +static const struct hwmon_chip_info aqr_hwmon_chip_info = { + .ops = &aqr_hwmon_ops, + .info = aqr_hwmon_info, +}; + +static int aqr_hwmon_really_probe(struct phy_device *phydev) +{ + struct device *dev = &phydev->mdio.dev; + struct aqr_priv *priv = phydev->priv; + int i, j; + + priv->hwmon_name = devm_kstrdup(dev, dev_name(dev), GFP_KERNEL); + if (!priv->hwmon_name) + return -ENOMEM; + + for (i = j = 0; priv->hwmon_name[i]; i++) { + if (isalnum(priv->hwmon_name[i])) { + if (i != j) + priv->hwmon_name[j] = priv->hwmon_name[i]; + j++; + } + } + priv->hwmon_name[j] = '\0'; + + priv->hwmon_dev = devm_hwmon_device_register_with_info(dev, + priv->hwmon_name, phydev, + &aqr_hwmon_chip_info, NULL); + + return PTR_ERR_OR_ZERO(priv->hwmon_dev); +} + +int aqr_hwmon_probe(struct phy_device *phydev) +{ + struct aqr_priv *priv; + + priv = devm_kzalloc(&phydev->mdio.dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + phydev->priv = priv; + + return aqr_hwmon_really_probe(phydev); +} + +#endif diff --git a/drivers/net/phy/aquantia_hwmon.h b/drivers/net/phy/aquantia_hwmon.h new file mode 100644 index 000000000..607e68758 --- /dev/null +++ b/drivers/net/phy/aquantia_hwmon.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 + * HWMON driver for Aquantia PHY + * + * Author: Nikita Yushchenko + * Author: Andrew Lunn + * Author: Heiner Kallweit + */ + +#include + +#if IS_REACHABLE(CONFIG_HWMON) +int aqr_hwmon_probe(struct phy_device *phydev); +#else +static inline int aqr_hwmon_probe(struct phy_device *phydev) { return 0; } +#endif diff --git a/drivers/net/phy/aquantia_main.c b/drivers/net/phy/aquantia_main.c index 0f0eb5682..af6dc3588 100644 --- a/drivers/net/phy/aquantia_main.c +++ b/drivers/net/phy/aquantia_main.c @@ -12,6 +12,8 @@ #include #include +#include "aquantia_hwmon.h" + #define PHY_ID_AQ1202 0x03a1b445 #define PHY_ID_AQ2104 0x03a1b460 #define PHY_ID_AQR105 0x03a1b4a2 @@ -231,6 +233,7 @@ static struct phy_driver aqr_driver[] = { .name = "Aquantia AQR107", .aneg_done = genphy_c45_aneg_done, .get_features = genphy_c45_pma_read_abilities, + .probe = aqr_hwmon_probe, .config_aneg = aqr_config_aneg, .config_intr = aqr_config_intr, .ack_interrupt = aqr_ack_interrupt, @@ -241,6 +244,7 @@ static struct phy_driver aqr_driver[] = { .name = "Aquantia AQCS109", .aneg_done = genphy_c45_aneg_done, .get_features = genphy_c45_pma_read_abilities, + .probe = aqr_hwmon_probe, .config_init = aqcs109_config_init, .config_aneg = aqr_config_aneg, .config_intr = aqr_config_intr,