aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Pan <jacob.jun.pan@linux.intel.com>2015-04-06 14:38:20 -0400
committerJonathan Cameron <jic23@kernel.org>2015-04-09 13:49:13 -0400
commitd0716b0ea4ce11a13477163c14b26e180922ba51 (patch)
treecdd9f9b03e326974d53b6a27615ec056f1846f9c
parentabad398337f038f5822e53c55eff5b0820ef7efe (diff)
iio/axp288_adc: add missing channel info mask
Commit 65de7654d39c70c2b ("iio: iio: Fix iio_channel_read return if channel havn't info") added a check for valid info masks. This patch adds missing channel info masks for all ADC channels. Otherwise, iio_read_channel_raw() would return -EINVAL when called by consumer drivers. Note that the change of _processed to _raw actually fixes an ABI abuse in the original driver where it was used to avoid some special handling rather than because it was correct. Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r--drivers/iio/adc/axp288_adc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/iio/adc/axp288_adc.c b/drivers/iio/adc/axp288_adc.c
index 08bcfb061ca5..56008a86b78f 100644
--- a/drivers/iio/adc/axp288_adc.c
+++ b/drivers/iio/adc/axp288_adc.c
@@ -53,39 +53,42 @@ static const struct iio_chan_spec const axp288_adc_channels[] = {
53 .channel = 0, 53 .channel = 0,
54 .address = AXP288_TS_ADC_H, 54 .address = AXP288_TS_ADC_H,
55 .datasheet_name = "TS_PIN", 55 .datasheet_name = "TS_PIN",
56 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
56 }, { 57 }, {
57 .indexed = 1, 58 .indexed = 1,
58 .type = IIO_TEMP, 59 .type = IIO_TEMP,
59 .channel = 1, 60 .channel = 1,
60 .address = AXP288_PMIC_ADC_H, 61 .address = AXP288_PMIC_ADC_H,
61 .datasheet_name = "PMIC_TEMP", 62 .datasheet_name = "PMIC_TEMP",
63 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
62 }, { 64 }, {
63 .indexed = 1, 65 .indexed = 1,
64 .type = IIO_TEMP, 66 .type = IIO_TEMP,
65 .channel = 2, 67 .channel = 2,
66 .address = AXP288_GP_ADC_H, 68 .address = AXP288_GP_ADC_H,
67 .datasheet_name = "GPADC", 69 .datasheet_name = "GPADC",
70 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
68 }, { 71 }, {
69 .indexed = 1, 72 .indexed = 1,
70 .type = IIO_CURRENT, 73 .type = IIO_CURRENT,
71 .channel = 3, 74 .channel = 3,
72 .address = AXP20X_BATT_CHRG_I_H, 75 .address = AXP20X_BATT_CHRG_I_H,
73 .datasheet_name = "BATT_CHG_I", 76 .datasheet_name = "BATT_CHG_I",
74 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), 77 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
75 }, { 78 }, {
76 .indexed = 1, 79 .indexed = 1,
77 .type = IIO_CURRENT, 80 .type = IIO_CURRENT,
78 .channel = 4, 81 .channel = 4,
79 .address = AXP20X_BATT_DISCHRG_I_H, 82 .address = AXP20X_BATT_DISCHRG_I_H,
80 .datasheet_name = "BATT_DISCHRG_I", 83 .datasheet_name = "BATT_DISCHRG_I",
81 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), 84 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
82 }, { 85 }, {
83 .indexed = 1, 86 .indexed = 1,
84 .type = IIO_VOLTAGE, 87 .type = IIO_VOLTAGE,
85 .channel = 5, 88 .channel = 5,
86 .address = AXP20X_BATT_V_H, 89 .address = AXP20X_BATT_V_H,
87 .datasheet_name = "BATT_V", 90 .datasheet_name = "BATT_V",
88 .info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED), 91 .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
89 }, 92 },
90}; 93};
91 94
@@ -151,9 +154,6 @@ static int axp288_adc_read_raw(struct iio_dev *indio_dev,
151 chan->address)) 154 chan->address))
152 dev_err(&indio_dev->dev, "TS pin restore\n"); 155 dev_err(&indio_dev->dev, "TS pin restore\n");
153 break; 156 break;
154 case IIO_CHAN_INFO_PROCESSED:
155 ret = axp288_adc_read_channel(val, chan->address, info->regmap);
156 break;
157 default: 157 default:
158 ret = -EINVAL; 158 ret = -EINVAL;
159 } 159 }