Skip to content

Commit 8bb532e

Browse files
committed
drivers: adc: sam0: fix compliation for feature SAMs for C21.
C21 doesn't have ADC_REFCTRL_REFSEL_AREFB and have different APBs. Signed-off-by: Kamil Serwus <[email protected]>
1 parent 6cc8f31 commit 8bb532e

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

drivers/adc/adc_sam0.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,11 @@ static int adc_sam0_channel_setup(const struct device *dev,
152152
case ADC_REF_EXTERNAL0:
153153
refctrl = ADC_REFCTRL_REFSEL_AREFA;
154154
break;
155+
#ifdef ADC_REFCTRL_REFSEL_AREFB
155156
case ADC_REF_EXTERNAL1:
156157
refctrl = ADC_REFCTRL_REFSEL_AREFB;
157158
break;
159+
#endif
158160
default:
159161
LOG_ERR("Selected reference is not valid");
160162
return -EINVAL;
@@ -449,7 +451,7 @@ static int adc_sam0_init(const struct device *dev)
449451
#ifdef MCLK
450452
GCLK->PCHCTRL[cfg->gclk_id].reg = cfg->gclk_mask | GCLK_PCHCTRL_CHEN;
451453

452-
MCLK->APBDMASK.reg |= cfg->mclk_mask;
454+
MCLK_ADC |= cfg->mclk_mask;
453455
#else
454456
PM->APBCMASK.bit.ADC_ = 1;
455457

soc/arm/atmel_sam0/common/adc_fixup_sam0.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,19 @@
104104
#else
105105
# define ADC_SAM0_BIASREFBUF(n) 0
106106
#endif
107+
108+
/*
109+
* The following MCLK clock configuration fix-up symbols map to the applicable
110+
* APB-specific symbols, in order to accommodate different SoC series with the
111+
* ADC core connected to different APBs.
112+
*/
113+
#if defined(MCLK_APBDMASK_ADC) || defined(MCLK_APBDMASK_ADC0)
114+
# define MCLK_ADC (MCLK->APBDMASK.reg)
115+
#elif defined(MCLK_APBCMASK_ADC0)
116+
# define MCLK_ADC (MCLK->APBCMASK.reg)
117+
#else
118+
# error ADC not supported...
119+
#endif
107120
#endif /* MCLK */
108121

109122
/*

0 commit comments

Comments
 (0)