static int mlxsw_hwmon_gearbox_init(struct mlxsw_hwmon *mlxsw_hwmon)
 {
+       enum mlxsw_reg_mgpir_device_type device_type;
        int index, max_index, sensor_index;
        char mgpir_pl[MLXSW_REG_MGPIR_LEN];
        char mtmp_pl[MLXSW_REG_MTMP_LEN];
        if (err)
                return err;
 
-       mlxsw_reg_mgpir_unpack(mgpir_pl, &gbox_num, NULL, NULL, NULL);
-       if (!gbox_num)
+       mlxsw_reg_mgpir_unpack(mgpir_pl, &gbox_num, &device_type, NULL, NULL);
+       if (device_type != MLXSW_REG_MGPIR_DEVICE_TYPE_GEARBOX_DIE ||
+           !gbox_num)
                return 0;
 
        index = mlxsw_hwmon->module_sensor_max;
 
 mlxsw_thermal_gearboxes_init(struct device *dev, struct mlxsw_core *core,
                             struct mlxsw_thermal *thermal)
 {
+       enum mlxsw_reg_mgpir_device_type device_type;
        struct mlxsw_thermal_module *gearbox_tz;
        char mgpir_pl[MLXSW_REG_MGPIR_LEN];
+       u8 gbox_num;
        int i;
        int err;
 
        if (err)
                return err;
 
-       mlxsw_reg_mgpir_unpack(mgpir_pl, &thermal->tz_gearbox_num, NULL, NULL,
+       mlxsw_reg_mgpir_unpack(mgpir_pl, &gbox_num, &device_type, NULL,
                               NULL);
-       if (!thermal->tz_gearbox_num)
+       if (device_type != MLXSW_REG_MGPIR_DEVICE_TYPE_GEARBOX_DIE ||
+           !gbox_num)
                return 0;
 
+       thermal->tz_gearbox_num = gbox_num;
        thermal->tz_gearbox_arr = kcalloc(thermal->tz_gearbox_num,
                                          sizeof(*thermal->tz_gearbox_arr),
                                          GFP_KERNEL);