ISL97901 output voltage problem

I am using ISL97901 for one of my project and having following issues:

> When I am modifying D1's current gain values, all D1, D2 and D3's output currents are changing. 

> When D2 and D3 data is modified, none of outputs are getting modified.

void ISL_init(I2C_HandleTypeDef *hi2c)
{
    Bus_Write(ISL97901_ENABLE_CONTROL, val_ENABLE_CONTROL , hi2c);
    Bus_Write(ISL97901_CLOCK_CONTROL, val_CLOCK_CONTROL , hi2c);
    Bus_Write(ISL97901_LED_R_LSB, val_LED_R_LSB , hi2c);
    Bus_Write(ISL97901_LED_G_LSB, val_LED_G_LSB , hi2c);
    Bus_Write(ISL97901_LED_B_LSB, val_LED_B_LSB , hi2c);
    Bus_Write(ISL97901_LED_RGB_MSB, val_LED_RGB_MSB , hi2c);
}

#define ISL97901_LED_STATUS            0x01
#define ISL97901_ENABLE_CONTROL        0x02
#define val_ENABLE_CONTROL            0x14
#define ISL97901_CLOCK_CONTROL        0x04
#define val_CLOCK_CONTROL            0x87
#define ISL97901_LED_R_LSB            0x13
#define val_LED_R_LSB                0x0D
#define ISL97901_LED_G_LSB            0x14
#define val_LED_G_LSB                0x0D
#define ISL97901_LED_B_LSB            0x15
#define val_LED_B_LSB                0x0D
#define ISL97901_LED_RGB_MSB        0x17
#define val_LED_RGB_MSB                0x00

Even each gain status registers are showing different values that I am setting in the gain registers. So output is getting programmed as per the code but I am not able to get different currents as output. The next doubt might be hardware but the outputs are not shorted I have checked properly. Can you help me in pinpointing the issue.