power: supply: ab8500: Drop AB8540/9540 support
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 22 Mar 2018 10:24:35 +0000 (11:24 +0100)
committerSebastian Reichel <sre@kernel.org>
Wed, 25 Apr 2018 21:49:44 +0000 (23:49 +0200)
The AB8540 was an evolved version of the AB8500, but it was never
mass produced or put into products, only reference designs exist.
The upstream support was never completed and it is unlikely that
this will happen so drop the support for now to simplify
maintenance of the AB8500.

Cc: Loic Pallardy <loic.pallardy@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/power/supply/ab8500_bmdata.c
drivers/power/supply/ab8500_btemp.c
drivers/power/supply/ab8500_charger.c
drivers/power/supply/ab8500_fg.c
drivers/power/supply/abx500_chargalg.c
include/linux/mfd/abx500.h
include/linux/mfd/abx500/ab8500-bm.h
include/linux/mfd/abx500/ux500_chargalg.h

index 4a7ed50d1dc549901596e4b0e67efa46a7ba9e7e..7b2b69916f48c7004b5545c07dd015952babd679 100644 (file)
@@ -430,13 +430,6 @@ static const struct abx500_maxim_parameters ab8500_maxi_params = {
        .charger_curr_step = 100,
 };
 
-static const struct abx500_maxim_parameters abx540_maxi_params = {
-       .ena_maxi = true,
-       .chg_curr = 3000,
-       .wait_cycles = 10,
-       .charger_curr_step = 200,
-};
-
 static const struct abx500_bm_charger_parameters chg = {
        .usb_volt_max           = 5500,
        .usb_curr_max           = 1500,
@@ -453,17 +446,6 @@ static int ab8500_charge_output_curr_map[] = {
         900,    1000,   1100,   1200,   1300,   1400,   1500,   1500,
 };
 
-static int ab8540_charge_output_curr_map[] = {
-        0,      0,      0,      75,     100,    125,    150,    175,
-        200,    225,    250,    275,    300,    325,    350,    375,
-        400,    425,    450,    475,    500,    525,    550,    575,
-        600,    625,    650,    675,    700,    725,    750,    775,
-        800,    825,    850,    875,    900,    925,    950,    975,
-        1000,   1025,   1050,   1075,   1100,   1125,   1150,   1175,
-        1200,   1225,   1250,   1275,   1300,   1325,   1350,   1375,
-        1400,   1425,   1450,   1500,   1600,   1700,   1900,   2000,
-};
-
 /*
  * This array maps the raw hex value to charger input current used by the
  * AB8500 values
@@ -473,17 +455,6 @@ static int ab8500_charge_input_curr_map[] = {
         700,    800,    900,    1000,   1100,   1300,   1400,   1500,
 };
 
-static int ab8540_charge_input_curr_map[] = {
-        25,     50,     75,     100,    125,    150,    175,    200,
-        225,    250,    275,    300,    325,    350,    375,    400,
-        425,    450,    475,    500,    525,    550,    575,    600,
-        625,    650,    675,    700,    725,    750,    775,    800,
-        825,    850,    875,    900,    925,    950,    975,    1000,
-        1025,   1050,   1075,   1100,   1125,   1150,   1175,   1200,
-        1225,   1250,   1275,   1300,   1325,   1350,   1375,   1400,
-        1425,   1450,   1475,   1500,   1500,   1500,   1500,   1500,
-};
-
 struct abx500_bm_data ab8500_bm_data = {
        .temp_under             = 3,
        .temp_low               = 8,
@@ -518,40 +489,6 @@ struct abx500_bm_data ab8500_bm_data = {
         .n_chg_in_curr          = ARRAY_SIZE(ab8500_charge_input_curr_map),
 };
 
-struct abx500_bm_data ab8540_bm_data = {
-        .temp_under             = 3,
-        .temp_low               = 8,
-        .temp_high              = 43,
-        .temp_over              = 48,
-        .main_safety_tmr_h      = 4,
-        .temp_interval_chg      = 20,
-        .temp_interval_nochg    = 120,
-        .usb_safety_tmr_h       = 4,
-        .bkup_bat_v             = BUP_VCH_SEL_2P6V,
-        .bkup_bat_i             = BUP_ICH_SEL_150UA,
-        .no_maintenance         = false,
-        .capacity_scaling       = false,
-        .adc_therm              = ABx500_ADC_THERM_BATCTRL,
-        .chg_unknown_bat        = false,
-        .enable_overshoot       = false,
-        .fg_res                 = 100,
-        .cap_levels             = &cap_levels,
-        .bat_type               = bat_type_thermistor,
-        .n_btypes               = ARRAY_SIZE(bat_type_thermistor),
-        .batt_id                = 0,
-        .interval_charging      = 5,
-        .interval_not_charging  = 120,
-        .temp_hysteresis        = 3,
-        .gnd_lift_resistance    = 0,
-        .maxi                   = &abx540_maxi_params,
-        .chg_params             = &chg,
-        .fg_params              = &fg,
-        .chg_output_curr        = ab8540_charge_output_curr_map,
-        .n_chg_out_curr         = ARRAY_SIZE(ab8540_charge_output_curr_map),
-        .chg_input_curr         = ab8540_charge_input_curr_map,
-        .n_chg_in_curr          = ARRAY_SIZE(ab8540_charge_input_curr_map),
-};
-
 int ab8500_bm_of_probe(struct device *dev,
                       struct device_node *np,
                       struct abx500_bm_data *bm)
index f7a35ebfbab29cf329312bd4b7315bdd0b2b7ec6..708fd58cd62b22f3212d4deedf1b5b6cccb9c6f1 100644 (file)
@@ -214,22 +214,10 @@ static int ab8500_btemp_curr_source_enable(struct ab8500_btemp *di,
        /* Only do this for batteries with internal NTC */
        if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && enable) {
 
-               if (is_ab8540(di->parent)) {
-                       if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_60UA)
-                               curr = BAT_CTRL_60U_ENA;
-                       else
-                               curr = BAT_CTRL_120U_ENA;
-               } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) {
-                       if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_16UA)
-                               curr = BAT_CTRL_16U_ENA;
-                       else
-                               curr = BAT_CTRL_18U_ENA;
-               } else {
-                       if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA)
-                               curr = BAT_CTRL_7U_ENA;
-                       else
-                               curr = BAT_CTRL_20U_ENA;
-               }
+               if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA)
+                       curr = BAT_CTRL_7U_ENA;
+               else
+                       curr = BAT_CTRL_20U_ENA;
 
                dev_dbg(di->dev, "Set BATCTRL %duA\n", di->curr_source);
 
