From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9FCE7C282C2 for ; Wed, 13 Feb 2019 11:29:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 600342073D for ; Wed, 13 Feb 2019 11:29:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="CbQxwdTs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403965AbfBML3X (ORCPT ); Wed, 13 Feb 2019 06:29:23 -0500 Received: from mail-eopbgr150041.outbound.protection.outlook.com ([40.107.15.41]:45056 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727977AbfBML3W (ORCPT ); Wed, 13 Feb 2019 06:29:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HsaIJpUDAztrIbaESQRhyddQNuyeVjutebC8leLh2qs=; b=CbQxwdTsd6l/XpXZ/qTjBVz0dvxSGnOga/kQvklIoxEdor5Nq4tYt/sNmhs292Nz4+cTgM7PEvGYSuk/7cTsUjlpl8RKPopdHT5peVz5uuejR3RPl6UGnHyGcpKBbg1w17gIS+jjHg2aiZEbmo+EZQidnUGNJ2HyFyGR5YUJPvY= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB6230.eurprd05.prod.outlook.com (20.178.95.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1622.16; Wed, 13 Feb 2019 11:28:53 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1601.023; Wed, 13 Feb 2019 11:28:53 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , "andrew@lunn.ch" , mlxsw , Vadim Pasternak , Ido Schimmel Subject: [PATCH net-next 09/12] mlxsw: core: Extend hwmon interface with fan fault attribute Thread-Topic: [PATCH net-next 09/12] mlxsw: core: Extend hwmon interface with fan fault attribute Thread-Index: AQHUw49MkrYghazVaUWzi1TmwnLpwQ== Date: Wed, 13 Feb 2019 11:28:53 +0000 Message-ID: <20190213112814.32334-10-idosch@mellanox.com> References: <20190213112814.32334-1-idosch@mellanox.com> In-Reply-To: <20190213112814.32334-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LNXP265CA0090.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:76::30) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ec066465-c065-48e6-d340-08d691a66ee1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB6230; x-ms-traffictypediagnostic: AM6PR05MB6230: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB6230;23:Qs60qUGW9G3TiYuAKEjNlxpD510tG36OKzxO893?= =?iso-8859-1?Q?JpufvB190Z1Qx2F0vrojVXPj9rNm4xoSHgk+GKIVW/Fu2BJNkHcHN1rgD1?= =?iso-8859-1?Q?nLWjvDIsNO4l/Hg+UACBThQaEFjH7PgOeOBP3Fczi/xnqdc1LQWv4yfc9p?= =?iso-8859-1?Q?z3B1vL9iMvo1A+lM7Sp56h/dP1jTLBlmLvqDMhJDqnFGfsjT/groMhytoR?= =?iso-8859-1?Q?UB1qk68XCQsvj+pHhfYpUpCA3JVLC8RsdlX7WrUUNcp88Xm/WlsaAg8AM4?= =?iso-8859-1?Q?9TOFTISdBDcTvCb2Ey07s3D2BGK2eh0+pu4rCzSoMJeJQpg4hq1Ellg7rc?= =?iso-8859-1?Q?0nFLXm15QYZ4StPJa8f1kosDf5QTj0DVUNxsA7Vz+MSC7Or8PwI/pW/OH4?= =?iso-8859-1?Q?L9KDbWmx2Zkha+eA2jJWDXkNI5/TKlFOJQK20+JlZ+1OcKWCU+GSrQnfU7?= =?iso-8859-1?Q?MRh7IQmPW6rDAf6I4hCLLg97URTU2euXawAa77OXkO62skPkYatSlXoyOC?= =?iso-8859-1?Q?mmdmCQwNKu1tQfYE0Eo/p/BWRM3T4X4XLS0ZpCzfVpZUJKAjCE4zY00qiV?= =?iso-8859-1?Q?UcWXb2VNHxd/LGtfnIc08VusLtOO/YvifDcMTEKnOWNWQediJhTzF1EEvo?= =?iso-8859-1?Q?UFkGuXP5tQSW/yrLlTiEdy1FaQBNQzmV3jP/eomTA3Q7d7cMgjWoUUYscQ?= =?iso-8859-1?Q?h59CYCfMV0GwsqVBcSNLJvSwIQu4CQVxr9NUzGEyC3q0oNbCciX/rCDfs+?= =?iso-8859-1?Q?JKgSOOp0Ik1VTWl1L1GeOfotIwefadhujP2PxiFzNdM/LNkPKah9rwjy6V?= =?iso-8859-1?Q?DUb/jILLUdyd7lAwZ0fiYIlogeWFbTV+W+WWhOPgMHSLIL6k7sm94IIbLK?= =?iso-8859-1?Q?8kJoloUIHIuBRcfRwYgV5J4Ck1DsK1ZQErnPnb7+P08iCTq6S0bdbTt2sF?= =?iso-8859-1?Q?MTJ0wqqQ6/1wcG8ITAd/SW/jRqDnfye5aFfxZeI3RP4FozVRjk1AoiuGmf?= =?iso-8859-1?Q?sq346weByP56g0nKkIhFWpll7m7H6oA60krKyJJoiKspajPJKdy3g4iDCU?= =?iso-8859-1?Q?wsNptZVtcoHtgyfy9YBPoGG6W7PboBPwVAe+SRtFRoLSmKjenxzcXqBFFb?= =?iso-8859-1?Q?OCYc3ljYuXQM78ZJJRxk1H2oYnaBbKlFSqQ77PHgqBOBSvQXjPOouwrIoT?= =?iso-8859-1?Q?jFs+L8V0Ghr66ruaLZuX2iPVXv+TJrjFnlv5UzrCuLIdsERdu5E7a2H07G?= =?iso-8859-1?Q?WAyQ7gYvf4MNkr9Sp4y+WOXjxREk9zgBeEHB/GFlfQw8kQ2b4sdN9BlBII?= =?iso-8859-1?Q?J9PBIDMTEOuOttkaRGLJrxj6/MR3NKIf2NAMI6o0B/5DpT5r7f5JN2Dec6?= =?iso-8859-1?Q?L2Y48T0k=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(366004)(396003)(346002)(136003)(39860400002)(189003)(199004)(26005)(186003)(386003)(6506007)(2616005)(476003)(446003)(11346002)(102836004)(486006)(2906002)(8936002)(106356001)(105586002)(71200400001)(2351001)(71190400001)(50226002)(97736004)(81166006)(8676002)(1730700003)(81156014)(6916009)(305945005)(7736002)(14454004)(478600001)(6116002)(3846002)(86362001)(2501003)(66066001)(14444005)(256004)(68736007)(107886003)(53936002)(6436002)(6512007)(1076003)(36756003)(25786009)(54906003)(316002)(6486002)(4326008)(5640700003)(99286004)(76176011)(52116002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB6230;H:AM6PR05MB5240.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: DxMQgPbzbi6Qw45kO5D9itLRxoZVv6l22I1pPM85B5Sv+YlDkjdkMhJKEr0ZWBy1ePh+k8z2zhqbKwS3ZP6l0rmh1EyYagueF5v3sUCw/yd6QS29Ge5kfahG0SAQkMr8PSbfFHpHgNmbQMugyi8sPYZW5gRrtB0OWFOHH/LGyQWLOXjJS/NzhV+Srj14Syt7gmePXBfIoI47UyDYp1ky8GJLFhGx9uYCbroj6VcIjHGCh7v+Y/Gka2sNesupaksoKsSVdI2gy5gtRLH8NgKMHdXA+49dDGZ+2tS9ahJb9e7ItTVBSX+PkYkoV+qzF99TK4/CakDJ4jZVl+9Lr0+xy13Xvy4XdxWAC8aIq7Gxx4wxr+r05JWcp06uJtUNAC3FUkHfYDZPd4BXg/yOSTFH6P/rA1CIAZSIZBjsDJSdMjI= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec066465-c065-48e6-d340-08d691a66ee1 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:52.4061 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB6230 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add new fan hwmon attribute for exposing fan faults (fault indication is read from Fan Out of Range Event Register). Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/core_hwmon.c | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c b/drivers/net= /ethernet/mellanox/mlxsw/core_hwmon.c index e04e8162aa14..40e13093b62d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c +++ b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c @@ -121,6 +121,27 @@ static ssize_t mlxsw_hwmon_fan_rpm_show(struct device = *dev, return sprintf(buf, "%u\n", mlxsw_reg_mfsm_rpm_get(mfsm_pl)); } =20 +static ssize_t mlxsw_hwmon_fan_fault_show(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + struct mlxsw_hwmon_attr *mlwsw_hwmon_attr =3D + container_of(attr, struct mlxsw_hwmon_attr, dev_attr); + struct mlxsw_hwmon *mlxsw_hwmon =3D mlwsw_hwmon_attr->hwmon; + char fore_pl[MLXSW_REG_FORE_LEN]; + bool fault; + int err; + + err =3D mlxsw_reg_query(mlxsw_hwmon->core, MLXSW_REG(fore), fore_pl); + if (err) { + dev_err(mlxsw_hwmon->bus_info->dev, "Failed to query fan\n"); + return err; + } + mlxsw_reg_fore_unpack(fore_pl, mlwsw_hwmon_attr->type_index, &fault); + + return sprintf(buf, "%u\n", fault); +} + static ssize_t mlxsw_hwmon_pwm_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -172,6 +193,7 @@ enum mlxsw_hwmon_attr_type { MLXSW_HWMON_ATTR_TYPE_TEMP_MAX, MLXSW_HWMON_ATTR_TYPE_TEMP_RST, MLXSW_HWMON_ATTR_TYPE_FAN_RPM, + MLXSW_HWMON_ATTR_TYPE_FAN_FAULT, MLXSW_HWMON_ATTR_TYPE_PWM, }; =20 @@ -209,6 +231,12 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *m= lxsw_hwmon, snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), "fan%u_input", num + 1); break; + case MLXSW_HWMON_ATTR_TYPE_FAN_FAULT: + mlxsw_hwmon_attr->dev_attr.show =3D mlxsw_hwmon_fan_fault_show; + mlxsw_hwmon_attr->dev_attr.attr.mode =3D 0444; + snprintf(mlxsw_hwmon_attr->name, sizeof(mlxsw_hwmon_attr->name), + "fan%u_fault", num + 1); + break; case MLXSW_HWMON_ATTR_TYPE_PWM: mlxsw_hwmon_attr->dev_attr.show =3D mlxsw_hwmon_pwm_show; mlxsw_hwmon_attr->dev_attr.store =3D mlxsw_hwmon_pwm_store; @@ -280,10 +308,14 @@ static int mlxsw_hwmon_fans_init(struct mlxsw_hwmon *= mlxsw_hwmon) mlxsw_reg_mfcr_unpack(mfcr_pl, &freq, &tacho_active, &pwm_active); num =3D 0; for (type_index =3D 0; type_index < MLXSW_MFCR_TACHOS_MAX; type_index++) = { - if (tacho_active & BIT(type_index)) + if (tacho_active & BIT(type_index)) { mlxsw_hwmon_attr_add(mlxsw_hwmon, MLXSW_HWMON_ATTR_TYPE_FAN_RPM, + type_index, num); + mlxsw_hwmon_attr_add(mlxsw_hwmon, + MLXSW_HWMON_ATTR_TYPE_FAN_FAULT, type_index, num++); + } } num =3D 0; for (type_index =3D 0; type_index < MLXSW_MFCR_PWMS_MAX; type_index++) { --=20 2.20.1