aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/power/lp8788-charger.c44
-rw-r--r--include/linux/mfd/lp8788.h8
2 files changed, 10 insertions, 42 deletions
diff --git a/drivers/power/lp8788-charger.c b/drivers/power/lp8788-charger.c
index 1afa5f7a5359..fb592bfbec6e 100644
--- a/drivers/power/lp8788-charger.c
+++ b/drivers/power/lp8788-charger.c
@@ -584,50 +584,18 @@ static void lp8788_setup_adc_channel(const char *consumer_name,
584 struct lp8788_charger *pchg) 584 struct lp8788_charger *pchg)
585{ 585{
586 struct lp8788_charger_platform_data *pdata = pchg->pdata; 586 struct lp8788_charger_platform_data *pdata = pchg->pdata;
587 struct device *dev = pchg->lp->dev;
588 struct iio_channel *chan; 587 struct iio_channel *chan;
589 enum lp8788_adc_id id;
590 const char *chan_name[LPADC_MAX] = {
591 [LPADC_VBATT_5P5] = "vbatt-5p5",
592 [LPADC_VBATT_6P0] = "vbatt-6p0",
593 [LPADC_VBATT_5P0] = "vbatt-5p0",
594 [LPADC_ADC1] = "adc1",
595 [LPADC_ADC2] = "adc2",
596 [LPADC_ADC3] = "adc3",
597 [LPADC_ADC4] = "adc4",
598 };
599 588
600 if (!pdata) 589 if (!pdata)
601 return; 590 return;
602 591
603 id = pdata->vbatt_adc; 592 /* ADC channel for battery voltage */
604 switch (id) { 593 chan = iio_channel_get(consumer_name, pdata->adc_vbatt);
605 case LPADC_VBATT_5P5: 594 pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan;
606 case LPADC_VBATT_6P0:
607 case LPADC_VBATT_5P0:
608 chan = iio_channel_get(consumer_name, chan_name[id]);
609 pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan;
610 break;
611 default:
612 dev_err(dev, "invalid ADC id for VBATT: %d\n", id);
613 pchg->chan[LP8788_VBATT] = NULL;
614 break;
615 }
616 595
617 id = pdata->batt_temp_adc; 596 /* ADC channel for battery temperature */
618 switch (id) { 597 chan = iio_channel_get(consumer_name, pdata->adc_batt_temp);
619 case LPADC_ADC1: 598 pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan;
620 case LPADC_ADC2:
621 case LPADC_ADC3:
622 case LPADC_ADC4:
623 chan = iio_channel_get(consumer_name, chan_name[id]);
624 pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan;
625 break;
626 default:
627 dev_err(dev, "invalid ADC id for BATT_TEMP : %d\n", id);
628 pchg->chan[LP8788_BATT_TEMP] = NULL;
629 break;
630 }
631} 599}
632 600
633static void lp8788_release_adc_channel(struct lp8788_charger *pchg) 601static void lp8788_release_adc_channel(struct lp8788_charger *pchg)
diff --git a/include/linux/mfd/lp8788.h b/include/linux/mfd/lp8788.h
index cec364bdccfa..2a32b16f79cb 100644
--- a/include/linux/mfd/lp8788.h
+++ b/include/linux/mfd/lp8788.h
@@ -211,16 +211,16 @@ struct lp8788_chg_param {
211 211
212/* 212/*
213 * struct lp8788_charger_platform_data 213 * struct lp8788_charger_platform_data
214 * @vbatt_adc : adc selection id for battery voltage 214 * @adc_vbatt : adc channel name for battery voltage
215 * @batt_temp_adc : adc selection id for battery temperature 215 * @adc_batt_temp : adc channel name for battery temperature
216 * @max_vbatt_mv : used for calculating battery capacity 216 * @max_vbatt_mv : used for calculating battery capacity
217 * @chg_params : initial charging parameters 217 * @chg_params : initial charging parameters
218 * @num_chg_params : numbers of charging parameters 218 * @num_chg_params : numbers of charging parameters
219 * @charger_event : the charger event can be reported to the platform side 219 * @charger_event : the charger event can be reported to the platform side
220 */ 220 */
221struct lp8788_charger_platform_data { 221struct lp8788_charger_platform_data {
222 enum lp8788_adc_id vbatt_adc; 222 const char *adc_vbatt;
223 enum lp8788_adc_id batt_temp_adc; 223 const char *adc_batt_temp;
224 unsigned int max_vbatt_mv; 224 unsigned int max_vbatt_mv;
225 struct lp8788_chg_param *chg_params; 225 struct lp8788_chg_param *chg_params;
226 int num_chg_params; 226 int num_chg_params;