@@ -260,28 +248,12 @@ static int ab8500_btemp_curr_source_enable(struct ab8500_btemp *di,
        } else if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && !enable) {
                dev_dbg(di->dev, "Disable BATCTRL curr source\n");
 
-               if (is_ab8540(di->parent)) {
-                       /* Write 0 to the curr bits */
-                       ret = abx500_mask_and_set_register_interruptible(
-                               di->dev,
-                               AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                               BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA,
-                               ~(BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA));
-               } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) {
-                       /* Write 0 to the curr bits */
-                       ret = abx500_mask_and_set_register_interruptible(
-                               di->dev,
-                               AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                               BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA,
-                               ~(BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA));
-               } else {
-                       /* Write 0 to the curr bits */
-                       ret = abx500_mask_and_set_register_interruptible(
-                               di->dev,
-                               AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                               BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA,
-                               ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA));
-               }
+               /* Write 0 to the curr bits */
+               ret = abx500_mask_and_set_register_interruptible(
+                       di->dev,
+                       AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
+                       BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA,
+                       ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA));
 
                if (ret) {
                        dev_err(di->dev, "%s failed disabling current source\n",
@@ -324,25 +296,11 @@ static int ab8500_btemp_curr_source_enable(struct ab8500_btemp *di,
         * if we got an error above
         */
 disable_curr_source:
-       if (is_ab8540(di->parent)) {
-               /* Write 0 to the curr bits */
-               ret = abx500_mask_and_set_register_interruptible(di->dev,
-                       AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                       BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA,
-                       ~(BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA));
-       } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) {
-               /* Write 0 to the curr bits */
-               ret = abx500_mask_and_set_register_interruptible(di->dev,
-                       AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                       BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA,
-                       ~(BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA));
-       } else {
-               /* Write 0 to the curr bits */
-               ret = abx500_mask_and_set_register_interruptible(di->dev,
-                       AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
-                       BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA,
-                       ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA));
-       }
+       /* Write 0 to the curr bits */
+       ret = abx500_mask_and_set_register_interruptible(di->dev,
+               AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE,
+               BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA,
+               ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA));
 
        if (ret) {
                dev_err(di->dev, "%s failed disabling current source\n",
@@ -556,13 +514,8 @@ static int ab8500_btemp_id(struct ab8500_btemp *di)
 {
        int res;
        u8 i;
-       if (is_ab8540(di->parent))
-               di->curr_source = BTEMP_BATCTRL_CURR_SRC_60UA;
-       else if (is_ab9540(di->parent) || is_ab8505(di->parent))
-               di->curr_source = BTEMP_BATCTRL_CURR_SRC_16UA;
-       else
-               di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA;
 
+       di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA;
        di->bm->batt_id = BATTERY_UNKNOWN;
 
        res =  ab8500_btemp_get_batctrl_res(di);
@@ -600,18 +553,8 @@ static int ab8500_btemp_id(struct ab8500_btemp *di)
         */
        if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL &&
            di->bm->batt_id == 1) {
-               if (is_ab8540(di->parent)) {
-                       dev_dbg(di->dev,
-                               "Set BATCTRL current source to 60uA\n");
-                       di->curr_source = BTEMP_BATCTRL_CURR_SRC_60UA;
-               } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) {
-                       dev_dbg(di->dev,
-                               "Set BATCTRL current source to 16uA\n");
-                       di->curr_source = BTEMP_BATCTRL_CURR_SRC_16UA;
-               } else {
-                       dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n");
-                       di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA;
-               }
+               dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n");
+               di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA;
        }
 
        return di->bm->batt_id;
index 5a76c6d343de0a38ab8d718aefd220a1301a13d8..ba0e97284ae5c69069de3c1a3c8f3e8bb412b88b 100644 (file)
@@ -58,9 +58,7 @@
 
 #define MAIN_CH_INPUT_CURR_SHIFT       4
 #define VBUS_IN_CURR_LIM_SHIFT         4
-#define AB8540_VBUS_IN_CURR_LIM_SHIFT  2
 #define AUTO_VBUS_IN_CURR_LIM_SHIFT    4
-#define AB8540_AUTO_VBUS_IN_CURR_MASK  0x3F
 #define VBUS_IN_CURR_LIM_RETRY_SET_TIME        30 /* seconds */
 
 #define LED_INDICATOR_PWM_ENA          0x01
@@ -1138,10 +1136,7 @@ static int ab8500_charger_set_current(struct ab8500_charger *di,
                        no_stepping = true;
                break;
        case AB8500_USBCH_IPT_CRNTLVL_REG:
-               if (is_ab8540(di->parent))
-                       shift_value = AB8540_VBUS_IN_CURR_LIM_SHIFT;
-               else
-                       shift_value = VBUS_IN_CURR_LIM_SHIFT;
+               shift_value = VBUS_IN_CURR_LIM_SHIFT;
                prev_curr_index = (reg_value >> shift_value);
                curr_index = ab8500_vbus_in_curr_to_regval(di, ich);
                step_udelay = STEP_UDELAY * 100;
@@ -1865,67 +1860,6 @@ static int ab8500_charger_update_charger_current(struct ux500_charger *charger,
        return ret;
 }
 
-/**
- * ab8540_charger_power_path_enable() - enable usb power path mode
- * @charger:   pointer to the ux500_charger structure
- * @enable:    enable/disable flag
- *
- * Enable or disable the power path for usb mode
- * Returns error code in case of failure else 0(on success)
- */
-static int ab8540_charger_power_path_enable(struct ux500_charger *charger,
-               bool enable)
-{
-       int ret;
-       struct ab8500_charger *di;
-
-       if (charger->psy->desc->type == POWER_SUPPLY_TYPE_USB)
-               di = to_ab8500_charger_usb_device_info(charger);
-       else
-               return -ENXIO;
-
-       ret = abx500_mask_and_set_register_interruptible(di->dev,
-                               AB8500_CHARGER, AB8540_USB_PP_MODE_REG,
-                               BUS_POWER_PATH_MODE_ENA, enable);
-       if (ret) {
-               dev_err(di->dev, "%s write failed\n", __func__);
-               return ret;
-       }
-
-       return ret;
-}
-
-
-/**
- * ab8540_charger_usb_pre_chg_enable() - enable usb pre change
- * @charger:   pointer to the ux500_charger structure
- * @enable:    enable/disable flag
- *
- * Enable or disable the pre-chage for usb mode
- * Returns error code in case of failure else 0(on success)
- */
-static int ab8540_charger_usb_pre_chg_enable(struct ux500_charger *charger,
-               bool enable)
-{
-       int ret;
-       struct ab8500_charger *di;
-
-       if (charger->psy->desc->type == POWER_SUPPLY_TYPE_USB)
-               di = to_ab8500_charger_usb_device_info(charger);
-       else
-               return -ENXIO;
-
-       ret = abx500_mask_and_set_register_interruptible(di->dev,
-                               AB8500_CHARGER, AB8540_USB_PP_CHR_REG,
-                               BUS_POWER_PATH_PRECHG_ENA, enable);
-       if (ret) {
-               dev_err(di->dev, "%s write failed\n", __func__);
-               return ret;
-       }
-
-       return ret;
-}
-
 static int ab8500_charger_get_ext_psy_data(struct device *dev, void *data)
 {
        struct power_supply *psy;
@@ -2704,23 +2638,15 @@ static void ab8500_charger_vbus_drop_end_work(struct work_struct *work)
        abx500_set_register_interruptible(di->dev,
                                  AB8500_CHARGER, AB8500_CHARGER_CTRL, 0x01);
 
-       if (is_ab8540(di->parent))
-               ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER,
-                               AB8540_CH_USBCH_STAT3_REG, &reg_value);
-       else
-               ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER,
-                               AB8500_CH_USBCH_STAT2_REG, &reg_value);
+       ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER,
+                       AB8500_CH_USBCH_STAT2_REG, &reg_value);
        if (ret < 0) {
                dev_err(di->dev, "%s read failed\n", __func__);
                return;
        }
 
