|
@@ -5643,6 +5643,89 @@ static inline void mlxsw_reg_mlcr_pack(char *payload, u8 local_port,
|
|
|
MLXSW_REG_MLCR_DURATION_MAX : 0);
|
|
|
}
|
|
|
|
|
|
+/* MCQI - Management Component Query Information
|
|
|
+ * ---------------------------------------------
|
|
|
+ * This register allows querying information about firmware components.
|
|
|
+ */
|
|
|
+#define MLXSW_REG_MCQI_ID 0x9061
|
|
|
+#define MLXSW_REG_MCQI_BASE_LEN 0x18
|
|
|
+#define MLXSW_REG_MCQI_CAP_LEN 0x14
|
|
|
+#define MLXSW_REG_MCQI_LEN (MLXSW_REG_MCQI_BASE_LEN + MLXSW_REG_MCQI_CAP_LEN)
|
|
|
+
|
|
|
+MLXSW_REG_DEFINE(mcqi, MLXSW_REG_MCQI_ID, MLXSW_REG_MCQI_LEN);
|
|
|
+
|
|
|
+/* reg_mcqi_component_index
|
|
|
+ * Index of the accessed component.
|
|
|
+ * Access: Index
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, component_index, 0x00, 0, 16);
|
|
|
+
|
|
|
+enum mlxfw_reg_mcqi_info_type {
|
|
|
+ MLXSW_REG_MCQI_INFO_TYPE_CAPABILITIES,
|
|
|
+};
|
|
|
+
|
|
|
+/* reg_mcqi_info_type
|
|
|
+ * Component properties set.
|
|
|
+ * Access: RW
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, info_type, 0x08, 0, 5);
|
|
|
+
|
|
|
+/* reg_mcqi_offset
|
|
|
+ * The requested/returned data offset from the section start, given in bytes.
|
|
|
+ * Must be DWORD aligned.
|
|
|
+ * Access: RW
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, offset, 0x10, 0, 32);
|
|
|
+
|
|
|
+/* reg_mcqi_data_size
|
|
|
+ * The requested/returned data size, given in bytes. If data_size is not DWORD
|
|
|
+ * aligned, the last bytes are zero padded.
|
|
|
+ * Access: RW
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, data_size, 0x14, 0, 16);
|
|
|
+
|
|
|
+/* reg_mcqi_cap_max_component_size
|
|
|
+ * Maximum size for this component, given in bytes.
|
|
|
+ * Access: RO
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, cap_max_component_size, 0x20, 0, 32);
|
|
|
+
|
|
|
+/* reg_mcqi_cap_log_mcda_word_size
|
|
|
+ * Log 2 of the access word size in bytes. Read and write access must be aligned
|
|
|
+ * to the word size. Write access must be done for an integer number of words.
|
|
|
+ * Access: RO
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, cap_log_mcda_word_size, 0x24, 28, 4);
|
|
|
+
|
|
|
+/* reg_mcqi_cap_mcda_max_write_size
|
|
|
+ * Maximal write size for MCDA register
|
|
|
+ * Access: RO
|
|
|
+ */
|
|
|
+MLXSW_ITEM32(reg, mcqi, cap_mcda_max_write_size, 0x24, 0, 16);
|
|
|
+
|
|
|
+static inline void mlxsw_reg_mcqi_pack(char *payload, u16 component_index)
|
|
|
+{
|
|
|
+ MLXSW_REG_ZERO(mcqi, payload);
|
|
|
+ mlxsw_reg_mcqi_component_index_set(payload, component_index);
|
|
|
+ mlxsw_reg_mcqi_info_type_set(payload,
|
|
|
+ MLXSW_REG_MCQI_INFO_TYPE_CAPABILITIES);
|
|
|
+ mlxsw_reg_mcqi_offset_set(payload, 0);
|
|
|
+ mlxsw_reg_mcqi_data_size_set(payload, MLXSW_REG_MCQI_CAP_LEN);
|
|
|
+}
|
|
|
+
|
|
|
+static inline void mlxsw_reg_mcqi_unpack(char *payload,
|
|
|
+ u32 *p_cap_max_component_size,
|
|
|
+ u8 *p_cap_log_mcda_word_size,
|
|
|
+ u16 *p_cap_mcda_max_write_size)
|
|
|
+{
|
|
|
+ *p_cap_max_component_size =
|
|
|
+ mlxsw_reg_mcqi_cap_max_component_size_get(payload);
|
|
|
+ *p_cap_log_mcda_word_size =
|
|
|
+ mlxsw_reg_mcqi_cap_log_mcda_word_size_get(payload);
|
|
|
+ *p_cap_mcda_max_write_size =
|
|
|
+ mlxsw_reg_mcqi_cap_mcda_max_write_size_get(payload);
|
|
|
+}
|
|
|
+
|
|
|
/* MPSC - Monitoring Packet Sampling Configuration Register
|
|
|
* --------------------------------------------------------
|
|
|
* MPSC Register is used to configure the Packet Sampling mechanism.
|
|
@@ -6221,6 +6304,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
|
|
|
MLXSW_REG(mpar),
|
|
|
MLXSW_REG(mlcr),
|
|
|
MLXSW_REG(mpsc),
|
|
|
+ MLXSW_REG(mcqi),
|
|
|
MLXSW_REG(mgpc),
|
|
|
MLXSW_REG(sbpr),
|
|
|
MLXSW_REG(sbcm),
|