/*
 * Copyright (c) 2023, Texas Instruments Incorporated - http://www.ti.com
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * *  Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * *  Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * *  Neither the name of Texas Instruments Incorporated nor the names of
 *    its contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 *  ============ ti_msp_dl_config.h =============
 *  Configured MSPM0 DriverLib module declarations
 *
 *  DO NOT EDIT - This file is generated for the MSPM0L222X
 *  by the SysConfig tool.
 */
#ifndef ti_msp_dl_config_h
#define ti_msp_dl_config_h

#define CONFIG_MSPM0L222X
#define CONFIG_MSPM0L2228

#if defined(__ti_version__) || defined(__TI_COMPILER_VERSION__)
#define SYSCONFIG_WEAK __attribute__((weak))
#elif defined(__IAR_SYSTEMS_ICC__)
#define SYSCONFIG_WEAK __weak
#elif defined(__GNUC__)
#define SYSCONFIG_WEAK __attribute__((weak))
#endif

#include <ti/devices/msp/msp.h>
#include <ti/driverlib/driverlib.h>
#include <ti/driverlib/m0p/dl_core.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
 *  ======== SYSCFG_DL_init ========
 *  Perform all required MSP DL initialization
 *
 *  This function should be called once at a point before any use of
 *  MSP DL.
 */


/* clang-format off */

#define POWER_STARTUP_DELAY                                                (16)


#define CPUCLK_FREQ                                                     32000000




/* Defines for I2C */
#define I2C_INST                                                            I2C0
#define I2C_INST_IRQHandler                                      I2C0_IRQHandler
#define I2C_INST_INT_IRQN                                          I2C0_INT_IRQn
#define I2C_BUS_SPEED_HZ                                                  100000
#define GPIO_I2C_SDA_PORT                                                  GPIOB
#define GPIO_I2C_SDA_PIN                                           DL_GPIO_PIN_1
#define GPIO_I2C_IOMUX_SDA                                       (IOMUX_PINCM13)
#define GPIO_I2C_IOMUX_SDA_FUNC                        IOMUX_PINCM13_PF_I2C0_SDA
#define GPIO_I2C_SCL_PORT                                                  GPIOB
#define GPIO_I2C_SCL_PIN                                           DL_GPIO_PIN_0
#define GPIO_I2C_IOMUX_SCL                                       (IOMUX_PINCM12)
#define GPIO_I2C_IOMUX_SCL_FUNC                        IOMUX_PINCM12_PF_I2C0_SCL


