MAX17205 DevName reading wrong, but other default value is correct. Why?
Solved this problem myself. 

It's not related to I2C reading, it's a chip configuration problem. 

I am using multiple cell battery pack, the set-up is different than default. Under this set-up, I need to set PackCfg register to the correct value, before reading any value from the MAX17205 chip, include the DevName register.

So I write 0x3a04 (0x3a0N for a multi-cell battery pack, N is the number of cells), to the register PackCfg(0xbd), then the reading from DevName register changed from 0x2a7c to 0x10f5. 0x10f5 should be what we expect, as for MAX17205, the LSB of this reading should end with 0x5. 

It doesn't mention anywhere on the datasheet that this PackCfg value need to be set first, before even reading the DevName register. Since I would expect that normally the DevName register is independent from any chip operations (apart from power mode, for some chips, but correct me if my understanding is wrong.), but this is what I found on this chip after hours of debugging..