@@ -11364,6 +11364,95 @@ mlxsw_reg_mbct_unpack(const char *payload, u8 *p_slot_index,
1136411364 * p_fsm_state = mlxsw_reg_mbct_fsm_state_get (payload );
1136511365}
1136611366
11367+ /* MDDT - Management DownStream Device Tunneling Register
11368+ * ------------------------------------------------------
11369+ * This register allows to deliver query and request messages (PRM registers,
11370+ * commands) to a DownStream device.
11371+ */
11372+ #define MLXSW_REG_MDDT_ID 0x9160
11373+ #define MLXSW_REG_MDDT_LEN 0x110
11374+
11375+ MLXSW_REG_DEFINE (mddt , MLXSW_REG_MDDT_ID , MLXSW_REG_MDDT_LEN );
11376+
11377+ /* reg_mddt_slot_index
11378+ * Slot index.
11379+ * Access: Index
11380+ */
11381+ MLXSW_ITEM32 (reg , mddt , slot_index , 0x00 , 8 , 4 );
11382+
11383+ /* reg_mddt_device_index
11384+ * Device index.
11385+ * Access: Index
11386+ */
11387+ MLXSW_ITEM32 (reg , mddt , device_index , 0x00 , 0 , 8 );
11388+
11389+ /* reg_mddt_read_size
11390+ * Read size in D-Words.
11391+ * Access: OP
11392+ */
11393+ MLXSW_ITEM32 (reg , mddt , read_size , 0x04 , 24 , 8 );
11394+
11395+ /* reg_mddt_write_size
11396+ * Write size in D-Words.
11397+ * Access: OP
11398+ */
11399+ MLXSW_ITEM32 (reg , mddt , write_size , 0x04 , 16 , 8 );
11400+
11401+ enum mlxsw_reg_mddt_status {
11402+ MLXSW_REG_MDDT_STATUS_OK ,
11403+ };
11404+
11405+ /* reg_mddt_status
11406+ * Return code of the Downstream Device to the register that was sent.
11407+ * Access: RO
11408+ */
11409+ MLXSW_ITEM32 (reg , mddt , status , 0x0C , 24 , 8 );
11410+
11411+ enum mlxsw_reg_mddt_method {
11412+ MLXSW_REG_MDDT_METHOD_QUERY ,
11413+ MLXSW_REG_MDDT_METHOD_WRITE ,
11414+ };
11415+
11416+ /* reg_mddt_method
11417+ * Access: OP
11418+ */
11419+ MLXSW_ITEM32 (reg , mddt , method , 0x0C , 22 , 2 );
11420+
11421+ /* reg_mddt_register_id
11422+ * Access: Index
11423+ */
11424+ MLXSW_ITEM32 (reg , mddt , register_id , 0x0C , 0 , 16 );
11425+
11426+ #define MLXSW_REG_MDDT_PAYLOAD_OFFSET 0x0C
11427+ #define MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN 4
11428+
11429+ static inline char * mlxsw_reg_mddt_inner_payload (char * payload )
11430+ {
11431+ return payload + MLXSW_REG_MDDT_PAYLOAD_OFFSET +
11432+ MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN ;
11433+ }
11434+
11435+ static inline void mlxsw_reg_mddt_pack (char * payload , u8 slot_index ,
11436+ u8 device_index ,
11437+ enum mlxsw_reg_mddt_method method ,
11438+ const struct mlxsw_reg_info * reg ,
11439+ char * * inner_payload )
11440+ {
11441+ int len = reg -> len + MLXSW_REG_MDDT_PRM_REGISTER_HEADER_LEN ;
11442+
11443+ if (WARN_ON (len + MLXSW_REG_MDDT_PAYLOAD_OFFSET > MLXSW_REG_MDDT_LEN ))
11444+ len = MLXSW_REG_MDDT_LEN - MLXSW_REG_MDDT_PAYLOAD_OFFSET ;
11445+
11446+ MLXSW_REG_ZERO (mddt , payload );
11447+ mlxsw_reg_mddt_slot_index_set (payload , slot_index );
11448+ mlxsw_reg_mddt_device_index_set (payload , device_index );
11449+ mlxsw_reg_mddt_method_set (payload , method );
11450+ mlxsw_reg_mddt_register_id_set (payload , reg -> id );
11451+ mlxsw_reg_mddt_read_size_set (payload , len / 4 );
11452+ mlxsw_reg_mddt_write_size_set (payload , len / 4 );
11453+ * inner_payload = mlxsw_reg_mddt_inner_payload (payload );
11454+ }
11455+
1136711456/* MDDQ - Management DownStream Device Query Register
1136811457 * --------------------------------------------------
1136911458 * This register allows to query the DownStream device properties. The desired
@@ -12943,6 +13032,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
1294313032 MLXSW_REG (mfgd ),
1294413033 MLXSW_REG (mgpir ),
1294513034 MLXSW_REG (mbct ),
13035+ MLXSW_REG (mddt ),
1294613036 MLXSW_REG (mddq ),
1294713037 MLXSW_REG (mddc ),
1294813038 MLXSW_REG (mfde ),
0 commit comments