//-->Carlisle add for ATD querying gauge IC status
int check_gaugeIC_status_read(char *page, char **start, off_t off, int count, int *eof, void *date)
{
    struct i2c_client *client = NULL;
    int len;
    int ret;
    int flags=0;
    int gauge_status=0;

    client = bq27520_dev_info.i2c;

    ret = bq27520_send_subcmd(client, &flags, BQ27520_SUBCMD_CTNL_STATUS);

    if (ret==0) {

        gauge_status=1;
        len = sprintf(page, "%d\n", gauge_status);

    }
    else {

        dev_err(&client->dev, "Send subcommand error %d.\n", ret);
        len = sprintf(page, "%d\n", gauge_status);
    }


    return len;
}
int bq27520_exit_rom_mode() 
{
    int retry = RETRY_COUNT;
    struct i2c_client *i2c = NULL;
    struct i2c_client *client = NULL;
    int val=0;
    int ret=0;

    mutex_lock(&batt_dev_upt_mutex);    
    i2c = batt_upt_dev_info.i2c;
    mutex_unlock(&batt_dev_upt_mutex);

    BAT_DBG_E("[%s] enter \n", __func__);

    while (retry--) {
        ret = bq27520_write_i2c(i2c, 0x00, 0x0F, 1);
        if (ret < 0) continue;

        ret = bq27520_write_i2c(i2c, 0x64, 0x0F, 1);
        if (ret < 0) continue;

        ret = bq27520_write_i2c(i2c, 0x65, 0x00, 1);
        if (ret < 0) continue;

        break;
    };
    if (!retry) {
        BAT_DBG_E("Exit ROM mode FAIL \n");
        return ret;
    }

    /* 
     * verify it's NOT ROM node.
     * Yes if read registers FAIL from now on.
     */
    ret = bq27520_read_i2c(i2c, 0x00, &val, 1);
    if (!ret)  {
        BAT_DBG_E("Exit ROM Mode verification FAIL.\n");
        return -EACCES;
    }

    /* 
     * wait 1s and send IT_ENABLE command 
     * (battery team request)
     */
    msleep(1000);

    mutex_lock(&bq27520_dev_info_mutex);    
    client = bq27520_dev_info.i2c;
    mutex_unlock(&bq27520_dev_info_mutex);

    ret = bq27520_send_subcmd(client, NULL, BQ27520_SUBCMD_ENABLE_IT);
    if (ret)
        return ret;

    return 0;
}