From f9383d55837549e405479abbd7457b07b24b083b Mon Sep 17 00:00:00 2001 From: Siddartha Mohanadoss Date: Thu, 19 Apr 2012 09:42:49 -0700 Subject: [PATCH] hwmon: pm8xxx-adc: Add BATT_ID_THERM configuration PM8018 ADC arbiter uses a single AMUX8 channel to read either battery id or battery tempertaure. On existing platforms these pins are grounded. Add default configuration to read battery ID. If clients need to read the battery temperature instead, follow the instructions in the comments for the ADC channel listing. Clients would need to update the scaling function in the channel configuration to use the appropriate battery thermistor scaling function. CRs-Fixed: 350907 Change-Id: Ia3a8054c9be1e90d2076fd583ef8480353b78c6d Signed-off-by: Siddartha Mohanadoss --- arch/arm/mach-msm/board-9615.c | 14 ++++++++++---- include/linux/mfd/pm8xxx/pm8xxx-adc.h | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-msm/board-9615.c b/arch/arm/mach-msm/board-9615.c index 6c6a5c27136..53cec385342 100644 --- a/arch/arm/mach-msm/board-9615.c +++ b/arch/arm/mach-msm/board-9615.c @@ -132,10 +132,16 @@ static struct pm8xxx_adc_amux pm8018_adc_channels_data[] = { ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT}, {"vph_pwr", CHANNEL_VPH_PWR, CHAN_PATH_SCALING2, AMUX_RSV1, ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT}, - {"batt_therm", CHANNEL_BATT_THERM, CHAN_PATH_SCALING1, AMUX_RSV2, - ADC_DECIMATION_TYPE2, ADC_SCALE_BATT_THERM}, - {"batt_id", CHANNEL_BATT_ID, CHAN_PATH_SCALING1, AMUX_RSV2, - ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT}, + /* AMUX8 is used to read either Batt_id/Batt_therm. + * Current configuration is to support Batt_id. If clients + * want to read the Batt_therm, the scaling function needs to be + * updated to use ADC_SCALE_BATT_THERM instead of ADC_SCALE_DEFAULT. + * E.g. + * {"batt_therm", CHANNEL_BATT_ID_THERM, CHAN_PATH_SCALING1, + * AMUX_RSV2, ADC_DECIMATION_TYPE2, ADC_SCALE_BATT_THERM}, + */ + {"batt_id", CHANNEL_BATT_ID_THERM, CHAN_PATH_SCALING1, + AMUX_RSV2, ADC_DECIMATION_TYPE2, ADC_SCALE_DEFAULT}, {"pmic_therm", CHANNEL_DIE_TEMP, CHAN_PATH_SCALING1, AMUX_RSV1, ADC_DECIMATION_TYPE2, ADC_SCALE_PMIC_THERM}, {"625mv", CHANNEL_625MV, CHAN_PATH_SCALING1, AMUX_RSV1, diff --git a/include/linux/mfd/pm8xxx/pm8xxx-adc.h b/include/linux/mfd/pm8xxx/pm8xxx-adc.h index d2b1cfcaff5..84f8e03899e 100644 --- a/include/linux/mfd/pm8xxx/pm8xxx-adc.h +++ b/include/linux/mfd/pm8xxx/pm8xxx-adc.h @@ -51,6 +51,10 @@ enum pm8xxx_adc_channels { CHANNEL_MPP_1, CHANNEL_MPP_2, CHANNEL_BATT_THERM, + /* PM8018 ADC Arbiter uses a single channel on AMUX8 + * to read either Batt_id or Batt_therm. + */ + CHANNEL_BATT_ID_THERM = CHANNEL_BATT_THERM, CHANNEL_BATT_ID, CHANNEL_USBIN, CHANNEL_DIE_TEMP,