/* Defines for CONSOLE_UART */
#define CONSOLE_UART_INST                                                  UART0
#define CONSOLE_UART_INST_FREQUENCY                                     32000000
#define CONSOLE_UART_INST_IRQHandler                            UART0_IRQHandler
#define CONSOLE_UART_INST_INT_IRQN                                UART0_INT_IRQn
#define GPIO_CONSOLE_UART_RX_PORT                                          GPIOA
#define GPIO_CONSOLE_UART_TX_PORT                                          GPIOA
#define GPIO_CONSOLE_UART_RX_PIN                                   DL_GPIO_PIN_1
#define GPIO_CONSOLE_UART_TX_PIN                                   DL_GPIO_PIN_0
#define GPIO_CONSOLE_UART_IOMUX_RX                                (IOMUX_PINCM2)
#define GPIO_CONSOLE_UART_IOMUX_TX                                (IOMUX_PINCM1)
#define GPIO_CONSOLE_UART_IOMUX_RX_FUNC                 IOMUX_PINCM2_PF_UART0_RX
#define GPIO_CONSOLE_UART_IOMUX_TX_FUNC                 IOMUX_PINCM1_PF_UART0_TX
#define CONSOLE_UART_BAUD_RATE                                          (115200)
#define CONSOLE_UART_IBRD_32_MHZ_115200_BAUD                                (17)
#define CONSOLE_UART_FBRD_32_MHZ_115200_BAUD                                (23)
/* Defines for NBIOT_UART */
#define NBIOT_UART_INST                                                    UART3
#define NBIOT_UART_INST_FREQUENCY                                       32000000
#define NBIOT_UART_INST_IRQHandler                              UART3_IRQHandler
#define NBIOT_UART_INST_INT_IRQN                                  UART3_INT_IRQn
#define GPIO_NBIOT_UART_RX_PORT                                            GPIOB
#define GPIO_NBIOT_UART_TX_PORT                                            GPIOB
#define GPIO_NBIOT_UART_RX_PIN                                    DL_GPIO_PIN_13
#define GPIO_NBIOT_UART_TX_PIN                                    DL_GPIO_PIN_12
#define GPIO_NBIOT_UART_IOMUX_RX                                 (IOMUX_PINCM34)
#define GPIO_NBIOT_UART_IOMUX_TX                                 (IOMUX_PINCM33)
#define GPIO_NBIOT_UART_IOMUX_RX_FUNC                  IOMUX_PINCM34_PF_UART3_RX
#define GPIO_NBIOT_UART_IOMUX_TX_FUNC                  IOMUX_PINCM33_PF_UART3_TX
#define NBIOT_UART_BAUD_RATE                                            (115200)
#define NBIOT_UART_IBRD_32_MHZ_115200_BAUD                                  (17)
#define NBIOT_UART_FBRD_32_MHZ_115200_BAUD                                  (23)
/* Defines for BLE_UART */
#define BLE_UART_INST                                                      UART2
#define BLE_UART_INST_FREQUENCY                                         32000000
#define BLE_UART_INST_IRQHandler                                UART2_IRQHandler
#define BLE_UART_INST_INT_IRQN                                    UART2_INT_IRQn
#define GPIO_BLE_UART_RX_PORT                                              GPIOA
#define GPIO_BLE_UART_TX_PORT                                              GPIOA
#define GPIO_BLE_UART_RX_PIN                                      DL_GPIO_PIN_22
#define GPIO_BLE_UART_TX_PIN                                      DL_GPIO_PIN_21
#define GPIO_BLE_UART_IOMUX_RX                                   (IOMUX_PINCM57)
#define GPIO_BLE_UART_IOMUX_TX                                   (IOMUX_PINCM56)
#define GPIO_BLE_UART_IOMUX_RX_FUNC                    IOMUX_PINCM57_PF_UART2_RX
#define GPIO_BLE_UART_IOMUX_TX_FUNC                    IOMUX_PINCM56_PF_UART2_TX
#define BLE_UART_BAUD_RATE                                              (115200)
#define BLE_UART_IBRD_32_MHZ_115200_BAUD                                    (17)
#define BLE_UART_FBRD_32_MHZ_115200_BAUD                                    (23)
/* Defines for IR_UART */
#define IR_UART_INST                                                       UART1
#define IR_UART_INST_FREQUENCY                                          32000000
#define IR_UART_INST_IRQHandler                                 UART1_IRQHandler
#define IR_UART_INST_INT_IRQN                                     UART1_INT_IRQn
#define GPIO_IR_UART_RX_PORT                                               GPIOC
#define GPIO_IR_UART_TX_PORT                                               GPIOC
#define GPIO_IR_UART_RX_PIN                                        DL_GPIO_PIN_1
#define GPIO_IR_UART_TX_PIN                                        DL_GPIO_PIN_0
#define GPIO_IR_UART_IOMUX_RX                                    (IOMUX_PINCM44)
#define GPIO_IR_UART_IOMUX_TX                                    (IOMUX_PINCM43)
#define GPIO_IR_UART_IOMUX_RX_FUNC                     IOMUX_PINCM44_PF_UART1_RX
#define GPIO_IR_UART_IOMUX_TX_FUNC                     IOMUX_PINCM43_PF_UART1_TX
#define IR_UART_BAUD_RATE                                               (115200)
#define IR_UART_IBRD_32_MHZ_115200_BAUD                                     (17)
#define IR_UART_FBRD_32_MHZ_115200_BAUD                                     (23)





