From d4e5bea0a3859991c38d33154945e6c0ca5c7cbf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joakim=20Nohlg=C3=A5rd?= <joakim.nohlgard@eistec.se>
Date: Fri, 23 Feb 2018 08:40:04 +0100
Subject: [PATCH] efm32: Use different values for each unsupported ADC res

---
 cpu/efm32/include/periph_cpu.h | 10 +++++-----
 cpu/efm32/periph/adc.c         |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/cpu/efm32/include/periph_cpu.h b/cpu/efm32/include/periph_cpu.h
index e0c5fbfb97..f131e67fe7 100644
--- a/cpu/efm32/include/periph_cpu.h
+++ b/cpu/efm32/include/periph_cpu.h
@@ -56,7 +56,7 @@ extern "C" {
 /**
  * @brief   Internal define to note that resolution is not supported.
  */
-#define ADC_MODE_UNDEF      (0xff)
+#define ADC_MODE_UNDEF(x)   (ADC_MODE(x, 15))
 
 #ifndef DOXYGEN
 /**
@@ -65,12 +65,12 @@ extern "C" {
  */
 #define HAVE_ADC_RES_T
 typedef enum {
-    ADC_RES_6BIT = ADC_MODE(adcRes6Bit, 0),     /**< ADC resolution: 6 bit */
-    ADC_RES_8BIT = ADC_MODE(adcRes8Bit, 0),     /**< ADC resolution: 8 bit */
+    ADC_RES_6BIT  = ADC_MODE(adcRes6Bit, 0),    /**< ADC resolution: 6 bit */
+    ADC_RES_8BIT  = ADC_MODE(adcRes8Bit, 0),    /**< ADC resolution: 8 bit */
     ADC_RES_10BIT = ADC_MODE(adcRes12Bit, 2),   /**< ADC resolution: 10 bit (shifted from 12 bit) */
     ADC_RES_12BIT = ADC_MODE(adcRes12Bit, 0),   /**< ADC resolution: 12 bit */
-    ADC_RES_14BIT = ADC_MODE_UNDEF,             /**< ADC resolution: 14 bit (unsupported) */
-    ADC_RES_16BIT = ADC_MODE_UNDEF,             /**< ADC resolution: 16 bit (unsupported) */
+    ADC_RES_14BIT = ADC_MODE_UNDEF(0),          /**< ADC resolution: 14 bit (unsupported) */
+    ADC_RES_16BIT = ADC_MODE_UNDEF(1),          /**< ADC resolution: 16 bit (unsupported) */
 } adc_res_t;
 /** @} */
 #endif /* ndef DOXYGEN */
diff --git a/cpu/efm32/periph/adc.c b/cpu/efm32/periph/adc.c
index a015ab08b6..01b2e52429 100644
--- a/cpu/efm32/periph/adc.c
+++ b/cpu/efm32/periph/adc.c
@@ -62,7 +62,7 @@ int adc_init(adc_t line)
 int adc_sample(adc_t line, adc_res_t res)
 {
     /* resolutions larger than 12 bits are not supported */
-    if (res == ADC_MODE_UNDEF) {
+    if (res >= ADC_MODE_UNDEF(0)) {
         return -1;
     }
 
-- 
GitLab