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: Krzysztof Kozlowski <krzk@kernel.org> Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
66d388ff4a
commit
103cda6a3b
|
@ -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 @@
|
||||||
#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,
|
||||||
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[] = {
|
||||||
}, {
|
}, {
|
||||||
.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,
|
||||||
|
|
Loading…
Reference in New Issue