/* Defines for SUPPLY_SOH_ADC */
#define SUPPLY_SOH_ADC_INST                                                 ADC0
#define SUPPLY_SOH_ADC_INST_IRQHandler                           ADC0_IRQHandler
#define SUPPLY_SOH_ADC_INST_INT_IRQN                             (ADC0_INT_IRQn)
#define SUPPLY_SOH_ADC_ADCMEM_BATT_SOH_ADC                      DL_ADC12_MEM_IDX_0
#define SUPPLY_SOH_ADC_ADCMEM_BATT_SOH_ADC_REF         DL_ADC12_REFERENCE_VOLTAGE_VDDA
#define SUPPLY_SOH_ADC_ADCMEM_BATT_SOH_ADC_REF_VOLTAGE_V                                     3.3
#define SUPPLY_SOH_ADC_ADCMEM_VALVE_CURRENT_ADC                      DL_ADC12_MEM_IDX_1
#define SUPPLY_SOH_ADC_ADCMEM_VALVE_CURRENT_ADC_REF         DL_ADC12_REFERENCE_VOLTAGE_VDDA
#define SUPPLY_SOH_ADC_ADCMEM_VALVE_CURRENT_ADC_REF_VOLTAGE_V                                     3.3
#define SUPPLY_SOH_ADC_ADCMEM_SUPERCAP_SOH_ADC                      DL_ADC12_MEM_IDX_2
#define SUPPLY_SOH_ADC_ADCMEM_SUPERCAP_SOH_ADC_REF         DL_ADC12_REFERENCE_VOLTAGE_VDDA
#define SUPPLY_SOH_ADC_ADCMEM_SUPERCAP_SOH_ADC_REF_VOLTAGE_V                                     3.3
#define GPIO_SUPPLY_SOH_ADC_C9_PORT                                        GPIOB
#define GPIO_SUPPLY_SOH_ADC_C9_PIN                                DL_GPIO_PIN_19
#define GPIO_SUPPLY_SOH_ADC_IOMUX_C9                             (IOMUX_PINCM55)
#define GPIO_SUPPLY_SOH_ADC_IOMUX_C9_FUNC         (IOMUX_PINCM55_PF_UNCONNECTED)
#define GPIO_SUPPLY_SOH_ADC_C15_PORT                                       GPIOA
#define GPIO_SUPPLY_SOH_ADC_C15_PIN                               DL_GPIO_PIN_15
#define GPIO_SUPPLY_SOH_ADC_IOMUX_C15                            (IOMUX_PINCM41)
#define GPIO_SUPPLY_SOH_ADC_IOMUX_C15_FUNC        (IOMUX_PINCM41_PF_UNCONNECTED)



