/**************************************************************************//**
 * @file em_device.h
 * @brief CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories
 *        microcontroller devices
 *
 * This is a convenience header file for defining the part number on the
 * build command line, instead of specifying the part specific header file.
 *
 * @verbatim
 * Example: Add "-DEFM32G890F128" to your build options, to define part
 *          Add "#include "em_device.h" to your source files
 *
 *
 * @endverbatim
 * @version 5.1.2
 ******************************************************************************
 * @section License
 * <b>Copyright 2017 Silicon Laboratories, Inc. http://www.silabs.com</b>
 ******************************************************************************
 *
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
 *
 * 1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software.@n
 * 2. Altered source versions must be plainly marked as such, and must not be
 *    misrepresented as being the original software.@n
 * 3. This notice may not be removed or altered from any source distribution.
 *
 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Laboratories, Inc.
 * has no obligation to support this Software. Silicon Laboratories, Inc. is
 * providing the Software "AS IS", with no express or implied warranties of any
 * kind, including, but not limited to, any implied warranties of
 * merchantability or fitness for any particular purpose or warranties against
 * infringement of any proprietary rights of a third party.
 *
 * Silicon Laboratories, Inc. will not be liable for any consequential,
 * incidental, or special damages, or any other relief, or for any claim by
 * any third party, arising from your use of this Software.
 *
 *****************************************************************************/

#ifndef EM_DEVICE_H
#define EM_DEVICE_H

#if defined(EFM32WG230F128)
#include "efm32wg230f128.h"

#elif defined(EFM32WG230F256)
#include "efm32wg230f256.h"

#elif defined(EFM32WG230F64)
#include "efm32wg230f64.h"

#elif defined(EFM32WG232F128)
#include "efm32wg232f128.h"

#elif defined(EFM32WG232F256)
#include "efm32wg232f256.h"

#elif defined(EFM32WG232F64)
#include "efm32wg232f64.h"

#elif defined(EFM32WG280F128)
#include "efm32wg280f128.h"

#elif defined(EFM32WG280F256)
#include "efm32wg280f256.h"

#elif defined(EFM32WG280F64)
#include "efm32wg280f64.h"

#elif defined(EFM32WG290F128)
#include "efm32wg290f128.h"

#elif defined(EFM32WG290F256)
#include "efm32wg290f256.h"

#elif defined(EFM32WG290F64)
#include "efm32wg290f64.h"

#elif defined(EFM32WG295F128)
#include "efm32wg295f128.h"

#elif defined(EFM32WG295F256)
#include "efm32wg295f256.h"

#elif defined(EFM32WG295F64)
#include "efm32wg295f64.h"

#elif defined(EFM32WG330F128)
#include "efm32wg330f128.h"

#elif defined(EFM32WG330F256)
#include "efm32wg330f256.h"

#elif defined(EFM32WG330F64)
#include "efm32wg330f64.h"

#elif defined(EFM32WG332F128)
#include "efm32wg332f128.h"

#elif defined(EFM32WG332F256)
#include "efm32wg332f256.h"

#elif defined(EFM32WG332F64)
#include "efm32wg332f64.h"

#elif defined(EFM32WG360F128)
#include "efm32wg360f128.h"

#elif defined(EFM32WG360F256)
#include "efm32wg360f256.h"

#elif defined(EFM32WG360F64)
#include "efm32wg360f64.h"

#elif defined(EFM32WG380F128)
#include "efm32wg380f128.h"

#elif defined(EFM32WG380F256)
#include "efm32wg380f256.h"

#elif defined(EFM32WG380F64)
#include "efm32wg380f64.h"

#elif defined(EFM32WG390F128)
#include "efm32wg390f128.h"

#elif defined(EFM32WG390F256)
#include "efm32wg390f256.h"

#elif defined(EFM32WG390F64)
#include "efm32wg390f64.h"

#elif defined(EFM32WG395F128)
#include "efm32wg395f128.h"

#elif defined(EFM32WG395F256)
#include "efm32wg395f256.h"

#elif defined(EFM32WG395F64)
#include "efm32wg395f64.h"

#elif defined(EFM32WG840F128)
#include "efm32wg840f128.h"

#elif defined(EFM32WG840F256)
#include "efm32wg840f256.h"

#elif defined(EFM32WG840F64)
#include "efm32wg840f64.h"

#elif defined(EFM32WG842F128)
#include "efm32wg842f128.h"

#elif defined(EFM32WG842F256)
#include "efm32wg842f256.h"

#elif defined(EFM32WG842F64)
#include "efm32wg842f64.h"

#elif defined(EFM32WG880F128)
#include "efm32wg880f128.h"

#elif defined(EFM32WG880F256)
#include "efm32wg880f256.h"

#elif defined(EFM32WG880F64)
#include "efm32wg880f64.h"

#elif defined(EFM32WG890F128)
#include "efm32wg890f128.h"

#elif defined(EFM32WG890F256)
#include "efm32wg890f256.h"

#elif defined(EFM32WG890F64)
#include "efm32wg890f64.h"

#elif defined(EFM32WG895F128)
#include "efm32wg895f128.h"

#elif defined(EFM32WG895F256)
#include "efm32wg895f256.h"

#elif defined(EFM32WG895F64)
#include "efm32wg895f64.h"

#elif defined(EFM32WG900F256)
#include "efm32wg900f256.h"

#elif defined(EFM32WG940F128)
#include "efm32wg940f128.h"

#elif defined(EFM32WG940F256)
#include "efm32wg940f256.h"

#elif defined(EFM32WG940F64)
#include "efm32wg940f64.h"

#elif defined(EFM32WG942F128)
#include "efm32wg942f128.h"

#elif defined(EFM32WG942F256)
#include "efm32wg942f256.h"

#elif defined(EFM32WG942F64)
#include "efm32wg942f64.h"

#elif defined(EFM32WG980F128)
#include "efm32wg980f128.h"

#elif defined(EFM32WG980F256)
#include "efm32wg980f256.h"

#elif defined(EFM32WG980F64)
#include "efm32wg980f64.h"

#elif defined(EFM32WG990F128)
#include "efm32wg990f128.h"

#elif defined(EFM32WG990F256)
#include "efm32wg990f256.h"

#elif defined(EFM32WG990F64)
#include "efm32wg990f64.h"

#elif defined(EFM32WG995F128)
#include "efm32wg995f128.h"

#elif defined(EFM32WG995F256)
#include "efm32wg995f256.h"

#elif defined(EFM32WG995F64)
#include "efm32wg995f64.h"

#else
#error "em_device.h: PART NUMBER undefined"
#endif
#endif /* EM_DEVICE_H */