-       if (is_ab8540(di->parent))
-               curr = di->bm->chg_input_curr[
-                       reg_value & AB8540_AUTO_VBUS_IN_CURR_MASK];
-       else
-               curr = di->bm->chg_input_curr[
-                       reg_value >> AUTO_VBUS_IN_CURR_LIM_SHIFT];
+       curr = di->bm->chg_input_curr[
+               reg_value >> AUTO_VBUS_IN_CURR_LIM_SHIFT];
 
        if (di->max_usb_in_curr.calculated_max != curr) {
                /* USB source is collapsing */
@@ -3097,14 +3023,9 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
                        goto out;
                }
 
-               if (is_ab8540(di->parent))
-                       ret = abx500_set_register_interruptible(di->dev,
-                               AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG,
-                               CH_OP_CUR_LVL_2P);
-               else
-                       ret = abx500_set_register_interruptible(di->dev,
-                               AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG,
-                               CH_OP_CUR_LVL_1P6);
+               ret = abx500_set_register_interruptible(di->dev,
+                       AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG,
+                       CH_OP_CUR_LVL_1P6);
                if (ret) {
                        dev_err(di->dev,
                                "failed to set CH_OPT_CRNTLVL_MAX_REG\n");
@@ -3112,8 +3033,7 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
                }
        }
 