/* Defines for LCD_BACKLIGHT: GPIOB.18 with pinCMx 54 on package pin 59 */
#define EXT_OUT_LCD_BACKLIGHT_PORT                                       (GPIOB)
#define EXT_OUT_LCD_BACKLIGHT_PIN                               (DL_GPIO_PIN_18)
#define EXT_OUT_LCD_BACKLIGHT_IOMUX                              (IOMUX_PINCM54)
/* Defines for IN2_VALVE: GPIOA.17 with pinCMx 49 on package pin 54 */
#define EXT_OUT_IN2_VALVE_PORT                                           (GPIOA)
#define EXT_OUT_IN2_VALVE_PIN                                   (DL_GPIO_PIN_17)
#define EXT_OUT_IN2_VALVE_IOMUX                                  (IOMUX_PINCM49)
/* Defines for IN1_VALVE: GPIOC.5 with pinCMx 48 on package pin 53 */
#define EXT_OUT_IN1_VALVE_PORT                                           (GPIOC)
#define EXT_OUT_IN1_VALVE_PIN                                    (DL_GPIO_PIN_5)
#define EXT_OUT_IN1_VALVE_IOMUX                                  (IOMUX_PINCM48)
/* Defines for EEPROM_LOAD_SW: GPIOA.10 with pinCMx 25 on package pin 28 */
#define EXT_OUT_EEPROM_LOAD_SW_PORT                                      (GPIOA)
#define EXT_OUT_EEPROM_LOAD_SW_PIN                              (DL_GPIO_PIN_10)
#define EXT_OUT_EEPROM_LOAD_SW_IOMUX                             (IOMUX_PINCM25)
/* Defines for IOT_LOAD_SW: GPIOB.15 with pinCMx 36 on package pin 39 */
#define EXT_OUT_IOT_LOAD_SW_PORT                                         (GPIOB)
#define EXT_OUT_IOT_LOAD_SW_PIN                                 (DL_GPIO_PIN_15)
#define EXT_OUT_IOT_LOAD_SW_IOMUX                                (IOMUX_PINCM36)
/* Defines for BATTERY_LOAD_SW: GPIOA.11 with pinCMx 26 on package pin 29 */
#define EXT_OUT_BATTERY_LOAD_SW_PORT                                     (GPIOA)
#define EXT_OUT_BATTERY_LOAD_SW_PIN                             (DL_GPIO_PIN_11)
#define EXT_OUT_BATTERY_LOAD_SW_IOMUX                            (IOMUX_PINCM26)
/* Defines for SUPER_CAP_LOAD_SW: GPIOA.6 with pinCMx 11 on package pin 14 */
#define EXT_OUT_SUPER_CAP_LOAD_SW_PORT                                   (GPIOA)
#define EXT_OUT_SUPER_CAP_LOAD_SW_PIN                            (DL_GPIO_PIN_6)
#define EXT_OUT_SUPER_CAP_LOAD_SW_IOMUX                          (IOMUX_PINCM11)
/* Defines for PULSE_LED: GPIOB.17 with pinCMx 53 on package pin 58 */
#define EXT_OUT_PULSE_LED_PORT                                           (GPIOB)
#define EXT_OUT_PULSE_LED_PIN                                   (DL_GPIO_PIN_17)
#define EXT_OUT_PULSE_LED_IOMUX                                  (IOMUX_PINCM53)
/* Defines for CAP_TOUCH_1: GPIOB.10 with pinCMx 31 on package pin 34 */
#define EXT_IN_CAP_TOUCH_1_PORT                                          (GPIOB)
// pins affected by this interrupt request:["CAP_TOUCH_1","H1_SENSOR","TILT_TAMPER","BATTERY_DETECT","BLE_OUT_INT","CAP_TOUCH_2"]
#define EXT_IN_GPIOB_INT_IRQN                                   (GPIOB_INT_IRQn)
#define EXT_IN_GPIOB_INT_IIDX                   (DL_INTERRUPT_GROUP1_IIDX_GPIOB)
#define EXT_IN_CAP_TOUCH_1_IIDX                             (DL_GPIO_IIDX_DIO10)
#define EXT_IN_CAP_TOUCH_1_PIN                                  (DL_GPIO_PIN_10)
#define EXT_IN_CAP_TOUCH_1_IOMUX                                 (IOMUX_PINCM31)
/* Defines for H2_SENSOR: GPIOA.7 with pinCMx 14 on package pin 17 */
#define EXT_IN_H2_SENSOR_PORT                                            (GPIOA)
// pins affected by this interrupt request:["H2_SENSOR","MAGNET_TAMPER","BATTERY_COVER_TAMPER"]
#define EXT_IN_GPIOA_INT_IRQN                                   (GPIOA_INT_IRQn)
#define EXT_IN_GPIOA_INT_IIDX                   (DL_INTERRUPT_GROUP1_IIDX_GPIOA)
#define EXT_IN_H2_SENSOR_IIDX                                (DL_GPIO_IIDX_DIO7)
#define EXT_IN_H2_SENSOR_PIN                                     (DL_GPIO_PIN_7)
#define EXT_IN_H2_SENSOR_IOMUX                                   (IOMUX_PINCM14)
/* Defines for H1_SENSOR: GPIOB.2 with pinCMx 15 on package pin 18 */
#define EXT_IN_H1_SENSOR_PORT                                            (GPIOB)
#define EXT_IN_H1_SENSOR_IIDX                                (DL_GPIO_IIDX_DIO2)
#define EXT_IN_H1_SENSOR_PIN                                     (DL_GPIO_PIN_2)
#define EXT_IN_H1_SENSOR_IOMUX                                   (IOMUX_PINCM15)
/* Defines for MAGNET_TAMPER: GPIOA.18 with pinCMx 50 on package pin 55 */
#define EXT_IN_MAGNET_TAMPER_PORT                                        (GPIOA)
#define EXT_IN_MAGNET_TAMPER_IIDX                           (DL_GPIO_IIDX_DIO18)
#define EXT_IN_MAGNET_TAMPER_PIN                                (DL_GPIO_PIN_18)
#define EXT_IN_MAGNET_TAMPER_IOMUX                               (IOMUX_PINCM50)
/* Defines for TILT_TAMPER: GPIOB.6 with pinCMx 27 on package pin 30 */
#define EXT_IN_TILT_TAMPER_PORT                                          (GPIOB)
#define EXT_IN_TILT_TAMPER_IIDX                              (DL_GPIO_IIDX_DIO6)
#define EXT_IN_TILT_TAMPER_PIN                                   (DL_GPIO_PIN_6)
#define EXT_IN_TILT_TAMPER_IOMUX                                 (IOMUX_PINCM27)
/* Defines for MAIN_COVER_OPEN: GPIOC.2 with pinCMx 45 on package pin 50 */
#define EXT_IN_MAIN_COVER_OPEN_PORT                                      (GPIOC)
// pins affected by this interrupt request:["MAIN_COVER_OPEN","LORA_IN_INT"]
#define EXT_IN_GPIOC_INT_IRQN                                   (GPIOC_INT_IRQn)
#define EXT_IN_GPIOC_INT_IIDX                   (DL_INTERRUPT_GROUP1_IIDX_GPIOC)
#define EXT_IN_MAIN_COVER_OPEN_IIDX                          (DL_GPIO_IIDX_DIO2)
#define EXT_IN_MAIN_COVER_OPEN_PIN                               (DL_GPIO_PIN_2)
#define EXT_IN_MAIN_COVER_OPEN_IOMUX                             (IOMUX_PINCM45)
/* Defines for BATTERY_DETECT: GPIOB.9 with pinCMx 30 on package pin 33 */
#define EXT_IN_BATTERY_DETECT_PORT                                       (GPIOB)
#define EXT_IN_BATTERY_DETECT_IIDX                           (DL_GPIO_IIDX_DIO9)
#define EXT_IN_BATTERY_DETECT_PIN                                (DL_GPIO_PIN_9)
#define EXT_IN_BATTERY_DETECT_IOMUX                              (IOMUX_PINCM30)
/* Defines for BLE_OUT_INT: GPIOB.8 with pinCMx 29 on package pin 32 */
#define EXT_IN_BLE_OUT_INT_PORT                                          (GPIOB)
#define EXT_IN_BLE_OUT_INT_IIDX                              (DL_GPIO_IIDX_DIO8)
#define EXT_IN_BLE_OUT_INT_PIN                                   (DL_GPIO_PIN_8)
#define EXT_IN_BLE_OUT_INT_IOMUX                                 (IOMUX_PINCM29)
/* Defines for LORA_IN_INT: GPIOC.4 with pinCMx 47 on package pin 52 */
#define EXT_IN_LORA_IN_INT_PORT                                          (GPIOC)
#define EXT_IN_LORA_IN_INT_IIDX                              (DL_GPIO_IIDX_DIO4)
#define EXT_IN_LORA_IN_INT_PIN                                   (DL_GPIO_PIN_4)
#define EXT_IN_LORA_IN_INT_IOMUX                                 (IOMUX_PINCM47)
/* Defines for BATTERY_COVER_TAMPER: GPIOA.16 with pinCMx 42 on package pin 45 */
#define EXT_IN_BATTERY_COVER_TAMPER_PORT                                 (GPIOA)
#define EXT_IN_BATTERY_COVER_TAMPER_IIDX                    (DL_GPIO_IIDX_DIO16)
#define EXT_IN_BATTERY_COVER_TAMPER_PIN                         (DL_GPIO_PIN_16)
#define EXT_IN_BATTERY_COVER_TAMPER_IOMUX                        (IOMUX_PINCM42)
/* Defines for CAP_TOUCH_2: GPIOB.11 with pinCMx 32 on package pin 35 */
#define EXT_IN_CAP_TOUCH_2_PORT                                          (GPIOB)
#define EXT_IN_CAP_TOUCH_2_IIDX                             (DL_GPIO_IIDX_DIO11)
#define EXT_IN_CAP_TOUCH_2_PIN                                  (DL_GPIO_PIN_11)
#define EXT_IN_CAP_TOUCH_2_IOMUX                                 (IOMUX_PINCM32)


/* Defines for AESADV */
#define AES_BLOCK_SIZE                                                     (16)
#define AES_KEY_SIZE                                                       (16)



/* Defines for LCD */
#define LCD_IRQHandler                                            LCD_IRQHandler
#define LCD_INT_IRQN                                                LCD_INT_IRQn


/* clang-format on */

void SYSCFG_DL_init(void);
void SYSCFG_DL_initPower(void);
void SYSCFG_DL_GPIO_init(void);
void SYSCFG_DL_SYSCTL_init(void);
void SYSCFG_DL_I2C_init(void);
void SYSCFG_DL_CONSOLE_UART_init(void);
void SYSCFG_DL_NBIOT_UART_init(void);
void SYSCFG_DL_BLE_UART_init(void);
void SYSCFG_DL_IR_UART_init(void);
void SYSCFG_DL_SUPPLY_SOH_ADC_init(void);

void SYSCFG_DL_AESADV_init(void);
void SYSCFG_DL_LCD_init(void);


#ifdef __cplusplus
}
#endif

#endif /* ti_msp_dl_config_h */
