Commit 103cda6a authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Jonathan Cameron

iio: adc: exynos-adc: Use proper number of channels for Exynos4x12

Exynos4212 and Exynos4412 have only four ADC channels so using
"samsung,exynos-adc-v1" compatible (for eight channels ADCv1) on them is
wrong.  Add a new compatible for Exynos4x12.
Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 66d388ff
...@@ -11,11 +11,13 @@ New driver handles the following ...@@ -11,11 +11,13 @@ New driver handles the following
Required properties: Required properties:
- compatible: Must be "samsung,exynos-adc-v1" - compatible: Must be "samsung,exynos-adc-v1"
for exynos4412/5250 controllers. for Exynos5250 controllers.
Must be "samsung,exynos-adc-v2" for Must be "samsung,exynos-adc-v2" for
future controllers. future controllers.
Must be "samsung,exynos3250-adc" for Must be "samsung,exynos3250-adc" for
controllers compatible with ADC of Exynos3250. controllers compatible with ADC of Exynos3250.
Must be "samsung,exynos4212-adc" for
controllers compatible with ADC of Exynos4212 and Exynos4412.
Must be "samsung,exynos7-adc" for Must be "samsung,exynos7-adc" for
the ADC in Exynos7 and compatibles the ADC in Exynos7 and compatibles
Must be "samsung,s3c2410-adc" for Must be "samsung,s3c2410-adc" for
......
...@@ -115,6 +115,7 @@ ...@@ -115,6 +115,7 @@
#define MAX_ADC_V2_CHANNELS 10 #define MAX_ADC_V2_CHANNELS 10
#define MAX_ADC_V1_CHANNELS 8 #define MAX_ADC_V1_CHANNELS 8
#define MAX_EXYNOS3250_ADC_CHANNELS 2 #define MAX_EXYNOS3250_ADC_CHANNELS 2
#define MAX_EXYNOS4212_ADC_CHANNELS 4
#define MAX_S5PV210_ADC_CHANNELS 10 #define MAX_S5PV210_ADC_CHANNELS 10
/* Bit definitions common for ADC_V1 and ADC_V2 */ /* Bit definitions common for ADC_V1 and ADC_V2 */
...@@ -271,6 +272,19 @@ static void exynos_adc_v1_start_conv(struct exynos_adc *info, ...@@ -271,6 +272,19 @@ static void exynos_adc_v1_start_conv(struct exynos_adc *info,
writel(con1 | ADC_CON_EN_START, ADC_V1_CON(info->regs)); writel(con1 | ADC_CON_EN_START, ADC_V1_CON(info->regs));
} }
/* Exynos4212 and 4412 is like ADCv1 but with four channels only */
static const struct exynos_adc_data exynos4212_adc_data = {
.num_channels = MAX_EXYNOS4212_ADC_CHANNELS,
.mask = ADC_DATX_MASK, /* 12 bit ADC resolution */
.needs_adc_phy = true,
.phy_offset = EXYNOS_ADCV1_PHY_OFFSET,
.init_hw = exynos_adc_v1_init_hw,
.exit_hw = exynos_adc_v1_exit_hw,
.clear_irq = exynos_adc_v1_clear_irq,
.start_conv = exynos_adc_v1_start_conv,
};
static const struct exynos_adc_data exynos_adc_v1_data = { static const struct exynos_adc_data exynos_adc_v1_data = {
.num_channels = MAX_ADC_V1_CHANNELS, .num_channels = MAX_ADC_V1_CHANNELS,
.mask = ADC_DATX_MASK, /* 12 bit ADC resolution */ .mask = ADC_DATX_MASK, /* 12 bit ADC resolution */
...@@ -492,6 +506,9 @@ static const struct of_device_id exynos_adc_match[] = { ...@@ -492,6 +506,9 @@ static const struct of_device_id exynos_adc_match[] = {
}, { }, {
.compatible = "samsung,s5pv210-adc", .compatible = "samsung,s5pv210-adc",
.data = &exynos_adc_s5pv210_data, .data = &exynos_adc_s5pv210_data,
}, {
.compatible = "samsung,exynos4212-adc",
.data = &exynos4212_adc_data,
}, { }, {
.compatible = "samsung,exynos-adc-v1", .compatible = "samsung,exynos-adc-v1",
.data = &exynos_adc_v1_data, .data = &exynos_adc_v1_data,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment