mbed library sources modified for open wear

Dependents:   openwear-lifelogger-example

Fork of mbed-src by mbed official

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Tue Jul 29 18:45:06 2014 +0100
Parent:
266:69e8a32876bd
Child:
268:402bcc0c870b
Commit message:
Synchronized with git revision 1d586e1f8df5e4ff9eb4b8420095fd3f74426163

Full URL: https://github.com/mbedmicro/mbed/commit/1d586e1f8df5e4ff9eb4b8420095fd3f74426163/

Had duplicate set of api drivers in the directory - deleted

Changed in this revision

targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PeripheralNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PortNames.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PinNames.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_irq_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/i2c_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/port_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pwmout_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/rtc_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/serial_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/spi_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogin_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogout_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/device.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_irq_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_object.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/i2c_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/objects.h Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pinmap.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/port_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pwmout_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/rtc_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/sleep.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/spi_api.c Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/us_ticker.c Show diff for this revision Revisions of this file
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PeripheralNames.h	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef MBED_PERIPHERALNAMES_H
-#define MBED_PERIPHERALNAMES_H
-
-#include "cmsis.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    OSC32KCLK = 0,
-} RTCName;
-
-typedef enum {
-    UART_0 = 0,
-    UART_1 = 1,
-    UART_2 = 2,
-    UART_3 = 3,
-    UART_4 = 4,
-} UARTName;
-
-#define STDIO_UART_TX     USBTX
-#define STDIO_UART_RX     USBRX
-#define STDIO_UART        UART_0
-
-typedef enum {
-    I2C_0 = 0,
-    I2C_1 = 1,
-    I2C_2 = 2,
-} I2CName;
-
-#define TPM_SHIFT   8
-typedef enum {
-    PWM_1  = (0 << TPM_SHIFT) | (0),  // FTM0 CH0
-    PWM_2  = (0 << TPM_SHIFT) | (1),  // FTM0 CH1
-    PWM_3  = (0 << TPM_SHIFT) | (2),  // FTM0 CH2
-    PWM_4  = (0 << TPM_SHIFT) | (3),  // FTM0 CH3
-    PWM_5  = (0 << TPM_SHIFT) | (4),  // FTM0 CH4
-    PWM_6  = (0 << TPM_SHIFT) | (5),  // FTM0 CH5
-    PWM_7  = (0 << TPM_SHIFT) | (6),  // FTM0 CH6
-    PWM_8  = (0 << TPM_SHIFT) | (7),  // FTM0 CH7
-    PWM_9  = (1 << TPM_SHIFT) | (0),  // FTM1 CH0
-    PWM_10 = (1 << TPM_SHIFT) | (1),  // FTM1 CH1
-    PWM_11 = (1 << TPM_SHIFT) | (2),  // FTM1 CH2
-    PWM_12 = (1 << TPM_SHIFT) | (3),  // FTM1 CH3
-    PWM_13 = (1 << TPM_SHIFT) | (4),  // FTM1 CH4
-    PWM_14 = (1 << TPM_SHIFT) | (5),  // FTM1 CH5
-    PWM_15 = (1 << TPM_SHIFT) | (6),  // FTM1 CH6
-    PWM_16 = (1 << TPM_SHIFT) | (7),  // FTM1 CH7
-    PWM_17 = (2 << TPM_SHIFT) | (0),  // FTM2 CH0
-    PWM_18 = (2 << TPM_SHIFT) | (1),  // FTM2 CH1
-    PWM_19 = (2 << TPM_SHIFT) | (2),  // FTM2 CH2
-    PWM_20 = (2 << TPM_SHIFT) | (3),  // FTM2 CH3
-    PWM_21 = (2 << TPM_SHIFT) | (4),  // FTM2 CH4
-    PWM_22 = (2 << TPM_SHIFT) | (5),  // FTM2 CH5
-    PWM_23 = (2 << TPM_SHIFT) | (6),  // FTM2 CH6
-    PWM_24 = (2 << TPM_SHIFT) | (7),  // FTM2 CH7
-    // could be 4 or could be 3... not sure what register
-    //  this is for... too much abstraction
-    PWM_25 = (3 << TPM_SHIFT) | (0),  // FTM3 CH0
-    PWM_26 = (3 << TPM_SHIFT) | (1),  // FTM3 CH1
-    PWM_27 = (3 << TPM_SHIFT) | (2),  // FTM3 CH2
-    PWM_28 = (3 << TPM_SHIFT) | (3),  // FTM3 CH3
-    PWM_29 = (3 << TPM_SHIFT) | (4),  // FTM3 CH4
-    PWM_30 = (3 << TPM_SHIFT) | (5),  // FTM3 CH5
-    PWM_31 = (3 << TPM_SHIFT) | (6),  // FTM3 CH6
-    PWM_32 = (3 << TPM_SHIFT) | (7),  // FTM3 CH7
-} PWMName;
-
-#define ADC_INSTANCE_SHIFT           8
-#define ADC_B_CHANNEL_SHIFT          5
-typedef enum {
-    ADC0_SE4b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 4,
-    ADC0_SE5b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 5,
-    ADC0_SE6b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 6,
-    ADC0_SE7b = (0 << ADC_INSTANCE_SHIFT) | (1 << ADC_B_CHANNEL_SHIFT) | 7,
-    ADC0_SE8  = (0 << ADC_INSTANCE_SHIFT) | 8,
-    ADC0_SE9  = (0 << ADC_INSTANCE_SHIFT) | 9,
-    ADC0_SE12 = (0 << ADC_INSTANCE_SHIFT) | 12,
-    ADC0_SE13 = (0 << ADC_INSTANCE_SHIFT) | 13,
-    ADC0_SE14 = (0 << ADC_INSTANCE_SHIFT) | 14,
-    ADC0_SE15 = (0 << ADC_INSTANCE_SHIFT) | 15,
-    ADC0_SE16 = (0 << ADC_INSTANCE_SHIFT) | 16,
-    ADC0_SE17 = (0 << ADC_INSTANCE_SHIFT) | 17,
-    ADC0_SE18 = (0 << ADC_INSTANCE_SHIFT) | 18,
-    ADC1_SE4b = (1 << ADC_INSTANCE_SHIFT) | 4,
-    ADC1_SE5b = (1 << ADC_INSTANCE_SHIFT) | 5,
-    ADC1_SE6b = (1 << ADC_INSTANCE_SHIFT) | 6,
-    ADC1_SE7b = (1 << ADC_INSTANCE_SHIFT) | 7,
-    ADC1_SE8  = (1 << ADC_INSTANCE_SHIFT) | 8,
-    ADC1_SE9  = (1 << ADC_INSTANCE_SHIFT) | 9,
-    ADC1_SE12 = (1 << ADC_INSTANCE_SHIFT) | 12,
-    ADC1_SE13 = (1 << ADC_INSTANCE_SHIFT) | 13,
-    ADC1_SE14 = (1 << ADC_INSTANCE_SHIFT) | 14,
-    ADC1_SE15 = (1 << ADC_INSTANCE_SHIFT) | 15,
-    ADC1_SE16 = (1 << ADC_INSTANCE_SHIFT) | 16,
-    ADC1_SE17 = (1 << ADC_INSTANCE_SHIFT) | 17,
-    ADC1_SE18 = (1 << ADC_INSTANCE_SHIFT) | 18,
-} ADCName;
-
-typedef enum {
-    DAC_0 = 0
-} DACName;
-
-
-typedef enum {
-    SPI_0 = 0,
-    SPI_1 = 1,
-    SPI_2 = 2,
-} SPIName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/PortNames.h	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef MBED_PORTNAMES_H
-#define MBED_PORTNAMES_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    PortA = 0,
-    PortB = 1,
-    PortC = 2,
-    PortD = 3,
-    PortE = 4
-} PortName;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PinNames.h	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/TARGET_MTS_GAMBIT/PinNames.h	Tue Jul 29 18:45:06 2014 +0100
@@ -191,16 +191,21 @@
     PTE30 = (4 << GPIO_PORT_SHIFT | 30),
     PTE31 = (4 << GPIO_PORT_SHIFT | 31),
 
+    // #TODO all friendly names per platform
+    // led color naming
+    LED_RED = PTA0,
+    LED_GREEN = PTA1,
+    LED_BLUE = PTA2,
     // mbed original LED naming
-    //LED1 = LED_RED,
-    //LED2 = LED_GREEN,
-    //LED3 = LED_BLUE,
-    //LED4 = LED_RED,
+    LED1 = LED_RED,
+    LED2 = LED_GREEN,
+    LED3 = LED_BLUE,
+    LED4 = LED_RED,
 
     //Push buttons
     //SW2 = PTC6,
     //SW3 = PTA4,
-
+    
     // USB Pins
     USBTX = PTB17,
     USBRX = PTB16,
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogin_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -16,6 +16,8 @@
 #include "mbed_assert.h"
 #include "analogin_api.h"
 
+#if DEVICE_ANALOGIN
+
 #include "cmsis.h"
 #include "pinmap.h"
 #include "PeripheralNames.h"
@@ -70,3 +72,4 @@
     return (float)value * (1.0f / (float)0xFFFF);
 }
 
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogout_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/analogout_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -15,6 +15,8 @@
  */
 #include "analogout_api.h"
 
+#if DEVICE_ANALOGOUT
+
 #include "cmsis.h"
 #include "pinmap.h"
 #include "error.h"
@@ -76,3 +78,5 @@
     uint32_t value = dac_read(obj); // 12-bit
     return (value << 4) | ((value >> 8) & 0x003F);
 }
+
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_irq_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/gpio_irq_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -17,6 +17,9 @@
 #include "cmsis.h"
 
 #include "gpio_irq_api.h"
+
+#if DEVICE_INTERRUPTIN
+
 #include "gpio_api.h"
 #include "fsl_gpio_hal.h"
 #include "fsl_port_hal.h"
@@ -205,3 +208,4 @@
     }
 }
 
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/i2c_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/i2c_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -16,6 +16,8 @@
 #include "mbed_assert.h"
 #include "i2c_api.h"
 
+#if DEVICE_I2C
+
 #include "cmsis.h"
 #include "pinmap.h"
 #include "fsl_clock_manager.h"
@@ -307,3 +309,4 @@
 }
 #endif
 
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/port_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/port_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 #include "port_api.h"
+
+#if DEVICE_PORTIN || DEVICE_PORTOUT
+
 #include "pinmap.h"
 #include "gpio_api.h"
 
@@ -67,3 +70,5 @@
 int port_read(port_t *obj) {
     return (int)(gpio_hal_read_port_input((uint32_t)obj->port) & obj->mask);
 }
+
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pwmout_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/pwmout_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -16,6 +16,8 @@
 #include "mbed_assert.h"
 #include "pwmout_api.h"
 
+#if DEVICE_PWMOUT
+
 #include "cmsis.h"
 #include "pinmap.h"
 #include "fsl_ftm_hal.h"
@@ -124,3 +126,5 @@
     uint32_t value = (uint32_t)(pwm_clock_mhz * (float)us);
     ftm_hal_set_channel_count_value(obj->pwm_name >> TPM_SHIFT, obj->pwm_name & 0xF, value);
 }
+
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/rtc_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/rtc_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -14,6 +14,9 @@
  * limitations under the License.
  */
 #include "rtc_api.h"
+
+#if DEVICE_RTC
+
 #include "pinmap.h"
 #include "fsl_rtc_hal.h"
 #include "fsl_clock_manager.h"
@@ -63,3 +66,5 @@
     BW_RTC_TSR_TSR(t);
     rtc_hal_counter_enable(true);
 }
+
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/serial_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/serial_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -15,6 +15,8 @@
  */
 #include "serial_api.h"
 
+#if DEVICE_SERIAL
+
 // math.h required for floating point operations for baud rate calculation
 #include <math.h>
 #include "mbed_assert.h"
@@ -213,3 +215,4 @@
     uart_hal_queue_break_char_to_send(obj->index, false);
 }
 
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/spi_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ b/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_K64F/spi_api.c	Tue Jul 29 18:45:06 2014 +0100
@@ -17,6 +17,9 @@
 #include "mbed_assert.h"
 
 #include "spi_api.h"
+
+#if DEVICE_SPI
+
 #include "cmsis.h"
 #include "pinmap.h"
 #include "error.h"
@@ -137,3 +140,5 @@
     while (!spi_writeable(obj));
     dspi_hal_write_data_slave_mode(obj->instance, (uint32_t)value);
 }
+
+#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogin_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed_assert.h"
-#include "analogin_api.h"
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "PeripheralNames.h"
-#include "fsl_adc_hal.h"
-#include "fsl_clock_manager.h"
-
-#define MAX_FADC 6000000
-
-static const PinMap PinMap_ADC[] = {
-    {PTC2,  ADC0_SE4b, 0},
-    {PTC8,  ADC1_SE4b, 0},
-    {PTC9,  ADC1_SE5b, 0},
-    {PTD1,  ADC0_SE5b, 0},
-    {PTC10, ADC1_SE6b, 0},
-    {PTD5,  ADC0_SE6b, 0},
-    {PTC11, ADC1_SE7b, 0},
-    {PTD6,  ADC0_SE7b, 0},
-    {PTB0 , ADC0_SE8 , 0},
-    {PTB1 , ADC0_SE9 , 0},
-    {PTB2 , ADC0_SE12, 0},
-    {PTB3 , ADC0_SE13, 0},
-    {PTC0 , ADC0_SE14, 0},
-    {PTB10, ADC1_SE14, 0},
-    {PTB11, ADC1_SE15, 0},
-    {PTC1 , ADC0_SE15, 0},
-    {PTA17, ADC1_SE17, 0},
-    //{PTE24, ADC0_SE17, 0}, //I2C pull up
-    //{PTE25, ADC0_SE18, 0}, //I2C pull up
-    {NC   , NC       , 0}
-};
-
-void analogin_init(analogin_t *obj, PinName pin) {
-    obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
-    MBED_ASSERT(obj->adc != (ADCName)NC);
-
-    uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
-
-    clock_manager_set_gate(kClockModuleADC, instance, true);
-
-    uint32_t bus_clock;
-    clock_manager_get_frequency(kBusClock, &bus_clock);
-    uint32_t clkdiv;
-    for (clkdiv = 0; clkdiv < 4; clkdiv++) {
-        if ((bus_clock >> clkdiv) <= MAX_FADC)
-            break;
-    }
-    if (clkdiv == 4) {
-        clkdiv = 0x7; //Set max div
-    }
-    /* adc is enabled/triggered when reading. */
-    adc_hal_set_clock_source_mode(instance, (adc_clock_source_mode_t)(clkdiv >> 2));
-    adc_hal_set_clock_divider_mode(instance, (adc_clock_divider_mode_t)(clkdiv & 0x3));
-    adc_hal_set_reference_voltage_mode(instance, kAdcVoltageVref);
-    adc_hal_set_resolution_mode(instance, kAdcSingleDiff16);
-    adc_hal_configure_continuous_conversion(instance, false);
-    adc_hal_configure_hw_trigger(instance, false); /* sw trigger */
-    adc_hal_configure_hw_average(instance, true);
-    adc_hal_set_hw_average_mode(instance, kAdcHwAverageCount4);
-    adc_hal_set_group_mux(instance, kAdcChannelMuxB); /* only B channels are avail */
-
-    pinmap_pinout(pin, PinMap_ADC);
-}
-
-uint16_t analogin_read_u16(analogin_t *obj) {
-    uint32_t instance = obj->adc >> ADC_INSTANCE_SHIFT;
-    /* sw trigger (SC1A) */
-    adc_hal_enable(instance, 0, (adc_channel_mode_t)(obj->adc & 0xF), false);
-    while (!adc_hal_is_conversion_completed(instance, 0));
-    return adc_hal_get_conversion_value(instance, 0);
-}
-
-float analogin_read(analogin_t *obj) {
-    uint16_t value = analogin_read_u16(obj);
-    return (float)value * (1.0f / (float)0xFFFF);
-}
-
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/analogout_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "analogout_api.h"
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "error.h"
-
-#define RANGE_12BIT     0xFFF
-
-const PinMap PinMap_DAC[] = {
-    {DAC0_OUT, DAC_0, 0},
-    {NC      , NC   , 0}
-};
-
-void analogout_init(dac_t *obj, PinName pin) {
-    obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
-    if (obj->dac == (DACName)NC) {
-        error("DAC pin mapping failed");
-    }
-
-    SIM->SCGC2 |= SIM_SCGC2_DAC0_MASK;
-
-    DAC0->DAT[obj->dac].DATH = 0;
-    DAC0->DAT[obj->dac].DATL = 0;
-
-    DAC0->C1 = DAC_C1_DACBFMD(2);     // One-Time Scan Mode
-
-    DAC0->C0 = DAC_C0_DACEN_MASK      // Enable
-             | DAC_C0_DACSWTRG_MASK   // Software Trigger
-             | DAC_C0_DACRFS_MASK;    // VDDA selected
-
-    analogout_write_u16(obj, 0);
-}
-
-void analogout_free(dac_t *obj) {}
-
-static inline void dac_write(dac_t *obj, int value) {
-    DAC0->DAT[obj->dac].DATL = (uint8_t)( value       & 0xFF);
-    DAC0->DAT[obj->dac].DATH = (uint8_t)((value >> 8) & 0xFF);
-}
-
-static inline int dac_read(dac_t *obj) {
-    return ((DAC0->DAT[obj->dac].DATH << 8) | DAC0->DAT[obj->dac].DATL);
-}
-
-void analogout_write(dac_t *obj, float value) {
-    if (value < 0.0f) {
-        dac_write(obj, 0);
-    } else if (value > 1.0f) {
-        dac_write(obj, RANGE_12BIT);
-    } else {
-        dac_write(obj, value * (float)RANGE_12BIT);
-    }
-}
-
-void analogout_write_u16(dac_t *obj, uint16_t value) {
-    dac_write(obj, value >> 4); // 12-bit
-}
-
-float analogout_read(dac_t *obj) {
-    uint32_t value = dac_read(obj);
-    return (float)value * (1.0f / (float)RANGE_12BIT);
-}
-
-uint16_t analogout_read_u16(dac_t *obj) {
-    uint32_t value = dac_read(obj); // 12-bit
-    return (value << 4) | ((value >> 8) & 0x003F);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/device.h	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef MBED_DEVICE_H
-#define MBED_DEVICE_H
-
-#define DEVICE_PORTIN           1
-#define DEVICE_PORTOUT          1
-#define DEVICE_PORTINOUT        1
-
-#define DEVICE_INTERRUPTIN      1
-
-#define DEVICE_ANALOGIN         1
-#define DEVICE_ANALOGOUT        1
-
-#define DEVICE_SERIAL           1
-
-#define DEVICE_I2C              1
-#define DEVICE_I2CSLAVE         1
-
-#define DEVICE_SPI              1
-#define DEVICE_SPISLAVE         1
-
-#define DEVICE_CAN              0
-
-#define DEVICE_RTC              1
-
-#define DEVICE_ETHERNET         0
-
-#define DEVICE_PWMOUT           1
-
-#define DEVICE_SEMIHOST         0
-#define DEVICE_LOCALFILESYSTEM  0
-#define DEVICE_ID_LENGTH       24
-
-#define DEVICE_SLEEP            1
-
-#define DEVICE_DEBUG_AWARENESS  0
-
-#define DEVICE_STDIO_MESSAGES   1
-
-#define DEVICE_ERROR_RED        1
-
-#include "objects.h"
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed_assert.h"
-#include "gpio_api.h"
-#include "pinmap.h"
-#include "fsl_port_hal.h"
-#include "fsl_gpio_hal.h"
-#include "fsl_sim_hal.h"
-
-uint32_t gpio_set(PinName pin) {
-    MBED_ASSERT(pin != (PinName)NC);
-    uint32_t pin_num = pin & 0xFF;
-
-    pin_function(pin, (int)kPortMuxAsGpio);
-    return 1 << pin_num;
-}
-
-void gpio_init(gpio_t *obj, PinName pin) {
-    obj->pinName = pin;
-    if (pin == (PinName)NC)
-        return;
-
-    uint32_t port = pin >> GPIO_PORT_SHIFT;
-    uint32_t pin_num = pin & 0xFF;
-    clock_hal_set_gate(kSimClockModulePORT, port, true);
-    port_hal_mux_control(port, pin_num, kPortMuxAsGpio);
-}
-
-void gpio_mode(gpio_t *obj, PinMode mode) {
-    pin_mode(obj->pinName, mode);
-}
-
-void gpio_dir(gpio_t *obj, PinDirection direction) {
-    MBED_ASSERT(obj->pinName != (PinName)NC);
-    uint32_t port = obj->pinName >> GPIO_PORT_SHIFT;
-    uint32_t pin_num = obj->pinName & 0xFF;
-
-    switch (direction) {
-        case PIN_INPUT:
-            gpio_hal_set_pin_direction(port, pin_num, kGpioDigitalInput);
-            break;
-        case PIN_OUTPUT:
-            gpio_hal_set_pin_direction(port, pin_num, kGpioDigitalOutput);
-            break;
-    }
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_irq_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,207 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <stddef.h>
-#include "cmsis.h"
-
-#include "gpio_irq_api.h"
-#include "gpio_api.h"
-#include "fsl_gpio_hal.h"
-#include "fsl_port_hal.h"
-#include "error.h"
-
-#define CHANNEL_NUM    160
-
-static uint32_t channel_ids[CHANNEL_NUM] = {0};
-static gpio_irq_handler irq_handler;
-
-#define IRQ_DISABLED        (0)
-#define IRQ_RAISING_EDGE    (9)
-#define IRQ_FALLING_EDGE    (10)
-#define IRQ_EITHER_EDGE     (11)
-
-static void handle_interrupt_in(PortName port, int ch_base) {
-    uint32_t i;
-
-    for (i = 0; i < 32; i++) {
-        if (port_hal_read_pin_interrupt_flag(port, i)) {
-            uint32_t id = channel_ids[ch_base + i];
-            if (id == 0) {
-                continue;
-            }
-
-            gpio_irq_event event = IRQ_NONE;
-            switch (BR_PORT_PCRn_IRQC(port, i)) {
-                case IRQ_RAISING_EDGE:
-                    event = IRQ_RISE;
-                    break;
-
-                case IRQ_FALLING_EDGE:
-                    event = IRQ_FALL;
-                    break;
-
-                case IRQ_EITHER_EDGE:
-                    event = (gpio_hal_read_pin_input(port, i)) ? (IRQ_RISE) : (IRQ_FALL);
-                    break;
-            }
-            if (event != IRQ_NONE) {
-                irq_handler(id, event);
-            }
-        }
-    }
-    port_hal_clear_port_interrupt_flag(port);
-}
-
-void gpio_irqA(void) {handle_interrupt_in(PortA, 0);}
-void gpio_irqB(void) {handle_interrupt_in(PortB, 32);}
-void gpio_irqC(void) {handle_interrupt_in(PortC, 64);}
-void gpio_irqD(void) {handle_interrupt_in(PortD, 96);}
-void gpio_irqE(void) {handle_interrupt_in(PortE, 128);}
-
-int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32_t id) {
-    if (pin == NC) {
-        return -1;
-   }
-
-    irq_handler = handler;
-    obj->port = pin >> GPIO_PORT_SHIFT;
-    obj->pin = pin & 0x7F;
-
-    uint32_t ch_base, vector;
-    IRQn_Type irq_n;
-    switch (obj->port) {
-        case PortA:
-            ch_base = 0;
-            irq_n = PORTA_IRQn;
-            vector = (uint32_t)gpio_irqA;
-            break;
-        case PortB:
-            ch_base = 32;
-            irq_n = PORTB_IRQn;
-            vector = (uint32_t)gpio_irqB;
-            break;
-        case PortC:
-            ch_base = 64;
-            irq_n = PORTC_IRQn;
-            vector = (uint32_t)gpio_irqC;
-            break;
-        case PortD:
-            ch_base = 96;
-            irq_n = PORTD_IRQn;
-            vector = (uint32_t)gpio_irqD;
-            break;
-        case PortE:
-            ch_base = 128;
-            irq_n = PORTE_IRQn;
-            vector = (uint32_t)gpio_irqE;
-            break;
-
-        default:
-            error("gpio_irq only supported on port A-E.");
-            break;
-    }
-    NVIC_SetVector(irq_n, vector);
-    NVIC_EnableIRQ(irq_n);
-
-    obj->ch = ch_base + obj->pin;
-    channel_ids[obj->ch] = id;
-
-    return 0;
-}
-
-void gpio_irq_free(gpio_irq_t *obj) {
-    channel_ids[obj->ch] = 0;
-}
-
-void gpio_irq_set(gpio_irq_t *obj, gpio_irq_event event, uint32_t enable) {
-    port_interrupt_config_t irq_settings = kPortIntDisabled;
-
-    switch (BR_PORT_PCRn_IRQC(obj->port, obj->pin)) {
-        case IRQ_DISABLED:
-            if (enable)
-                irq_settings = (event == IRQ_RISE) ? (kPortIntRisingEdge) : (kPortIntFallingEdge);
-            break;
-
-        case IRQ_RAISING_EDGE:
-            if (enable) {
-                irq_settings = (event == IRQ_RISE) ? (kPortIntRisingEdge) : (kPortIntEitherEdge);
-            } else {
-                if (event == IRQ_FALL)
-                    irq_settings = kPortIntRisingEdge;
-            }
-            break;
-
-        case IRQ_FALLING_EDGE:
-            if (enable) {
-                irq_settings = (event == IRQ_FALL) ? (kPortIntFallingEdge) : (kPortIntEitherEdge);
-            } else {
-                if (event == IRQ_RISE)
-                    irq_settings = kPortIntFallingEdge;
-            }
-            break;
-
-        case IRQ_EITHER_EDGE:
-            if (enable) {
-                irq_settings = kPortIntEitherEdge;
-            } else {
-                irq_settings = (event == IRQ_RISE) ? (kPortIntFallingEdge) : (kPortIntRisingEdge);
-            }
-            break;
-    }
-
-    port_hal_configure_pin_interrupt(obj->port, obj->pin, irq_settings);
-    port_hal_clear_pin_interrupt_flag(obj->port, obj->pin);
-}
-
-void gpio_irq_enable(gpio_irq_t *obj) {
-    switch (obj->port) {
-        case PortA:
-            NVIC_EnableIRQ(PORTA_IRQn);
-            break;
-        case PortB:
-            NVIC_EnableIRQ(PORTB_IRQn);
-            break;
-        case PortC:
-            NVIC_EnableIRQ(PORTC_IRQn);
-            break;
-        case PortD:
-            NVIC_EnableIRQ(PORTD_IRQn);
-            break;
-        case PortE:
-            NVIC_EnableIRQ(PORTE_IRQn);
-            break;
-    }
-}
-
-void gpio_irq_disable(gpio_irq_t *obj) {
-    switch (obj->port) {
-        case PortA:
-            NVIC_DisableIRQ(PORTA_IRQn);
-            break;
-        case PortB:
-            NVIC_DisableIRQ(PORTB_IRQn);
-            break;
-        case PortC:
-            NVIC_DisableIRQ(PORTC_IRQn);
-            break;
-        case PortD:
-            NVIC_DisableIRQ(PORTD_IRQn);
-            break;
-        case PortE:
-            NVIC_DisableIRQ(PORTE_IRQn);
-            break;
-    }
-}
-
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/gpio_object.h	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef MBED_GPIO_OBJECT_H
-#define MBED_GPIO_OBJECT_H
-
-#include "mbed_assert.h"
-#include "fsl_gpio_hal.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-    PinName pinName;
-} gpio_t;
-
-static inline void gpio_write(gpio_t *obj, int value) {
-    MBED_ASSERT(obj->pinName != (PinName)NC);
-    uint32_t port = obj->pinName >> GPIO_PORT_SHIFT;
-    uint32_t pin = obj->pinName & 0xFF;
-
-    gpio_hal_write_pin_output(port, pin, value);
-}
-
-static inline int gpio_read(gpio_t *obj) {
-    MBED_ASSERT(obj->pinName != (PinName)NC);
-    uint32_t port = obj->pinName >> GPIO_PORT_SHIFT;
-    uint32_t pin = obj->pinName & 0xFF;
-
-    return (int)gpio_hal_read_pin_input(port, pin);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/i2c_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,331 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed_assert.h"
-#include "i2c_api.h"
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "fsl_clock_manager.h"
-#include "fsl_i2c_hal.h"
-#include "fsl_port_hal.h"
-#include "fsl_sim_hal.h"
-
-static const PinMap PinMap_I2C_SDA[] = {
-    {PTE25, I2C_0, 5},
-    {PTB1 , I2C_0, 2},
-    {PTB3 , I2C_0, 2},
-    {PTC11, I2C_1, 2},
-    {PTA13, I2C_2, 5},
-    {PTD3 , I2C_0, 7},
-    {PTE0 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-static const PinMap PinMap_I2C_SCL[] = {
-    {PTE24, I2C_0, 5},
-    {PTB0 , I2C_0, 2},
-    {PTB2 , I2C_0, 2},
-    {PTC10, I2C_1, 2},
-    {PTA12, I2C_2, 5},
-    {PTA14, I2C_2, 5},
-    {PTD2 , I2C_0, 7},
-    {PTE1 , I2C_1, 6},
-    {NC   , NC   , 0}
-};
-
-void i2c_init(i2c_t *obj, PinName sda, PinName scl) {
-    uint32_t i2c_sda = pinmap_peripheral(sda, PinMap_I2C_SDA);
-    uint32_t i2c_scl = pinmap_peripheral(scl, PinMap_I2C_SCL);
-    obj->instance = pinmap_merge(i2c_sda, i2c_scl);
-    MBED_ASSERT((int)obj->instance != NC);
-
-    clock_manager_set_gate(kClockModuleI2C, obj->instance, true);
-    clock_manager_set_gate(kClockModulePORT, sda >> GPIO_PORT_SHIFT, true);
-    clock_manager_set_gate(kClockModulePORT, scl >> GPIO_PORT_SHIFT, true);
-    i2c_hal_enable(obj->instance);
-    i2c_frequency(obj, 100000);
-
-    pinmap_pinout(sda, PinMap_I2C_SDA);
-    pinmap_pinout(scl, PinMap_I2C_SCL);
-    port_hal_configure_open_drain(sda >> GPIO_PORT_SHIFT, sda & 0xFF, true);
-    port_hal_configure_open_drain(scl >> GPIO_PORT_SHIFT, scl & 0xFF, true);
-}
-
-int i2c_start(i2c_t *obj) {
-    i2c_hal_send_start(obj->instance);
-    return 0;
-}
-
-int i2c_stop(i2c_t *obj) {
-    volatile uint32_t n = 0;
-    i2c_hal_send_stop(obj->instance);
-    
-    // It seems that there are timing problems
-    // when there is no waiting time after a STOP.
-    // This wait is also included on the samples
-    // code provided with the freedom board
-    for (n = 0; n < 200; n++) __NOP();
-    return 0;
-}
-
-static int timeout_status_poll(i2c_t *obj, uint32_t mask) {
-    uint32_t i, timeout = 100000;
-
-    for (i = 0; i < timeout; i++) {
-        if (HW_I2C_S_RD(obj->instance) & mask)
-            return 0;
-    }
-    return 1;
-}
-
-// this function waits the end of a tx transfer and return the status of the transaction:
-//    0: OK ack received
-//    1: OK ack not received
-//    2: failure
-static int i2c_wait_end_tx_transfer(i2c_t *obj) {
-    // wait for the interrupt flag
-    if (timeout_status_poll(obj, I2C_S_IICIF_MASK)) {
-        return 2;
-    }
-
-    i2c_hal_clear_interrupt(obj->instance);
-
-    // wait transfer complete
-    if (timeout_status_poll(obj, I2C_S_TCF_MASK)) {
-        return 2;
-    }
-
-    // check if we received the ACK or not
-    return i2c_hal_get_receive_ack(obj->instance) ? 0 : 1;
-}
-
-// this function waits the end of a rx transfer and return the status of the transaction:
-//    0: OK
-//    1: failure
-static int i2c_wait_end_rx_transfer(i2c_t *obj) {
-    // wait for the end of the rx transfer
-    if (timeout_status_poll(obj, I2C_S_IICIF_MASK)) {
-        return 1;
-    }
-
-    i2c_hal_clear_interrupt(obj->instance);
-
-    return 0;
-}
-
-static int i2c_do_write(i2c_t *obj, int value) {
-    i2c_hal_write(obj->instance, value);
-
-    // init and wait the end of the transfer
-    return i2c_wait_end_tx_transfer(obj);
-}
-
-static int i2c_do_read(i2c_t *obj, char * data, int last) {
-    if (last) {
-        i2c_hal_send_nak(obj->instance);
-    } else {
-        i2c_hal_send_ack(obj->instance);
-    }
-
-    *data = (i2c_hal_read(obj->instance) & 0xFF);
-
-    // start rx transfer and wait the end of the transfer
-    return i2c_wait_end_rx_transfer(obj);
-}
-
-void i2c_frequency(i2c_t *obj, int hz) {
-    uint32_t busClock;
-
-    clock_manager_error_code_t error = clock_manager_get_frequency(kBusClock, &busClock);
-    if (error == kClockManagerSuccess) {
-        i2c_hal_set_baud(obj->instance, busClock, hz / 1000, NULL);
-    }
-}
-
-int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) {
-    int count;
-    char dummy_read, *ptr;
-
-    if (i2c_start(obj)) {
-        i2c_stop(obj);
-        return I2C_ERROR_BUS_BUSY;
-    }
-
-    if (i2c_do_write(obj, (address | 0x01))) {
-        i2c_stop(obj);
-        return I2C_ERROR_NO_SLAVE;
-    }
-
-    // set rx mode
-    i2c_hal_set_direction(obj->instance, kI2CReceive);
-
-    // Read in bytes
-    for (count = 0; count < (length); count++) {
-        ptr = (count == 0) ? &dummy_read : &data[count - 1];
-        uint8_t stop_ = (count == (length - 1)) ? 1 : 0;
-        if (i2c_do_read(obj, ptr, stop_)) {
-            i2c_stop(obj);
-            return count;
-        }
-    }
-
-    // If not repeated start, send stop.
-    if (stop)
-        i2c_stop(obj);
-
-    // last read
-    data[count-1] = i2c_hal_read(obj->instance);
-
-    return length;
-}
-
-int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) {
-    int i;
-
-    if (i2c_start(obj)) {
-        i2c_stop(obj);
-        return I2C_ERROR_BUS_BUSY;
-    }
-
-    if (i2c_do_write(obj, (address & 0xFE))) {
-        i2c_stop(obj);
-        return I2C_ERROR_NO_SLAVE;
-    }
-
-    for (i = 0; i < length; i++) {
-        if(i2c_do_write(obj, data[i])) {
-            i2c_stop(obj);
-            return i;
-        }
-    }
-
-    if (stop)
-        i2c_stop(obj);
-
-    return length;
-}
-
-void i2c_reset(i2c_t *obj) {
-    i2c_stop(obj);
-}
-
-int i2c_byte_read(i2c_t *obj, int last) {
-    char data;
-
-    // set rx mode
-    i2c_hal_set_direction(obj->instance, kI2CReceive);
-
-    // Setup read
-    i2c_do_read(obj, &data, last);
-
-    // set tx mode
-    i2c_hal_set_direction(obj->instance, kI2CTransmit);
-    return i2c_hal_read(obj->instance);
-}
-
-int i2c_byte_write(i2c_t *obj, int data) {
-    // set tx mode
-    i2c_hal_set_direction(obj->instance, kI2CTransmit);
-
-    return !i2c_do_write(obj, (data & 0xFF));
-}
-
-
-#if DEVICE_I2CSLAVE
-void i2c_slave_mode(i2c_t *obj, int enable_slave) {
-    if (enable_slave) {
-        // set slave mode
-        BW_I2C_C1_MST(obj->instance, 0);
-        i2c_hal_enable_interrupt(obj->instance);
-    } else {
-        // set master mode
-        BW_I2C_C1_MST(obj->instance, 1);
-    }
-}
-
-int i2c_slave_receive(i2c_t *obj) {
-    switch(HW_I2C_S_RD(obj->instance)) {
-        // read addressed
-        case 0xE6:
-            return 1;
-        // write addressed
-        case 0xE2:
-            return 3;
-        default:
-            return 0;
-    }
-}
-
-int i2c_slave_read(i2c_t *obj, char *data, int length) {
-    uint8_t dummy_read;
-    uint8_t *ptr;
-    int count;
-
-    // set rx mode
-    i2c_hal_set_direction(obj->instance, kI2CTransmit);
-
-    // first dummy read
-    dummy_read = i2c_hal_read(obj->instance);
-    if (i2c_wait_end_rx_transfer(obj))
-        return 0;
-
-    // read address
-    dummy_read = i2c_hal_read(obj->instance);
-    if (i2c_wait_end_rx_transfer(obj))
-        return 0;
-
-    // read (length - 1) bytes
-    for (count = 0; count < (length - 1); count++) {
-        data[count] = i2c_hal_read(obj->instance);
-        if (i2c_wait_end_rx_transfer(obj))
-            return count;
-    }
-
-    // read last byte
-    ptr = (length == 0) ? &dummy_read : (uint8_t *)&data[count];
-    *ptr = i2c_hal_read(obj->instance);
-
-    return (length) ? (count + 1) : 0;
-}
-
-int i2c_slave_write(i2c_t *obj, const char *data, int length) {
-    int i, count = 0;
-
-    // set tx mode
-    i2c_hal_set_direction(obj->instance, kI2CTransmit);
-
-    for (i = 0; i < length; i++) {
-        if (i2c_do_write(obj, data[count++]) == 2)
-            return i;
-    }
-
-    // set rx mode
-    i2c_hal_set_direction(obj->instance, kI2CReceive);
-
-    // dummy rx transfer needed
-    // otherwise the master cannot generate a stop bit
-    i2c_hal_read(obj->instance);
-    if (i2c_wait_end_rx_transfer(obj) == 2)
-        return count;
-
-    return count;
-}
-
-void i2c_slave_address(i2c_t *obj, int idx, uint32_t address, uint32_t mask) {
-    i2c_hal_set_upper_slave_address_7bit(obj->instance, address & 0xfe);
-}
-#endif
-
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/objects.h	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifndef MBED_OBJECTS_H
-#define MBED_OBJECTS_H
-
-#include "cmsis.h"
-#include "PortNames.h"
-#include "PeripheralNames.h"
-#include "PinNames.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct gpio_irq_s {
-    uint32_t port;
-    uint32_t pin;
-    uint32_t ch;
-};
-
-struct port_s {
-    PortName port;
-    uint32_t mask;
-};
-
-struct pwmout_s {
-    PWMName pwm_name;
-};
-
-struct serial_s {
-    int index;
-};
-
-struct analogin_s {
-    ADCName adc;
-};
-
-struct i2c_s {
-    uint32_t instance;
-};
-
-struct spi_s {
-    uint32_t instance;
-};
-
-struct dac_s {
-    DACName dac;
-};
-
-#include "gpio_object.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pinmap.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed_assert.h"
-#include "pinmap.h"
-#include "error.h"
-#include "fsl_clock_manager.h"
-#include "fsl_port_hal.h"
-
-void pin_function(PinName pin, int function) {
-    MBED_ASSERT(pin != (PinName)NC);
-    clock_manager_set_gate(kClockModulePORT, pin >> GPIO_PORT_SHIFT, true);
-    port_hal_mux_control(pin >> GPIO_PORT_SHIFT, pin & 0xFF, (port_mux_t)function);
-}
-
-void pin_mode(PinName pin, PinMode mode) {
-    MBED_ASSERT(pin != (PinName)NC);
-    uint32_t instance = pin >> GPIO_PORT_SHIFT;
-    uint32_t pinName = pin & 0xFF;
-
-    switch (mode) {
-        case PullNone:
-            port_hal_configure_pull(instance, pinName, false);
-            port_hal_pull_select(instance, pinName, kPortPullDown);
-            break;
-        case PullDown:
-            port_hal_configure_pull(instance, pinName, true);
-            port_hal_pull_select(instance, pinName, kPortPullDown);
-            break;
-        case PullUp:
-            port_hal_configure_pull(instance, pinName, true);
-            port_hal_pull_select(instance, pinName, kPortPullUp);
-            break;
-        default:
-            break;
-    }
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/port_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "port_api.h"
-#include "pinmap.h"
-#include "gpio_api.h"
-
-PinName port_pin(PortName port, int pin_n) {
-    return (PinName)((port << GPIO_PORT_SHIFT) | pin_n);
-}
-
-void port_init(port_t *obj, PortName port, int mask, PinDirection dir) {
-    obj->port = port;
-    obj->mask = mask;
-
-    // The function is set per pin: reuse gpio logic
-    for (uint32_t i = 0; i < 32; i++) {
-        if (obj->mask & (1 << i)) {
-            gpio_set(port_pin(obj->port, i));
-        }
-    }
-
-    port_dir(obj, dir);
-}
-
-void port_mode(port_t *obj, PinMode mode) {
-
-    // The mode is set per pin: reuse pinmap logic
-    for (uint32_t i = 0; i < 32; i++) {
-        if (obj->mask & (1 << i)) {
-            pin_mode(port_pin(obj->port, i), mode);
-        }
-    }
-}
-
-void port_dir(port_t *obj, PinDirection dir) {
-    uint32_t direction = gpio_hal_get_port_direction((uint32_t)obj->port);
-    switch (dir) {
-        case PIN_INPUT :
-            direction &= ~obj->mask;
-            gpio_hal_set_port_direction((uint32_t)obj->port, direction);
-            break;
-        case PIN_OUTPUT:
-            direction |= obj->mask;
-            gpio_hal_set_port_direction((uint32_t)obj->port, direction);
-            break;
-    }
-}
-
-void port_write(port_t *obj, int value) {
-    uint32_t input = gpio_hal_read_port_input((uint32_t)obj->port) & ~obj->mask;
-    gpio_hal_write_port_output((uint32_t)obj->port, input | (uint32_t)(value & obj->mask));
-}
-
-int port_read(port_t *obj) {
-    return (int)(gpio_hal_read_port_input((uint32_t)obj->port) & obj->mask);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/pwmout_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,172 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "mbed_assert.h"
-#include "pwmout_api.h"
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "fsl_ftm_hal.h"
-#include "fsl_mcg_hal.h"
-#include "fsl_clock_manager.h"
-
-static const PinMap PinMap_PWM[] = {
-    {PTA0 , PWM_6 , 3},
-    {PTA1 , PWM_7 , 3},
-    {PTA2 , PWM_8 , 3},
-    {PTA3 , PWM_1 , 3},
-    {PTA4 , PWM_2 , 3},
-    {PTA5 , PWM_3 , 3},
-    {PTA6 , PWM_4 , 3},
-    {PTA7 , PWM_5 , 3},
-    {PTA8 , PWM_9 , 3},
-    {PTA9 , PWM_10, 3},
-    {PTA10, PWM_17, 3},
-    {PTA11, PWM_18, 3},
-    {PTA12, PWM_9 , 3},
-    {PTA13, PWM_10, 3},
-    
-    {PTB0 , PWM_9 , 3},
-    {PTB1 , PWM_10, 3},
-    {PTB18, PWM_17, 3},
-    {PTB19, PWM_18, 3},
-    
-    {PTC1 , PWM_1 , 4},
-    {PTC2 , PWM_2 , 4},
-    {PTC3 , PWM_3 , 4},
-    {PTC4 , PWM_4 , 4},
-    {PTC5 , PWM_3 , 7},
-    {PTC8 , PWM_29, 3},
-    {PTC9 , PWM_30, 3},
-    {PTC10, PWM_31, 3},
-    {PTC11, PWM_32, 3},
-    
-    {PTD0 , PWM_25, 4},
-    {PTD1 , PWM_26, 4},
-    {PTD2 , PWM_27, 4},
-    {PTD3 , PWM_28, 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD5 , PWM_6 , 4},
-    {PTD6 , PWM_7 , 4},
-    {PTD4 , PWM_5 , 4},
-    {PTD7 , PWM_8 , 4},
-    
-    {PTE5 , PWM_25, 6},
-    {PTE6 , PWM_26, 6},
-        
-    {NC   , NC    , 0}
-};
-
-static float pwm_clock_mhz;
-
-void pwmout_init(pwmout_t* obj, PinName pin) {
-    PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM);
-    MBED_ASSERT(pwm != (PWMName)NC);
-
-    obj->pwm_name = pwm;
-
-    uint32_t pwm_base_clock;
-    clock_manager_get_frequency(kBusClock, &pwm_base_clock);
-    float clkval = (float)pwm_base_clock / 1000000.0f;
-    uint32_t clkdiv = 0;
-    while (clkval > 1) {
-        clkdiv++;
-        clkval /= 2.0f;
-        if (clkdiv == 7) {
-            break;
-        }
-    }
-
-    pwm_clock_mhz = clkval;
-    uint32_t channel = pwm & 0xF;
-    uint32_t instance = pwm >> TPM_SHIFT;
-    clock_manager_set_gate(kClockModuleFTM, instance, true);
-    ftm_hal_set_tof_frequency(instance, 3);
-    ftm_hal_set_clock_source(instance, kClock_source_FTM_SystemClk);
-    ftm_hal_set_clock_ps(instance, (ftm_clock_ps_t)clkdiv);
-    ftm_hal_set_counter_init_val(instance, 0);
-    // default to 20ms: standard for servos, and fine for e.g. brightness control
-    pwmout_period_ms(obj, 20);
-    pwmout_write    (obj, 0);
-    ftm_config_t config = {
-        .mode = kFtmEdgeAlignedPWM,
-        .channel = channel,
-        .edge_mode = {.ftm_pwm_edge_mode = kFtmHighTrue}
-    };
-    ftm_hal_enable_pwm_mode(instance, &config);
-
-    // Wire pinout
-    pinmap_pinout(pin, PinMap_PWM);
-}
-
-void pwmout_free(pwmout_t* obj) {
-}
-
-void pwmout_write(pwmout_t* obj, float value) {
-    uint32_t instance = obj->pwm_name >> TPM_SHIFT;
-    if (value < 0.0f) {
-        value = 0.0f;
-    } else if (value > 1.0f) {
-        value = 1.0f;
-    }
-    uint16_t mod = ftm_hal_get_mod(instance);
-    uint32_t new_count = (uint32_t)((float)(mod) * value);
-    // Stop FTM clock to ensure instant update of MOD register
-    ftm_hal_set_clock_source(instance, kClock_source_FTM_None);
-    ftm_hal_set_channel_count_value(instance, obj->pwm_name & 0xF, new_count);
-    ftm_hal_set_counter(instance, 0);
-    ftm_hal_set_clock_source(instance, kClock_source_FTM_SystemClk);
-}
-
-float pwmout_read(pwmout_t* obj) {
-    uint16_t count = ftm_hal_get_channel_count_value(obj->pwm_name >> TPM_SHIFT, obj->pwm_name & 0xF, 0);
-    uint16_t mod = ftm_hal_get_mod(obj->pwm_name >> TPM_SHIFT);
-    if (mod == 0)
-        return 0.0;
-    float v = (float)(count) / (float)(mod);
-    return (v > 1.0f) ? (1.0f) : (v);
-}
-
-void pwmout_period(pwmout_t* obj, float seconds) {
-    pwmout_period_us(obj, seconds * 1000000.0f);
-}
-
-void pwmout_period_ms(pwmout_t* obj, int ms) {
-    pwmout_period_us(obj, ms * 1000);
-}
-
-// Set the PWM period, keeping the duty cycle the same.
-void pwmout_period_us(pwmout_t* obj, int us) {
-    uint32_t instance = obj->pwm_name >> TPM_SHIFT;
-    float dc = pwmout_read(obj);
-    // Stop FTM clock to ensure instant update of MOD register
-    ftm_hal_set_clock_source(instance, kClock_source_FTM_None);
-    ftm_hal_set_mod(instance, (uint32_t)(pwm_clock_mhz * (float)us) - 1);
-    pwmout_write(obj, dc);
-    ftm_hal_set_clock_source(instance, kClock_source_FTM_SystemClk);
-}
-
-void pwmout_pulsewidth(pwmout_t* obj, float seconds) {
-    pwmout_pulsewidth_us(obj, seconds * 1000000.0f);
-}
-
-void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
-    pwmout_pulsewidth_us(obj, ms * 1000);
-}
-
-void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
-    uint32_t value = (uint32_t)(pwm_clock_mhz * (float)us);
-    ftm_hal_set_channel_count_value(obj->pwm_name >> TPM_SHIFT, obj->pwm_name & 0xF, value);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/rtc_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "rtc_api.h"
-#include "pinmap.h"
-#include "fsl_rtc_hal.h"
-#include "fsl_clock_manager.h"
-
-const PinMap PinMap_RTC[] = {
-    {NC, OSC32KCLK, 0},
-};
-
-void rtc_init(void) {
-    rtc_hal_init_config_t hal_config = {0};
-
-    hal_config.disableClockOutToPeripheral = true;
-    if (PinMap_RTC[0].pin == NC) {
-        hal_config.enable32kOscillator = true;
-    }
-    clock_manager_set_gate(kClockModuleRTC, 0U, true);
-    hal_config.startSecondsCounterAt = 1; /* TSR = 1 */
-    rtc_hal_init(&hal_config);
-
-    // select RTC clock source
-    SIM->SOPT1 &= ~SIM_SOPT1_OSC32KSEL_MASK;
-    SIM->SOPT1 |= SIM_SOPT1_OSC32KSEL(PinMap_RTC[0].peripheral);
-
-    rtc_hal_config_oscillator(true);
-    rtc_hal_counter_enable(true);
-}
-
-void rtc_free(void) {
-    // [TODO]
-}
-
-/*
- * Little check routine to see if the RTC has been enabled
- * 0 = Disabled, 1 = Enabled
- */
-int rtc_isenabled(void) {
-    clock_manager_set_gate(kClockModuleRTC, 0U, true);
-    return (int)rtc_hal_is_counter_enabled();
-}
-
-time_t rtc_read(void) {
-    return BR_RTC_TSR_TSR;
-}
-
-void rtc_write(time_t t) {
-    if (t == 0) {
-        t = 1;
-    }
-    rtc_hal_counter_enable(false);
-    BW_RTC_TSR_TSR(t);
-    rtc_hal_counter_enable(true);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/serial_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "serial_api.h"
-
-// math.h required for floating point operations for baud rate calculation
-#include <math.h>
-#include "mbed_assert.h"
-
-#include <string.h>
-
-#include "cmsis.h"
-#include "pinmap.h"
-#include "fsl_uart_hal.h"
-#include "fsl_clock_manager.h"
-#include "fsl_uart_features.h"
-
-/* TODO:
-    putchar/getchar 9 and 10 bits support
-*/
-
-static const PinMap PinMap_UART_TX[] = {
-    {PTB17, UART_0, 3},
-    {PTC17, UART_3, 3},
-    {PTD7 , UART_0, 3},
-    {PTD3 , UART_2, 3},
-    {PTC4 , UART_1, 3},
-    {PTC15, UART_4, 3},
-    {PTB11, UART_3, 3},
-    {PTA14, UART_0, 3},
-    {PTE24, UART_4, 3},
-    {PTE4 , UART_3, 3},
-    {PTE0,  UART_1, 3},
-    {NC  ,  NC    , 0}
-};
-
-static const PinMap PinMap_UART_RX[] = {
-    {PTB16, UART_0, 3},
-    {PTE1 , UART_1, 3},
-    {PTE5 , UART_3, 3},
-    {PTE25, UART_4, 3},
-    {PTA15, UART_0, 3},
-    {PTC16, UART_3, 3},
-    {PTB10, UART_3, 3},
-    {PTC3 , UART_1, 3},
-    {PTC14, UART_4, 3},
-    {PTD2 , UART_2, 3},
-    {PTC6 , UART_0, 3},
-    {NC  ,  NC    , 0}
-};
-
-#define UART_NUM    4
-
-static uint32_t serial_irq_ids[UART_NUM] = {0};
-static uart_irq_handler irq_handler;
-
-int stdio_uart_inited = 0;
-serial_t stdio_uart;
-
-static uint32_t serial_get_clock(uint32_t uart_instance)
-{
-    uint32_t uartSourceClock;
-
-    if ((uart_instance == 0) || (uart_instance == 1)) {
-        clock_manager_get_frequency(kSystemClock, &uartSourceClock);
-    } else {
-        clock_manager_get_frequency(kBusClock, &uartSourceClock);
-    }
-    return uartSourceClock;
-}
-
-void serial_init(serial_t *obj, PinName tx, PinName rx) {
-    uint32_t uart_tx = pinmap_peripheral(tx, PinMap_UART_TX);
-    uint32_t uart_rx = pinmap_peripheral(rx, PinMap_UART_RX);
-    obj->index = (UARTName)pinmap_merge(uart_tx, uart_rx);
-    MBED_ASSERT((int)obj->index != NC);
-
-    uart_config_t uart_config;
-    uart_config.baudRate = 9600;
-    uart_config.bitCountPerChar = kUart8BitsPerChar;
-    uart_config.parityMode = kUartParityDisabled;
-    uart_config.rxDataInvert = 0;
-    uart_config.stopBitCount = kUartOneStopBit;
-    uart_config.txDataInvert = 0;
-
-    uart_config.uartSourceClockInHz = serial_get_clock(obj->index);
-
-    clock_manager_set_gate(kClockModuleUART, obj->index, true);
-    uart_hal_init(obj->index, &uart_config);
-
-    pinmap_pinout(tx, PinMap_UART_TX);
-    pinmap_pinout(rx, PinMap_UART_RX);
-
-    pin_mode(tx, PullUp);
-    pin_mode(rx, PullUp);
-
-    if (obj->index == STDIO_UART) {
-        stdio_uart_inited = 1;
-        memcpy(&stdio_uart, obj, sizeof(serial_t));
-    }
-}
-
-void serial_free(serial_t *obj) {
-    serial_irq_ids[obj->index] = 0;
-}
-
-void serial_baud(serial_t *obj, int baudrate) {
-    uart_hal_set_baud_rate(obj->index, serial_get_clock(obj->index), (uint32_t)baudrate);
-}
-
-void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_bits) {
-    uart_hal_configure_bit_count_per_char(obj->index, (uart_bit_count_per_char_t)data_bits);
-    uart_hal_configure_parity_mode(obj->index, (uart_parity_mode_t)parity);
-    uart_hal_configure_stop_bit_count(obj->index, (uart_stop_bit_count_t)stop_bits);
-}
-
-/******************************************************************************
- * INTERRUPTS HANDLING
- ******************************************************************************/
-static inline void uart_irq(uint32_t transmit_empty, uint32_t receive_full, uint32_t index) {
-    if (serial_irq_ids[index] != 0) {
-        if (transmit_empty)
-            irq_handler(serial_irq_ids[index], TxIrq);
-
-    if (receive_full)
-        irq_handler(serial_irq_ids[index], RxIrq);
-    }
-}
-
-void uart0_irq() {
-    uart_irq(uart_hal_is_transmit_data_register_empty(0), uart_hal_is_receive_data_register_full(0), 0);
-    if (uart_hal_is_receive_overrun_detected(0))
-        uart_hal_clear_status_flag(0, kUartReceiveOverrun);
-}
-void uart1_irq() {
-    uart_irq(uart_hal_is_transmit_data_register_empty(1), uart_hal_is_receive_data_register_full(1), 1);
-}
-
-void uart2_irq() {
-    uart_irq(uart_hal_is_transmit_data_register_empty(2), uart_hal_is_receive_data_register_full(2), 2);
-}
-
-void uart3_irq() {
-    uart_irq(uart_hal_is_transmit_data_register_empty(3), uart_hal_is_receive_data_register_full(3), 3);
-}
-
-void uart4_irq() {
-    uart_irq(uart_hal_is_transmit_data_register_empty(4), uart_hal_is_receive_data_register_full(4), 4);
-}
-
-void serial_irq_handler(serial_t *obj, uart_irq_handler handler, uint32_t id) {
-    irq_handler = handler;
-    serial_irq_ids[obj->index] = id;
-}
-
-void serial_irq_set(serial_t *obj, SerialIrq irq, uint32_t enable) {
-    IRQn_Type irq_n = (IRQn_Type)0;
-    uint32_t vector = 0;
-
-    switch (obj->index) {
-        case 0: irq_n=UART0_RX_TX_IRQn; vector = (uint32_t)&uart0_irq; break;
-        case 1: irq_n=UART1_RX_TX_IRQn; vector = (uint32_t)&uart1_irq; break;
-        case 2: irq_n=UART2_RX_TX_IRQn; vector = (uint32_t)&uart2_irq; break;
-        case 3: irq_n=UART3_RX_TX_IRQn; vector = (uint32_t)&uart3_irq; break;
-        case 4: irq_n=UART4_RX_TX_IRQn; vector = (uint32_t)&uart4_irq; break;
-    }
-
-    if (enable) {
-        switch (irq) {
-            case RxIrq: uart_hal_enable_rx_data_register_full_interrupt(obj->index); break;
-            case TxIrq: uart_hal_enable_tx_data_register_empty_interrupt(obj->index); break;
-        }
-        NVIC_SetVector(irq_n, vector);
-        NVIC_EnableIRQ(irq_n);
-
-    } else { // disable
-        int all_disabled = 0;
-        SerialIrq other_irq = (irq == RxIrq) ? (TxIrq) : (RxIrq);
-        switch (irq) {
-            case RxIrq: uart_hal_disable_rx_data_register_full_interrupt(obj->index); break;
-            case TxIrq: uart_hal_disable_tx_data_register_empty_interrupt(obj->index); break;
-        }
-        switch (other_irq) {
-            case RxIrq: all_disabled = uart_hal_is_receive_data_full_interrupt_enabled(obj->index) == 0; break;
-            case TxIrq: all_disabled = uart_hal_is_tx_data_register_empty_interrupt_enabled(obj->index) == 0; break;
-        }
-        if (all_disabled)
-            NVIC_DisableIRQ(irq_n);
-    }
-}
-
-int serial_getc(serial_t *obj) {
-    while (!serial_readable(obj));
-    uint8_t data;
-    uart_hal_getchar(obj->index, &data);
-
-    return data;
-}
-
-void serial_putc(serial_t *obj, int c) {
-    while (!serial_writable(obj));
-    uart_hal_putchar(obj->index, (uint8_t)c);
-}
-
-int serial_readable(serial_t *obj) {
-    if (uart_hal_is_receive_overrun_detected(obj->index))
-        uart_hal_clear_status_flag(obj->index, kUartReceiveOverrun);
-    return uart_hal_is_receive_data_register_full(obj->index);
-}
-
-int serial_writable(serial_t *obj) {
-    if (uart_hal_is_receive_overrun_detected(obj->index))
-        uart_hal_clear_status_flag(obj->index, kUartReceiveOverrun);
-
-    return uart_hal_is_transmit_data_register_empty(obj->index);
-}
-
-void serial_clear(serial_t *obj) {
-}
-
-void serial_pinout_tx(PinName tx) {
-    pinmap_pinout(tx, PinMap_UART_TX);
-}
-
-void serial_break_set(serial_t *obj) {
-    uart_hal_queue_break_char_to_send(obj->index, true);
-}
-
-void serial_break_clear(serial_t *obj) {
-    uart_hal_queue_break_char_to_send(obj->index, false);
-}
-
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/sleep.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include "sleep_api.h"
-#include "cmsis.h"
-#include "fsl_mcg_hal.h"
-#include "fsl_smc_hal.h"
-
-void sleep(void) {
-    smc_power_mode_protection_config_t sleep_config = {true};
-    smc_hal_config_power_mode_protection(&sleep_config);
-
-    SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
-    __WFI();
-}
-
-void deepsleep(void) {
-    mcg_clock_select_t mcg_clock = clock_get_clks();
-
-    smc_power_mode_protection_config_t sleep_config = {true};
-    smc_hal_config_power_mode_protection(&sleep_config);
-    SMC->PMCTRL = SMC_PMCTRL_STOPM(2);
-
-    //Deep sleep for ARM core:
-    SCB->SCR = 1 << SCB_SCR_SLEEPDEEP_Pos;
-
-    __WFI();
-
-    //Switch back to PLL as clock source if needed
-    //The interrupt that woke up the device will run at reduced speed
-    if (mcg_clock == kMcgClockSelectOut) {
-        if (clock_get_plls() == kMcgPllSelectPllcs) {
-            while (clock_get_lock0() == kMcgLockUnlocked);
-        }
-        clock_set_clks(kMcgClockSelectOut);
-    }
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/spi_api.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <math.h>
-#include "mbed_assert.h"
-
-#include "spi_api.h"
-#include "cmsis.h"
-#include "pinmap.h"
-#include "error.h"
-#include "fsl_clock_manager.h"
-#include "fsl_dspi_hal.h"
-
-static const PinMap PinMap_SPI_SCLK[] = {
-    {PTD1 , SPI_0, 2},
-    {PTE2 , SPI_1, 2},
-    {PTA15, SPI_0, 2},
-    {PTB11, SPI_1, 2},
-    {PTB21, SPI_2, 2},
-    {PTC5 , SPI_0, 2},
-    {PTD5 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-static const PinMap PinMap_SPI_MOSI[] = {
-    {PTD2 , SPI_0, 2},
-    {PTE1 , SPI_1, 2},
-    {PTE3 , SPI_1, 7},
-    {PTA16, SPI_0, 2},
-    {PTB16, SPI_1, 2},
-    {PTB22, SPI_2, 2},
-    {PTC6 , SPI_0, 2},
-    {PTD6 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-static const PinMap PinMap_SPI_MISO[] = {
-    {PTD3 , SPI_0, 2},
-    {PTE1 , SPI_1, 7},
-    {PTE3 , SPI_1, 2},
-    {PTA17, SPI_0, 2},
-    {PTB17, SPI_1, 2},
-    {PTB23, SPI_2, 2},
-    {PTC7 , SPI_0, 2},
-    {PTD7 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-static const PinMap PinMap_SPI_SSEL[] = {
-    {PTD0 , SPI_0, 2},
-    {PTE4 , SPI_1, 2},
-    {PTA14, SPI_0, 2},
-    {PTB10, SPI_1, 2},
-    {PTB20, SPI_2, 2},
-    {PTC4 , SPI_0, 2},
-    {PTD4 , SPI_1, 7},
-    {NC   , NC   , 0}
-};
-
-static void spi_set_delays(uint32_t instance) {
-    dspi_delay_settings_config_t delay_config;
-    delay_config.pcsToSck = 1;            /*!< PCS to SCK delay (CSSCK): initialize the scalar
-                                          *   value to '1' to provide the master with a little
-                                          *   more data-in read setup time.
-                                          */
-    delay_config.pcsToSckPre = 0;         /*!< PCS to SCK delay prescalar (PCSSCK) */
-    delay_config.afterSckPre = 0;         /*!< After SCK delay prescalar (PASC)*/
-    delay_config.afterSck = 0;            /*!< After SCK delay scalar (ASC)*/
-    delay_config.afterTransferPre = 0;    /*!< Delay after transfer prescalar (PDT)*/
-    delay_config.afterTransfer = 0;
-    dspi_hal_configure_delays(instance, kDspiCtar0, &delay_config);
-}
-
-void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel) {
-    // determine the SPI to use
-    uint32_t spi_mosi = pinmap_peripheral(mosi, PinMap_SPI_MOSI);
-    uint32_t spi_miso = pinmap_peripheral(miso, PinMap_SPI_MISO);
-    uint32_t spi_sclk = pinmap_peripheral(sclk, PinMap_SPI_SCLK);
-    uint32_t spi_ssel = pinmap_peripheral(ssel, PinMap_SPI_SSEL);
-    uint32_t spi_data = pinmap_merge(spi_mosi, spi_miso);
-    uint32_t spi_cntl = pinmap_merge(spi_sclk, spi_ssel);
-
-    obj->instance = pinmap_merge(spi_data, spi_cntl);
-    MBED_ASSERT((int)obj->instance != NC);
-
-    // enable power and clocking
-    clock_manager_set_gate(kClockModuleSPI, obj->instance, true);
-
-    dspi_hal_disable(obj->instance);
-    // set default format and frequency
-    if (ssel == NC) {
-        spi_format(obj, 8, 0, 0);  // 8 bits, mode 0, master
-    } else {
-        spi_format(obj, 8, 0, 1);  // 8 bits, mode 0, slave
-    }
-    spi_set_delays(obj->instance);
-    spi_frequency(obj, 1000000);
-
-    dspi_hal_enable(obj->instance);
-    dspi_hal_start_transfer(obj->instance);
-
-    // pin out the spi pins
-    pinmap_pinout(mosi, PinMap_SPI_MOSI);
-    pinmap_pinout(miso, PinMap_SPI_MISO);
-    pinmap_pinout(sclk, PinMap_SPI_SCLK);
-    if (ssel != NC) {
-        pinmap_pinout(ssel, PinMap_SPI_SSEL);
-    }
-}
-
-void spi_free(spi_t *obj) {
-    // [TODO]
-}
-void spi_format(spi_t *obj, int bits, int mode, int slave) {
-    dspi_data_format_config_t config = {0};
-    config.bitsPerFrame = (uint32_t)bits;
-    config.clkPolarity = (mode & 0x2) ? kDspiClockPolarity_ActiveLow : kDspiClockPolarity_ActiveHigh;
-    config.clkPhase = (mode & 0x1) ? kDspiClockPhase_SecondEdge : kDspiClockPhase_FirstEdge;
-    config.direction = kDspiMsbFirst;
-    dspi_status_t result = dspi_hal_configure_data_format(obj->instance, kDspiCtar0, &config);
-    if (result != kStatus_DSPI_Success) {
-        error("Failed to configure SPI data format");
-    }
-
-    if (slave) {
-        dspi_hal_set_master_slave(obj->instance, kDspiSlave);
-    } else {
-        dspi_hal_set_master_slave(obj->instance, kDspiMaster);
-    }
-}
-
-void spi_frequency(spi_t *obj, int hz) {
-    uint32_t busClock;
-    clock_manager_get_frequency(kBusClock, &busClock);
-    dspi_hal_set_baud(obj->instance, kDspiCtar0, (uint32_t)hz, busClock);
-}
-
-static inline int spi_writeable(spi_t * obj) {
-    return dspi_hal_get_status_flag(obj->instance, kDspiTxFifoFillRequest);
-}
-
-static inline int spi_readable(spi_t * obj) {
-    return dspi_hal_get_status_flag(obj->instance, kDspiRxFifoDrainRequest);
-}
-
-int spi_master_write(spi_t *obj, int value) {
-    // wait tx buffer empty
-    while(!spi_writeable(obj));
-    dspi_command_config_t command = {0};
-    command.isEndOfQueue = true;
-    command.isChipSelectContinuous = 0;
-    dspi_hal_write_data_master_mode(obj->instance, &command, (uint16_t)value);
-    dspi_hal_clear_status_flag(obj->instance, kDspiTxFifoFillRequest);
-
-    // wait rx buffer full
-    while (!spi_readable(obj));
-    dspi_hal_clear_status_flag(obj->instance, kDspiRxFifoDrainRequest);
-    return dspi_hal_read_data(obj->instance) & 0xff;
-}
-
-int spi_slave_receive(spi_t *obj) {
-    return spi_readable(obj);
-}
-
-int spi_slave_read(spi_t *obj) {
-    return dspi_hal_read_data(obj->instance);
-}
-
-void spi_slave_write(spi_t *obj, int value) {
-    while (!spi_writeable(obj));
-    dspi_hal_write_data_slave_mode(obj->instance, (uint32_t)value);
-}
--- a/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/us_ticker.c	Thu Jul 24 12:00:06 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <stddef.h>
-#include "us_ticker_api.h"
-#include "PeripheralNames.h"
-#include "fsl_pit_hal.h"
-#include "fsl_sim_hal.h"
-#include "fsl_clock_manager.h"
-#include "fsl_clock_configs.h"
-
-static void pit_init(void);
-static void lptmr_init(void);
-
-static int us_ticker_inited = 0;
-
-void us_ticker_init(void) {
-    if (us_ticker_inited) {
-        return;
-    }
-    us_ticker_inited = 1;
-
-    pit_init();
-    lptmr_init();
-}
-
-
-uint32_t us_ticker_read() {
-    if (!us_ticker_inited) {
-        us_ticker_init();
-    }
-
-    return ~(pit_hal_read_timer_count(1));
-}
-/******************************************************************************
- * Timer for us timing.
- ******************************************************************************/
-static void pit_init(void) {
-    uint32_t busClock;
-
-    clock_hal_set_gate(kSimClockModulePIT, 0, true);
-    pit_hal_enable();
-    clock_manager_get_frequency(kBusClock, &busClock);
-    pit_hal_set_timer_period_count(0, busClock / 1000000 - 1);
-    pit_hal_set_timer_period_count(1, 0xFFFFFFFF);
-    pit_hal_configure_timer_chain(1, true);
-
-    pit_hal_timer_start(0);
-    pit_hal_timer_start(1);
-}
-
-/******************************************************************************
- * Timer Event
- *
- * It schedules interrupts at given (32bit)us interval of time.
- * It is implemented used the 16bit Low Power Timer that remains powered in all
- * power modes.
- ******************************************************************************/
-static void lptmr_isr(void);
-
-static void lptmr_init(void) {
-    clock_hal_set_gate(kSimClockModuleLPTIMER, 0, true);
-
-    /* Set interrupt handler */
-    NVIC_SetVector(LPTimer_IRQn, (uint32_t)lptmr_isr);
-    NVIC_EnableIRQ(LPTimer_IRQn);
-
-    /* TODO: check clock manager, due to nonstandard 50 MHz */
-    //No suitable external oscillator clock -> Use fast internal oscillator (4MHz / divider)
-    MCG->C1 |= MCG_C1_IRCLKEN_MASK;
-    MCG->C2 |= MCG_C2_IRCS_MASK;
-    LPTMR0->PSR =  LPTMR_PSR_PCS(0);
-    switch (MCG->SC & MCG_SC_FCRDIV_MASK) {
-        case MCG_SC_FCRDIV(0):                  //4MHz
-            LPTMR0->PSR |= LPTMR_PSR_PRESCALE(1);
-            break;
-        case MCG_SC_FCRDIV(1):                  //2MHz
-            LPTMR0->PSR |= LPTMR_PSR_PRESCALE(0);
-            break;
-        default:                                //1MHz or anything else, in which case we put it on 1MHz
-            MCG->SC &= ~MCG_SC_FCRDIV_MASK;
-            MCG->SC |= MCG_SC_FCRDIV(2);
-            LPTMR0->PSR |= LPTMR_PSR_PBYP_MASK;
-    }
-}
-
-void us_ticker_disable_interrupt(void) {
-    BW_LPTMR_CSR_TIE(0);
-}
-
-void us_ticker_clear_interrupt(void) {
-    // we already clear interrupt in lptmr_isr
-}
-
-static uint32_t us_ticker_int_counter = 0;
-static uint16_t us_ticker_int_remainder = 0;
-
-static void lptmr_set(unsigned short count) {
-    HW_LPTMR_CSR_WR(0);
-    BW_LPTMR_CMR_COMPARE(count);
-    BW_LPTMR_CSR_TIE(1);
-    BW_LPTMR_CSR_TEN(1);
-}
-
-static void lptmr_isr(void) {
-    // write 1 to TCF to clear the LPT timer compare flag
-    BW_LPTMR_CSR_TCF(1);
-
-    if (us_ticker_int_counter > 0) {
-        lptmr_set(0xFFFF);
-        us_ticker_int_counter--;
-    } else {
-        if (us_ticker_int_remainder > 0) {
-            lptmr_set(us_ticker_int_remainder);
-            us_ticker_int_remainder = 0;
-        } else {
-            // This function is going to disable the interrupts if there are
-            // no other events in the queue
-            us_ticker_irq_handler();
-        }
-    }
-}
-
-void us_ticker_set_interrupt(unsigned int timestamp) {
-    int delta = (int)(timestamp - us_ticker_read());
-    if (delta <= 0) {
-        // This event was in the past:
-        us_ticker_irq_handler();
-        return;
-    }
-
-    us_ticker_int_counter   = (uint32_t)(delta >> 16);
-    us_ticker_int_remainder = (uint16_t)(0xFFFF & delta);
-    if (us_ticker_int_counter > 0) {
-        lptmr_set(0xFFFF);
-        us_ticker_int_counter--;
-    } else {
-        lptmr_set(us_ticker_int_remainder);
-        us_ticker_int_remainder = 0;
-    }
-}