-       if (is_ab9540_2p0(di->parent) || is_ab9540_3p0(di->parent)
-        || is_ab8505_2p0(di->parent) || is_ab8540(di->parent))
+       if (is_ab8505_2p0(di->parent))
                ret = abx500_mask_and_set_register_interruptible(di->dev,
                        AB8500_CHARGER,
                        AB8500_USBCH_CTRL2_REG,
@@ -3205,17 +3125,6 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
                dev_err(di->dev, "failed to setup backup battery charging\n");
                goto out;
        }
-       if (is_ab8540(di->parent)) {
-               ret = abx500_set_register_interruptible(di->dev,
-                       AB8500_RTC,
-                       AB8500_RTC_CTRL1_REG,
-                       bup_vch_range | vbup33_vrtcn);
-               if (ret) {
-                       dev_err(di->dev,
-                               "failed to setup backup battery charging\n");
-                       goto out;
-               }
-       }
 
        /* Enable backup battery charging */
        ret = abx500_mask_and_set_register_interruptible(di->dev,
@@ -3226,25 +3135,6 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
                goto out;
        }
 
-       if (is_ab8540(di->parent)) {
-               ret = abx500_mask_and_set_register_interruptible(di->dev,
-                       AB8500_CHARGER, AB8540_USB_PP_MODE_REG,
-                       BUS_VSYS_VOL_SELECT_MASK, BUS_VSYS_VOL_SELECT_3P6V);
-               if (ret) {
-                       dev_err(di->dev,
-                               "failed to setup usb power path vsys voltage\n");
-                       goto out;
-               }
-               ret = abx500_mask_and_set_register_interruptible(di->dev,
-                       AB8500_CHARGER, AB8540_USB_PP_CHR_REG,
-                       BUS_PP_PRECHG_CURRENT_MASK, 0);
-               if (ret) {
-                       dev_err(di->dev,
-                               "failed to setup usb power path precharge current\n");
-                       goto out;
-               }
-       }
-
 out:
        return ret;
 }
