mlxsw: reg: Extend MDDQ device_info by FW version fields
authorJiri Pirko <jiri@nvidia.com>
Mon, 25 Apr 2022 03:44:29 +0000 (06:44 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Apr 2022 09:42:29 +0000 (10:42 +0100)
Add FW version fields to MDDQ device_info.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core_linecards.c
drivers/net/ethernet/mellanox/mlxsw/reg.h

index b5f5b31bd31eb637752145b3e7d0b87f27f86c52..42fe93ac629d854eebd386cfef04dd736d99564f 100644 (file)
@@ -160,7 +160,8 @@ static int mlxsw_linecard_devices_attach(struct mlxsw_linecard *linecard)
                        return err;
                mlxsw_reg_mddq_device_info_unpack(mddq_pl, &msg_seq,
                                                  &data_valid, &flash_owner,
-                                                 &device_index);
+                                                 &device_index, NULL,
+                                                 NULL, NULL);
                if (!data_valid)
                        break;
                err = mlxsw_linecard_device_attach(mlxsw_core, linecard,
index 521c1b195a3e4a2a71dffb43c62d5a5323609e89..04c4d7a4bd83f5d7a01dc31338a685cd88beab6b 100644 (file)
@@ -11782,6 +11782,24 @@ MLXSW_ITEM32(reg, mddq, device_info_flash_owner, 0x10, 30, 1);
  */
 MLXSW_ITEM32(reg, mddq, device_info_device_index, 0x10, 0, 8);
 
+/* reg_mddq_device_info_fw_major
+ * Major FW version number.
+ * Access: RO
+ */
+MLXSW_ITEM32(reg, mddq, device_info_fw_major, 0x14, 16, 16);
+
+/* reg_mddq_device_info_fw_minor
+ * Minor FW version number.
+ * Access: RO
+ */
+MLXSW_ITEM32(reg, mddq, device_info_fw_minor, 0x18, 16, 16);
+
+/* reg_mddq_device_info_fw_sub_minor
+ * Sub-minor FW version number.
+ * Access: RO
+ */
+MLXSW_ITEM32(reg, mddq, device_info_fw_sub_minor, 0x18, 0, 16);
+
 static inline void
 mlxsw_reg_mddq_device_info_pack(char *payload, u8 slot_index,
                                u8 request_msg_seq)
@@ -11794,13 +11812,20 @@ mlxsw_reg_mddq_device_info_pack(char *payload, u8 slot_index,
 static inline void
 mlxsw_reg_mddq_device_info_unpack(const char *payload, u8 *p_response_msg_seq,
                                  bool *p_data_valid, bool *p_flash_owner,
-                                 u8 *p_device_index)
+                                 u8 *p_device_index, u16 *p_fw_major,
+                                 u16 *p_fw_minor, u16 *p_fw_sub_minor)
 {
        *p_response_msg_seq = mlxsw_reg_mddq_response_msg_seq_get(payload);
        *p_data_valid = mlxsw_reg_mddq_data_valid_get(payload);
        if (p_flash_owner)
                *p_flash_owner = mlxsw_reg_mddq_device_info_flash_owner_get(payload);
        *p_device_index = mlxsw_reg_mddq_device_info_device_index_get(payload);
+       if (p_fw_major)
+               *p_fw_major = mlxsw_reg_mddq_device_info_fw_major_get(payload);
+       if (p_fw_minor)
+               *p_fw_minor = mlxsw_reg_mddq_device_info_fw_minor_get(payload);
+       if (p_fw_sub_minor)
+               *p_fw_sub_minor = mlxsw_reg_mddq_device_info_fw_sub_minor_get(payload);
 }
 
 #define MLXSW_REG_MDDQ_SLOT_ASCII_NAME_LEN 20