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 96A80C282C2 for ; Wed, 13 Feb 2019 11:28:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 582382073D for ; Wed, 13 Feb 2019 11:28:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="tDpWMnyD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403911AbfBML2z (ORCPT ); Wed, 13 Feb 2019 06:28:55 -0500 Received: from mail-eopbgr40047.outbound.protection.outlook.com ([40.107.4.47]:46912 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2403894AbfBML2x (ORCPT ); Wed, 13 Feb 2019 06:28:53 -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=aJKHTt35b4BCt6HOuqEHjnGYUYlZ3uFU5d2juqaNnUE=; b=tDpWMnyDvPg23nbukl640ZOo+V5IgypFq3Yul8DguKXpGxzWs6VkzIQEuy5L79Kv1Xvde2da8/Wkl+173BdfH0mHH+tgX5ZqrAOw/f/QlDkWHQjewOFU866pa+qfsWAmJM6L84RQkE3XG5mtvO9Fqldx3oA1rQ02DEFl2NmEX08= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4501.eurprd05.prod.outlook.com (52.135.163.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.17; Wed, 13 Feb 2019 11:28:45 +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:45 +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 02/12] mlxsw: reg: Add Management Temperature Bulk Register Thread-Topic: [PATCH net-next 02/12] mlxsw: reg: Add Management Temperature Bulk Register Thread-Index: AQHUw49IWpuE1EpTBUC0HA95AdqyYA== Date: Wed, 13 Feb 2019 11:28:45 +0000 Message-ID: <20190213112814.32334-3-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: 79f77ffc-d689-4728-0897-08d691a66a50 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:AM6PR05MB4501; x-ms-traffictypediagnostic: AM6PR05MB4501: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB4501;23:VhlicfvLc+0Wt/YYAa9CWadqX8ANKQr8UhJgW6n?= =?iso-8859-1?Q?oW/WJXK90R0ZG0eDJQ79aSgNE5SiUHHvJjGxLzSFkOnhj23e6vdpCwkbZl?= =?iso-8859-1?Q?IuxwKyoV2cCG5LMVpeCWx5DxoOJq4Nv044voM/5e6EZ3UguHjgSIAY+CDc?= =?iso-8859-1?Q?lBJEsxlPNu3vkZOv7gFySKBWrXrjNyM2RA8RRz18LKZiOf1Boa+XsnZT4o?= =?iso-8859-1?Q?+slKyJxIa0BsGOHkNFkRionbIjRfD+QX9bUPuJAN6cwObuIn4hmnNEb+Z7?= =?iso-8859-1?Q?rOhaEjoJXtSlo5fa7gEcqiPLYfkhksHI9OtLpmk2tdwHF1o4iZ0pASRHF6?= =?iso-8859-1?Q?wjOgs/fUBYKPmzPvNQP4YNGE45slRXybulDoae6xStmHUtmDMNzlSmuy8h?= =?iso-8859-1?Q?Ba5AN4xELajqeuepnCF2x4poOz0IL+WR8FVenlm4khGiiFQDcuWd+ekmvp?= =?iso-8859-1?Q?tVG6nZGQwJ9MAQVoaVdA6w6fIbjv/Z40lHYedJpcO3QLVAtsFq2GQaGh7R?= =?iso-8859-1?Q?o5NwO2razu1btVTUJGRZs4iDpgfUIzHs1/mNEWW/EcxLAGcqDvJm/mezYK?= =?iso-8859-1?Q?gdPfCs/9xSlg84e5dOfTKksgb0L5VnTxfU96Ae4JtRXnkM32Xwa7XGuk/r?= =?iso-8859-1?Q?pNhJZ6jhc2yDWEzBEK1Q03ahMW+GnuFK7DT5PiGINaPDnL4WFeFVXR9yT6?= =?iso-8859-1?Q?oti2yDY6+T4OyR7da6M+b80KgCMhATfHLw0IMAktrDK83mEFsORmvFMbOi?= =?iso-8859-1?Q?0HOtiVcXGezy4CQOW/AtQrXbZ39leme1LEEs4vZtArJc91L3XB0kuTNmYf?= =?iso-8859-1?Q?YvpcfLz+x4dAseoG/ab7SdO9mseahQ/QV4m1zJJp/UmIEQYfNm7C1pTDZ5?= =?iso-8859-1?Q?iyb05nom6MEf1DBb42NECwBMw8Sba4zOPbwCVx+ODmS6YEdnEwVuAblYcn?= =?iso-8859-1?Q?DrW9/MDY5YWzCrDGBK3maKoIrhZaICg9ZphNbpxY0ZdUWqBZxYBperFHRU?= =?iso-8859-1?Q?ZCOA6uCiPt9gWPfIs6E9ydg3Ckv+vAyDmU86tRZloCkLIUdpnepk+OX7Ze?= =?iso-8859-1?Q?dBDGwADYy5SlP0xJEHIpA7WlaTje/DNqdgvh/q9g6RSRUbjZ49iNJ0Pd3v?= =?iso-8859-1?Q?fRzuM/I2bsO973I6ujfs5gx1Q+64pFYf4f4aMvnDR8VcLme2G3ZdZHM1JZ?= =?iso-8859-1?Q?zxQZ3vcYC+mm6gkGnb40OPvYhW0yWjioC6aY8YCCo6T091d+qblpxCWEvg?= =?iso-8859-1?Q?Ux8oyoHr5VXKJIWcaOUaKlEIeBAVagmm3Ak12wAyL9gyPGt6W8lYkhQOz1?= =?iso-8859-1?Q?KgAlK+ZGvpm+TWkYezCtCES5IUiUoC8ao10NNxxMMTlrZ+wPqwqKDjq9Rh?= =?iso-8859-1?Q?/2qg9I1A=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 094700CA91 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(6116002)(256004)(3846002)(2501003)(76176011)(2906002)(14444005)(99286004)(52116002)(97736004)(26005)(186003)(476003)(2616005)(106356001)(446003)(11346002)(105586002)(2351001)(25786009)(4326008)(86362001)(102836004)(71200400001)(8936002)(486006)(478600001)(1730700003)(66066001)(14454004)(71190400001)(53936002)(36756003)(81156014)(6486002)(107886003)(54906003)(68736007)(7736002)(6436002)(5640700003)(81166006)(305945005)(316002)(6506007)(1076003)(386003)(6916009)(8676002)(6512007)(50226002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB4501;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: 0QOTM1M+2z14W0J3j1RwwWWycfiutf77M1pkkVkPEOXbbMErEyTpkGICg+AdxbLuL5pXD+nSWP7j2JDG/EO8b2+EWoST8hoktM3gvt38hO5EFBhwgtYD0nxpY8Yb155FfChqVFnSVxGVGbsGH24GCc9ogJg9bbkTQdBfQyy/OBCBcQBF+ZViycsy9UtKH3DbMbNeWo+r0gZXSyQB7sgtqrBYn7tPiBZ5vTQgEWrMpBio4aVbzOgHWO7lZ4vp2VQH/3dk80Iu6K8M8N6IMeMBYe9VvGwoqpHkkhH5RCa3cIF4l8W4GCiZsYach7/iLK0GfzyFSxavSXM7r2cnqL1fLDRm736LrqhTiauZDE0dtdohVbhej7wIZSdE9WGcc6AwOh72FYkBx2aeV9cjlC66p2spMKL1VK79FJejPDR9zJI= 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: 79f77ffc-d689-4728-0897-08d691a66a50 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Feb 2019 11:28:44.7378 (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: AM6PR05MB4501 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Pasternak Add MTBR (Management Temperature Bulk Register), which is used for port temperature reading in a bulk mode. Signed-off-by: Vadim Pasternak Reviewed-by: Jiri Pirko Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 75 +++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethern= et/mellanox/mlxsw/reg.h index 1190a6a501a5..13856f40b8a7 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -8001,6 +8001,80 @@ static inline void mlxsw_reg_mtmp_unpack(char *paylo= ad, unsigned int *p_temp, mlxsw_reg_mtmp_sensor_name_memcpy_from(payload, sensor_name); } =20 +/* MTBR - Management Temperature Bulk Register + * ------------------------------------------- + * This register is used for bulk temperature reading. + */ +#define MLXSW_REG_MTBR_ID 0x900F +#define MLXSW_REG_MTBR_BASE_LEN 0x10 /* base length, without records */ +#define MLXSW_REG_MTBR_REC_LEN 0x04 /* record length */ +#define MLXSW_REG_MTBR_REC_MAX_COUNT 47 /* firmware limitation */ +#define MLXSW_REG_MTBR_LEN (MLXSW_REG_MTBR_BASE_LEN + \ + MLXSW_REG_MTBR_REC_LEN * \ + MLXSW_REG_MTBR_REC_MAX_COUNT) + +MLXSW_REG_DEFINE(mtbr, MLXSW_REG_MTBR_ID, MLXSW_REG_MTBR_LEN); + +/* reg_mtbr_base_sensor_index + * Base sensors index to access (0 - ASIC sensor, 1-63 - ambient sensors, + * 64-127 are mapped to the SFP+/QSFP modules sequentially). + * Access: Index + */ +MLXSW_ITEM32(reg, mtbr, base_sensor_index, 0x00, 0, 7); + +/* reg_mtbr_num_rec + * Request: Number of records to read + * Response: Number of records read + * See above description for more details. + * Range 1..255 + * Access: RW + */ +MLXSW_ITEM32(reg, mtbr, num_rec, 0x04, 0, 8); + +/* reg_mtbr_rec_max_temp + * The highest measured temperature from the sensor. + * When the bit mte is cleared, the field max_temperature is reserved. + * Access: RO + */ +MLXSW_ITEM32_INDEXED(reg, mtbr, rec_max_temp, MLXSW_REG_MTBR_BASE_LEN, 16, + 16, MLXSW_REG_MTBR_REC_LEN, 0x00, false); + +/* reg_mtbr_rec_temp + * Temperature reading from the sensor. Reading is in 0..125 Celsius + * degrees units. + * Access: RO + */ +MLXSW_ITEM32_INDEXED(reg, mtbr, rec_temp, MLXSW_REG_MTBR_BASE_LEN, 0, 16, + MLXSW_REG_MTBR_REC_LEN, 0x00, false); + +static inline void mlxsw_reg_mtbr_pack(char *payload, u8 base_sensor_index= , + u8 num_rec) +{ + MLXSW_REG_ZERO(mtbr, payload); + mlxsw_reg_mtbr_base_sensor_index_set(payload, base_sensor_index); + mlxsw_reg_mtbr_num_rec_set(payload, num_rec); +} + +/* Error codes from temperatute reading */ +enum mlxsw_reg_mtbr_temp_status { + MLXSW_REG_MTBR_NO_CONN =3D 0x8000, + MLXSW_REG_MTBR_NO_TEMP_SENS =3D 0x8001, + MLXSW_REG_MTBR_INDEX_NA =3D 0x8002, + MLXSW_REG_MTBR_BAD_SENS_INFO =3D 0x8003, +}; + +/* Base index for reading modules temperature */ +#define MLXSW_REG_MTBR_BASE_MODULE_INDEX 64 + +static inline void mlxsw_reg_mtbr_temp_unpack(char *payload, int rec_ind, + u16 *p_temp, u16 *p_max_temp) +{ + if (p_temp) + *p_temp =3D mlxsw_reg_mtbr_rec_temp_get(payload, rec_ind); + if (p_max_temp) + *p_max_temp =3D mlxsw_reg_mtbr_rec_max_temp_get(payload, rec_ind); +} + /* MCIA - Management Cable Info Access * ----------------------------------- * MCIA register is used to access the SFP+ and QSFP connector's EPROM. @@ -9779,6 +9853,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[]= =3D { MLXSW_REG(mfsl), MLXSW_REG(mtcap), MLXSW_REG(mtmp), + MLXSW_REG(mtbr), MLXSW_REG(mcia), MLXSW_REG(mpat), MLXSW_REG(mpar), --=20 2.20.1