[11U68]fix P0_11 to use GPIO

Fork of mbed-src by mbed official

Revision:
543:9dba91c44009
Parent:
525:c320967f86b9
Child:
548:1abac31e188e
--- a/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/analogout_api.c	Tue May 19 08:00:08 2015 +0100
+++ b/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/analogout_api.c	Wed May 20 08:45:07 2015 +0100
@@ -23,6 +23,7 @@
 #include "pinmap.h"
 #include "pinmap_function.h"
 #include "PeripheralPins.h"
+#include "clocking.h"
 
 #include "em_dac.h"
 #include "em_cmu.h"
@@ -42,30 +43,34 @@
 }
 
 void analogout_init(dac_t *obj, PinName pin) {
-    static uint8_t initialized = 0;
+    static uint8_t dac_initialized = 0;
 
-    if (!initialized) {
+    /* init in-memory structure */
+    analogout_preinit(obj, pin);
+    
+    if (!dac_initialized) {
         /* Initialize the DAC. Will disable both DAC channels, so should only be done once */
         /* Use default settings */
+        CMU_ClockEnable(cmuClock_DAC0, true);
+        
         DAC_Init_TypeDef init = DAC_INIT_DEFAULT;
 
         /* Calculate the DAC clock prescaler value that will result in a DAC clock
          * close to 500kHz. Second parameter is zero. This uses the current HFPERCLK
          * frequency instead of setting a new one. */
-        init.prescale = DAC_PrescaleCalc(500000, 0);
+        init.prescale = DAC_PrescaleCalc(500000, REFERENCE_FREQUENCY);
 
         /* Set reference voltage to VDD */
         init.reference = dacRefVDD;
 
         DAC_Init(obj->dac, &init);
-        initialized = 1;
+        dac_initialized = 1;
     }
     /* Use default channel settings */
     DAC_InitChannel_TypeDef initChannel = DAC_INITCHANNEL_DEFAULT;
     DAC_InitChannel(obj->dac, &initChannel, obj->channel);
 
-    /* init pins */
-    analogout_preinit(obj, pin);
+
 }
 
 void analogout_enable(dac_t *obj, uint8_t enable)