The datasheet (5.10.5) says that
The soft reset is triggered by sending CMD.cmd = 0xB6 followed by CMD.cmd = 0x0
I don't see that happening in the functions bmm350_init and bmm350_soft_reset.
In fact, I tested this with the real hardware and the soft reset logic doesn't seem to be working. The only way to reset the sensor is to switch it off.