static inline int bq24735_enable_charging(struct bq24735 *charger)
 {
+       if (charger->pdata->ext_control)
+               return 0;
+
        return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
                                   BQ24735_CHG_OPT_CHARGE_DISABLE,
                                   ~BQ24735_CHG_OPT_CHARGE_DISABLE);
 
 static inline int bq24735_disable_charging(struct bq24735 *charger)
 {
+       if (charger->pdata->ext_control)
+               return 0;
+
        return bq24735_update_word(charger->client, BQ24735_CHG_OPT,
                                   BQ24735_CHG_OPT_CHARGE_DISABLE,
                                   BQ24735_CHG_OPT_CHARGE_DISABLE);
        int ret;
        u16 value;
 
+       if (pdata->ext_control)
+               return 0;
+
        if (pdata->charge_current) {
                value = pdata->charge_current & BQ24735_CHARGE_CURRENT_MASK;
 
        if (!ret)
                pdata->input_current = val;
 
+       pdata->ext_control = of_property_read_bool(np, "ti,external-control");
+
        return pdata;
 }