@@ -3529,8 +3419,6 @@ static int ab8500_charger_probe(struct platform_device *pdev)
        di->usb_chg.ops.check_enable = &ab8500_charger_usb_check_enable;
        di->usb_chg.ops.kick_wd = &ab8500_charger_watchdog_kick;
        di->usb_chg.ops.update_curr = &ab8500_charger_update_charger_current;
-       di->usb_chg.ops.pp_enable = &ab8540_charger_power_path_enable;
-       di->usb_chg.ops.pre_chg_enable = &ab8540_charger_usb_pre_chg_enable;
        di->usb_chg.max_out_volt = ab8500_charger_voltage_map[
                ARRAY_SIZE(ab8500_charger_voltage_map) - 1];
        di->usb_chg.max_out_curr =
@@ -3538,7 +3426,6 @@ static int ab8500_charger_probe(struct platform_device *pdev)
        di->usb_chg.wdt_refresh = CHG_WD_INTERVAL;
        di->usb_chg.enabled = di->bm->usb_enabled;
        di->usb_chg.external = false;
-       di->usb_chg.power_path = di->bm->usb_power_path;
        di->usb_state.usb_current = -1;
 
        /* Create a work queue for the charger */
index 993898d1712f320ee85237c1cd9f008051d4ccab..d9c6c7bedd85968355b4fda5216649657e314266 100644 (file)
@@ -2326,9 +2326,7 @@ static int ab8500_fg_init_hw_registers(struct ab8500_fg *di)
                goto out;
        }
 
