From patchwork Wed Jun 14 07:27:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 775628 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wndX35v30z9s7t for ; Wed, 14 Jun 2017 17:28:03 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="Xj6j7rKe"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754515AbdFNH2B (ORCPT ); Wed, 14 Jun 2017 03:28:01 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:33666 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754505AbdFNH17 (ORCPT ); Wed, 14 Jun 2017 03:27:59 -0400 Received: by mail-wr0-f194.google.com with SMTP id v104so36670359wrb.0 for ; Wed, 14 Jun 2017 00:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=fvU1ODTVHGJMGLTnLObGf7CKhRyup/q3SnKiwWGYjmM=; b=Xj6j7rKeUEVk7L/yZ4smvmaCTDjUsIlcuH2pGrO5aGLC/TudtsNWwcg0WCTMmBYJG1 Il9sAWkVYpZjmcStTpXVmCRDzr44KPp6wr8B9qbTd+rMz7CflaWXcmvAq4m3pRq36nPj Yecry5jN6INbo3QzYMrZCyXywAUgY8hydMPkvyHU9JtMntzPy6oPvO8i11kfWiDXxz04 xOd7hQ62DYr+gA/MLlEhkDjIy41EPa3+M2srXCOoGVeDnJEiuo14+QEGsZ1DKFWHS32H SYnkGytBTDYCsRoK6BBpnAPmsTsRR/nC7RCv3z+lyd9qcKR0nPvVUrI77roSYVwICGCu zesQ== 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; bh=fvU1ODTVHGJMGLTnLObGf7CKhRyup/q3SnKiwWGYjmM=; b=DO8WHOtkKuop+iryuUw2Yg2a14tn27xsObyfYlXIHPSQqmWm6y8kCNgwad/l0SEEmq /nhSbNuIHdANZ4O1BYmofSNjU06/ZZWaELzxJl75uYTdh7tOEdq5Aa9555dODN9tpnh2 83hnPu4mEw0oUJXF4QSb5HZBzL1BWx/vU9gnacYNLBbOF/yki0i4PPcJFDVe/uOnHx/e OYFxrhsFuBvf7TYVUoqCuc9mQEKBLsf4gE7OiSAJD5nv/zbggwp3rlX0zxJywl/qIOyi 0OTnAEnAQBmyl3r+D4PyrpYgA2CeD2zo2NvhRpJmrF2XwUn2EtY7xYGQROXbes0+jHBZ nGLQ== X-Gm-Message-State: AKS2vOzbeQtFVvIjbRE6WbEYPrRiVNSckuNf/mMOi2iYsRLQgS28+iOz o0zmVn0UnBNZSCUztG8= X-Received: by 10.223.151.134 with SMTP id s6mr5923147wrb.40.1497425262944; Wed, 14 Jun 2017 00:27:42 -0700 (PDT) Received: from localhost (ip-78-45-162-3.net.upcbroadband.cz. [78.45.162.3]) by smtp.gmail.com with ESMTPSA id f3sm203837wrf.2.2017.06.14.00.27.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 14 Jun 2017 00:27:42 -0700 (PDT) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, arkadis@mellanox.com, mlxsw@mellanox.com Subject: [patch net-next 1/2] mlxsw: reg: Add MCIA register for cable info access Date: Wed, 14 Jun 2017 09:27:39 +0200 Message-Id: <20170614072740.1243-2-jiri@resnulli.us> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170614072740.1243-1-jiri@resnulli.us> References: <20170614072740.1243-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Arkadi Sharshevsky The MCIA register is used to access the SFP+ and QSFP connector's EPROM. It will be used to query the cable info. Signed-off-by: Arkadi Sharshevsky Signed-off-by: Jiri Pirko --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 76 +++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 157b9b6..1bd34d9 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -5491,6 +5491,81 @@ static inline void mlxsw_reg_mtmp_unpack(char *payload, unsigned int *p_temp, mlxsw_reg_mtmp_sensor_name_memcpy_from(payload, sensor_name); } +/* MCIA - Management Cable Info Access + * ----------------------------------- + * MCIA register is used to access the SFP+ and QSFP connector's EPROM. + */ + +#define MLXSW_REG_MCIA_ID 0x9014 +#define MLXSW_REG_MCIA_LEN 0x40 + +MLXSW_REG_DEFINE(mcia, MLXSW_REG_MCIA_ID, MLXSW_REG_MCIA_LEN); + +/* reg_mcia_l + * Lock bit. Setting this bit will lock the access to the specific + * cable. Used for updating a full page in a cable EPROM. Any access + * other then subsequence writes will fail while the port is locked. + * Access: RW + */ +MLXSW_ITEM32(reg, mcia, l, 0x00, 31, 1); + +/* reg_mcia_module + * Module number. + * Access: Index + */ +MLXSW_ITEM32(reg, mcia, module, 0x00, 16, 8); + +/* reg_mcia_status + * Module status. + * Access: RO + */ +MLXSW_ITEM32(reg, mcia, status, 0x00, 0, 8); + +/* reg_mcia_i2c_device_address + * I2C device address. + * Access: RW + */ +MLXSW_ITEM32(reg, mcia, i2c_device_address, 0x04, 24, 8); + +/* reg_mcia_page_number + * Page number. + * Access: RW + */ +MLXSW_ITEM32(reg, mcia, page_number, 0x04, 16, 8); + +/* reg_mcia_device_address + * Device address. + * Access: RW + */ +MLXSW_ITEM32(reg, mcia, device_address, 0x04, 0, 16); + +/* reg_mcia_size + * Number of bytes to read/write (up to 48 bytes). + * Access: RW + */ +MLXSW_ITEM32(reg, mcia, size, 0x08, 0, 16); + +#define MLXSW_SP_REG_MCIA_EEPROM_SIZE 48 + +/* reg_mcia_eeprom + * Bytes to read/write. + * Access: RW + */ +MLXSW_ITEM_BUF(reg, mcia, eeprom, 0x10, MLXSW_SP_REG_MCIA_EEPROM_SIZE); + +static inline void mlxsw_reg_mcia_pack(char *payload, u8 module, u8 lock, + u8 page_number, u16 device_addr, + u8 size, u8 i2c_device_addr) +{ + MLXSW_REG_ZERO(mcia, payload); + mlxsw_reg_mcia_module_set(payload, module); + mlxsw_reg_mcia_l_set(payload, lock); + mlxsw_reg_mcia_page_number_set(payload, page_number); + mlxsw_reg_mcia_device_address_set(payload, device_addr); + mlxsw_reg_mcia_size_set(payload, size); + mlxsw_reg_mcia_i2c_device_address_set(payload, i2c_device_addr); +} + /* MPAT - Monitoring Port Analyzer Table * ------------------------------------- * MPAT Register is used to query and configure the Switch PortAnalyzer Table. @@ -6433,6 +6508,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = { MLXSW_REG(mfsl), MLXSW_REG(mtcap), MLXSW_REG(mtmp), + MLXSW_REG(mcia), MLXSW_REG(mpat), MLXSW_REG(mpar), MLXSW_REG(mlcr),