-       if (((is_ab8505(di->parent) || is_ab9540(di->parent)) &&
-                       abx500_get_chip_id(di->dev) >= AB8500_CUT2P0)
-                       || is_ab8540(di->parent)) {
+       if (is_ab8505(di->parent)) {
                ret = abx500_set_register_interruptible(di->dev, AB8500_RTC,
                        AB8505_RTC_PCUT_MAX_TIME_REG, di->bm->fg_params->pcut_max_time);
 
@@ -2915,9 +2913,7 @@ static int ab8500_fg_sysfs_psy_create_attrs(struct ab8500_fg *di)
 {
        unsigned int i;
 
-       if (((is_ab8505(di->parent) || is_ab9540(di->parent)) &&
-            abx500_get_chip_id(di->dev) >= AB8500_CUT2P0)
-           || is_ab8540(di->parent)) {
+       if (is_ab8505(di->parent)) {
                for (i = 0; i < ARRAY_SIZE(ab8505_fg_sysfs_psy_attrs); i++)
                        if (device_create_file(&di->fg_psy->dev,
                                               &ab8505_fg_sysfs_psy_attrs[i]))
@@ -2937,9 +2933,7 @@ static void ab8500_fg_sysfs_psy_remove_attrs(struct ab8500_fg *di)
 {
        unsigned int i;
 
-       if (((is_ab8505(di->parent) || is_ab9540(di->parent)) &&
-            abx500_get_chip_id(di->dev) >= AB8500_CUT2P0)
-           || is_ab8540(di->parent)) {
+       if (is_ab8505(di->parent)) {
                for (i = 0; i < ARRAY_SIZE(ab8505_fg_sysfs_psy_attrs); i++)
                        (void)device_remove_file(&di->fg_psy->dev,
                                                 &ab8505_fg_sysfs_psy_attrs[i]);
index a4411d6bbc962c21c394c7f3e702c34e4e04d9c2..947709cdd14e7522c9d9d47f9ad6eba601e33968 100644 (file)
@@ -44,9 +44,6 @@
 /* Five minutes expressed in seconds */
 #define FIVE_MINUTES_IN_SECONDS        300
 
-/* Plus margin for the low battery threshold */
-#define BAT_PLUS_MARGIN                (100)
-
 #define CHARGALG_CURR_STEP_LOW         0
 #define CHARGALG_CURR_STEP_HIGH        100
 
@@ -101,7 +98,6 @@ enum abx500_chargalg_states {
        STATE_HW_TEMP_PROTECT_INIT,
        STATE_HW_TEMP_PROTECT,
        STATE_NORMAL_INIT,
-       STATE_USB_PP_PRE_CHARGE,
        STATE_NORMAL,
        STATE_WAIT_FOR_RECHARGE_INIT,
        STATE_WAIT_FOR_RECHARGE,
@@ -133,7 +129,6 @@ static const char *states[] = {
        "HW_TEMP_PROTECT_INIT",
        "HW_TEMP_PROTECT",
        "NORMAL_INIT",
-       "USB_PP_PRE_CHARGE",
        "NORMAL",
        "WAIT_FOR_RECHARGE_INIT",
        "WAIT_FOR_RECHARGE",
@@ -603,37 +598,6 @@ static int abx500_chargalg_usb_en(struct abx500_chargalg *di, int enable,
        return di->usb_chg->ops.enable(di->usb_chg, enable, vset, iset);
 }
 
- /**
- * ab8540_chargalg_usb_pp_en() - Enable/ disable USB power path
- * @di:                pointer to the abx500_chargalg structure
- * @enable:    power path enable/disable
- *
- * The USB power path will be enable/ disable
- */
-static int ab8540_chargalg_usb_pp_en(struct abx500_chargalg *di, bool enable)
-{
-       if (!di->usb_chg || !di->usb_chg->ops.pp_enable)
-               return -ENXIO;
-
-       return di->usb_chg->ops.pp_enable(di->usb_chg, enable);
-}
-
-/**
- * ab8540_chargalg_usb_pre_chg_en() - Enable/ disable USB pre-charge
- * @di:                pointer to the abx500_chargalg structure
- * @enable:    USB pre-charge enable/disable
- *
- * The USB USB pre-charge will be enable/ disable
- */
-static int ab8540_chargalg_usb_pre_chg_en(struct abx500_chargalg *di,
-                                         bool enable)
-{
-       if (!di->usb_chg || !di->usb_chg->ops.pre_chg_enable)
-               return -ENXIO;
-
-       return di->usb_chg->ops.pre_chg_enable(di->usb_chg, enable);
-}
-
 /**
  * abx500_chargalg_update_chg_curr() - Update charger current
  * @di:                pointer to the abx500_chargalg structure
@@ -833,9 +797,6 @@ static void abx500_chargalg_end_of_charge(struct abx500_chargalg *di)
                di->batt_data.avg_curr > 0) {
                if (++di->eoc_cnt >= EOC_COND_CNT) {
                        di->eoc_cnt = 0;
-                       if ((di->chg_info.charger_type & USB_CHG) &&
-                          (di->usb_chg->power_path))
-                               ab8540_chargalg_usb_pp_en(di, true);
                        di->charge_status = POWER_SUPPLY_STATUS_FULL;
                        di->maintenance_chg = true;
                        dev_dbg(di->dev, "EOC reached!\n");
@@ -1536,22 +1497,6 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
                break;
 
        case STATE_NORMAL_INIT:
-               if ((di->chg_info.charger_type & USB_CHG) &&
-                               di->usb_chg->power_path) {
-                       if (di->batt_data.volt >
-                           (di->bm->fg_params->lowbat_threshold +
-                            BAT_PLUS_MARGIN)) {
-                               ab8540_chargalg_usb_pre_chg_en(di, false);
-                               ab8540_chargalg_usb_pp_en(di, false);
-                       } else {
-                               ab8540_chargalg_usb_pp_en(di, true);
-                               ab8540_chargalg_usb_pre_chg_en(di, true);
-                               abx500_chargalg_state_to(di,
-                                       STATE_USB_PP_PRE_CHARGE);
-                               break;
-                       }
-               }
-
                if (di->curr_status.curr_step == CHARGALG_CURR_STEP_LOW)
                        abx500_chargalg_stop_charging(di);
                else {
@@ -1575,13 +1520,6 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
 
                break;
 
-       case STATE_USB_PP_PRE_CHARGE:
-               if (di->batt_data.volt >
-                       (di->bm->fg_params->lowbat_threshold +
-                       BAT_PLUS_MARGIN))
-                       abx500_chargalg_state_to(di, STATE_NORMAL_INIT);
-               break;
-
        case STATE_NORMAL:
                handle_maxim_chg_curr(di);
                if (di->charge_status == POWER_SUPPLY_STATUS_FULL &&
index 44412c9d26e11a350a3ee35b3c48aa073ecbc773..aa09414756db1d1314f5ebc7d496cfdf6192ecf0 100644 (file)
@@ -271,7 +271,6 @@ struct abx500_bm_data {
        bool autopower_cfg;
        bool ac_enabled;
        bool usb_enabled;
-       bool usb_power_path;
        bool no_maintenance;
        bool capacity_scaling;
        bool chg_unknown_bat;
index e63681eb6c62d6da3f56e872a350add2574e050a..c06daf3d490a6612fb5418c847f4e1153d9709c7 100644 (file)
@@ -248,8 +248,6 @@ enum bup_vch_sel {
 #define BAT_CTRL_20U_ENA               0x02
 #define BAT_CTRL_18U_ENA               0x01
 #define BAT_CTRL_16U_ENA               0x02
-#define BAT_CTRL_60U_ENA               0x01
-#define BAT_CTRL_120U_ENA              0x02
 #define BAT_CTRL_CMP_ENA               0x04
 #define FORCE_BAT_CTRL_CMP_HIGH                0x08
 #define BAT_CTRL_PULL_UP_ENA           0x10
index 67703f23e7ba2729c307899126422145055d665e..669894f434f5b8f489a24b2a9a3bc3dee634ad6e 100644 (file)
@@ -25,8 +25,6 @@ struct ux500_charger_ops {
        int (*check_enable) (struct ux500_charger *, int, int);
        int (*kick_wd) (struct ux500_charger *);
        int (*update_curr) (struct ux500_charger *, int);
-       int (*pp_enable) (struct ux500_charger *, bool);
-       int (*pre_chg_enable) (struct ux500_charger *, bool);
 };
 
 /**
@@ -37,7 +35,6 @@ struct ux500_charger_ops {
  * @max_out_curr       maximum output charger current in mA
  * @enabled            indicates if this charger is used or not
  * @external           external charger unit (pm2xxx)
- * @power_path         USB power path support
  */
 struct ux500_charger {
        struct power_supply *psy;
@@ -47,7 +44,6 @@ struct ux500_charger {
        int wdt_refresh;
        bool enabled;
        bool external;
-       bool power_path;
 };
 
 extern struct blocking_notifier_head charger_notifier_list;