Repostiory containing DAPLink source code with Reset Pin workaround for HANI_IOT board.

Upstream: https://github.com/ARMmbed/DAPLink

Revision:
0:01f31e923fe2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/hic_hal/nxp/lpc4322/lpc43xx_cgu.h	Tue Apr 07 12:55:42 2020 +0200
@@ -0,0 +1,265 @@
+/**
+ * @file    lpc43xx_cgu.h
+ * @brief   
+ *
+ * DAPLink Interface Firmware
+ * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * 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.
+ */
+
+/* Peripheral group ----------------------------------------------------------- */
+/** @defgroup CGU CGU (Clock Generation Unit)
+ * @ingroup LPC4300CMSIS_FwLib_Drivers
+ * @{
+ */
+
+#ifndef lpc43xx_CGU_H_
+#define lpc43xx_CGU_H_
+
+/* Includes ------------------------------------------------------------------- */
+#include "LPC43xx.h"
+#include "lpc_types.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+/* Private Macros -------------------------------------------------------------- */
+/** @defgroup CGU_Private_Macros CGU Private Macros
+ * @{
+ */
+
+/** Branch clocks from CGU_BASE_SAFE */
+#define CGU_ENTITY_NONE				CGU_ENTITY_NUM
+
+/** Check bit at specific position is clear or not */
+#define ISBITCLR(x,bit) 			((x&(1<<bit))^(1<<bit))
+/** Check bit at specific position is set or not */
+#define ISBITSET(x,bit) 			(x&(1<<bit))
+/** Set mask */
+#define ISMASKSET(x,mask) 			(x&mask)
+
+/** CGU number of clock source */
+#define CGU_CLKSRC_NUM (CGU_CLKSRC_IDIVE+1)
+
+/*********************************************************************//**
+ * Macro defines for CGU control mask bit definitions
+ **********************************************************************/
+/** CGU control enable mask bit */
+#define CGU_CTRL_EN_MASK			1
+/** CGU control clock-source mask bit */
+#define CGU_CTRL_SRC_MASK			(0xF<<24)
+/** CGU control auto block mask bit */
+#define CGU_CTRL_AUTOBLOCK_MASK		(1<<11)
+
+/*********************************************************************//**
+ * Macro defines for CGU PLL1 mask bit definitions
+ **********************************************************************/
+/** CGU PLL1 feedback select mask bit */
+#define CGU_PLL1_FBSEL_MASK			(1<<6)
+/** CGU PLL1 Input clock bypass control mask bit */
+#define CGU_PLL1_BYPASS_MASK		(1<<1)
+/** CGU PLL1 direct CCO output mask bit */
+#define CGU_PLL1_DIRECT_MASK		(1<<7)
+
+/**
+ * @}
+ */
+
+/* Public Types --------------------------------------------------------------- */
+/** @defgroup CGU_Public_Types CGU Public Types
+ * @{
+ */
+
+/*********************************************************************//**
+ * @brief CGU enumeration
+ **********************************************************************/
+/*
+ * @brief	CGU clock source enumerate definition
+ */
+typedef enum {
+    /* Clock Source */
+    CGU_CLKSRC_32KHZ_OSC = 0,					/**< 32KHz oscillator clock source 	*/
+    CGU_CLKSRC_IRC,								/**< IRC 12 Mhz clock source 		*/
+    CGU_CLKSRC_ENET_RX_CLK,						/**< Ethernet receive clock source 	*/
+    CGU_CLKSRC_ENET_TX_CLK,						/**< Ethernet transmit clock source */
+    CGU_CLKSRC_GP_CLKIN,						/**< General purpose clock source 	*/
+    CGU_CLKSRC_TCK,								/**< TCK clock source 				*/
+    CGU_CLKSRC_XTAL_OSC,						/**< Crystal oscillator clock source*/
+    CGU_CLKSRC_PLL0,							/**< PLL0 (USB0) clock source		*/
+    CGU_CLKSRC_PLL0_AUDIO,
+    CGU_CLKSRC_PLL1,							/**< PLL1 clock source				*/
+    CGU_CLKSRC_IDIVA = CGU_CLKSRC_PLL1 + 3,		/**< IDIVA clock source				*/
+    CGU_CLKSRC_IDIVB,							/**< IDIVB clock source				*/
+    CGU_CLKSRC_IDIVC,							/**< IDIVC clock source				*/
+    CGU_CLKSRC_IDIVD,							/**< IDIVD clock source				*/
+    CGU_CLKSRC_IDIVE,							/**< IDIVE clock source				*/
+
+    /* Base */
+    CGU_BASE_SAFE,								/**< Base save clock (always on) for WDT */
+    CGU_BASE_USB0,								/**< USB0 base clock 				*/
+    CGU_BASE_PERIPH,							/**  Peripheral bus (SGPIO)			*/
+    CGU_BASE_USB1,								/**< USB1 base clock 				*/
+    CGU_BASE_M4,								/**< ARM Cortex-M4 Core base clock 	*/
+    CGU_BASE_SPIFI,								/**< SPIFI base clock				*/
+    CGU_BASE_PHY_RX = CGU_BASE_SPIFI + 2, 							/**< Ethernet PHY Rx base clock		*/
+    CGU_BASE_PHY_TX,							/**< Ethernet PHY Tx base clock		*/
+    CGU_BASE_APB1,								/**< APB peripheral block #1 base clock	*/
+    CGU_BASE_APB3,								/**< APB peripheral block #3 base clock	*/
+    CGU_BASE_LCD,								/**< LCD base clock					*/
+    CGU_BASE_ENET_CSR,
+    CGU_BASE_SDIO,								/**< SDIO base clock				*/
+    CGU_BASE_SSP0,								/**< SSP0 base clock				*/
+    CGU_BASE_SSP1,								/**< SSP1 base clock				*/
+    CGU_BASE_UART0,								/**< UART0 base clock				*/
+    CGU_BASE_UART1,								/**< UART1 base clock				*/
+    CGU_BASE_UART2,								/**< UART2 base clock				*/
+    CGU_BASE_UART3,								/**< UART3 base clock				*/
+    CGU_BASE_CLKOUT,							/**< CLKOUT base clock				*/
+    CGU_BASE_APLL = CGU_BASE_CLKOUT + 5,
+    CGU_BASE_OUT0,
+    CGU_BASE_OUT1,
+    CGU_ENTITY_NUM								/**< Number or clock source entity	*/
+} CGU_ENTITY_T;
+
+/*
+ * @brief 	CGU PPL0 mode enumerate definition
+ */
+typedef enum {
+    CGU_PLL0_MODE_1d = 0,
+    CGU_PLL0_MODE_1c,
+    CGU_PLL0_MODE_1b,
+    CGU_PLL0_MODE_1a
+} CGU_PLL0_MODE;
+
+/*
+ * @brief 	CGU peripheral enumerate definition
+ */
+typedef enum {
+    CGU_PERIPHERAL_ADC0 = 0,					/**< ADC0 		*/
+    CGU_PERIPHERAL_ADC1,						/**< ADC1 		*/
+    CGU_PERIPHERAL_AES,							/**< AES		*/
+//	CGU_PERIPHERAL_ALARMTIMER_CGU_RGU_RTC_WIC,
+    CGU_PERIPHERAL_APB1_BUS,					/**< APB1 bus			*/
+    CGU_PERIPHERAL_APB3_BUS,					/**< APB3 bus			*/
+    CGU_PERIPHERAL_CAN,							/**< CAN 				*/
+    CGU_PERIPHERAL_CREG,						/**< CREG				*/
+    CGU_PERIPHERAL_DAC,							/**< DAC				*/
+    CGU_PERIPHERAL_DMA,							/**< DMA				*/
+    CGU_PERIPHERAL_EMC,							/**< EMC				*/
+    CGU_PERIPHERAL_ETHERNET,					/**< Ethernet			*/
+    CGU_PERIPHERAL_ETHERNET_TX, //HIDE			/**< Ethernet transmit 	*/
+    CGU_PERIPHERAL_GPIO,						/**< GPIO				*/
+    CGU_PERIPHERAL_I2C0,						/**< I2C0				*/
+    CGU_PERIPHERAL_I2C1,						/**< I2C1				*/
+    CGU_PERIPHERAL_I2S,							/**< I2S				*/
+    CGU_PERIPHERAL_LCD,							/**< LCD				*/
+    CGU_PERIPHERAL_M4CORE,						/**< ARM Cortex-M4 Core	*/
+    CGU_PERIPHERAL_M4_BUS,						/**< ARM Cortex-M4 Bus	*/
+    CGU_PERIPHERAL_MOTOCON,						/**< Motor Control 		*/
+    CGU_PERIPHERAL_QEI,							/**< QEI				*/
+    CGU_PERIPHERAL_RITIMER,						/**< RIT Timer			*/
+    CGU_PERIPHERAL_SCT,							/**< SCT				*/
+    CGU_PERIPHERAL_SCU,							/**< SCU				*/
+    CGU_PERIPHERAL_SDIO,						/**< SDIO				*/
+    CGU_PERIPHERAL_SPIFI,						/**< SPIFI				*/
+    CGU_PERIPHERAL_SSP0,						/**< SSP0				*/
+    CGU_PERIPHERAL_SSP1,						/**< SSP1				*/
+    CGU_PERIPHERAL_TIMER0,						/**< TIMER 0 			*/
+    CGU_PERIPHERAL_TIMER1,						/**< TIMER 1			*/
+    CGU_PERIPHERAL_TIMER2,						/**< TIMER 2			*/
+    CGU_PERIPHERAL_TIMER3,						/**< TIMER 3			*/
+    CGU_PERIPHERAL_UART0,						/**< UART0				*/
+    CGU_PERIPHERAL_UART1,						/**< UART1				*/
+    CGU_PERIPHERAL_UART2,						/**< UART2				*/
+    CGU_PERIPHERAL_UART3,						/**< UART3				*/
+    CGU_PERIPHERAL_USB0,						/**< USB0				*/
+    CGU_PERIPHERAL_USB1,						/**< USB1				*/
+    CGU_PERIPHERAL_WWDT,						/**< WWDT				*/
+    CGU_PERIPHERAL_NUM
+} CGU_PERIPHERAL_T;
+
+/**
+ *  @brief	CGU error status enumerate definition
+ */
+typedef enum {
+    CGU_ERROR_SUCCESS = 0,
+    CGU_ERROR_CONNECT_TOGETHER,
+    CGU_ERROR_INVALID_ENTITY,
+    CGU_ERROR_INVALID_CLOCK_SOURCE,
+    CGU_ERROR_INVALID_PARAM,
+    CGU_ERROR_FREQ_OUTOF_RANGE
+} CGU_ERROR;
+
+/********************************************************************//**
+* @brief CGU structure definitions
+**********************************************************************/
+/*
+ * @brief	CGU peripheral clock structure
+ */
+typedef struct {
+    uint8_t RegBaseEntity;						/**< Base register address 		*/
+    uint16_t RegBranchOffset;					/**< Branch register offset		*/
+    uint8_t PerBaseEntity;						/**< Base peripheral address	*/
+    uint16_t PerBranchOffset;					/**< Base peripheral offset		*/
+    uint8_t next;								/**< Pointer to next structure	*/
+} CGU_PERIPHERAL_S;
+
+/**
+ * @}
+ */
+
+
+/* Public Functions ----------------------------------------------------------- */
+/** @defgroup CGU_Public_Functions CGU Public Functions
+ * @{
+ */
+
+/** Clock generate initialize/de-initialize */
+uint32_t	CGU_Init(uint32_t wantedFreq);
+uint32_t	CGU_DeInit(void);
+
+/** Clock Generator and Clock Control */
+uint32_t	CGU_ConfigPWR(CGU_PERIPHERAL_T PPType, FunctionalState en);
+uint32_t	CGU_GetPCLKFrequency(CGU_PERIPHERAL_T Clock);
+
+/** Clock Source and Base Clock operation */
+uint32_t	CGU_SetXTALOSC(uint32_t ClockFrequency);
+uint32_t	CGU_SetDIV(CGU_ENTITY_T SelectDivider, uint32_t divisor);
+uint32_t	CGU_SetPLL0(void);
+uint32_t	CGU_SetPLL0audio(void);
+uint32_t	CGU_SetPLL1(uint32_t mult);
+uint32_t	CGU_EnableEntity(CGU_ENTITY_T ClockEntity, uint32_t en);
+uint32_t	CGU_EntityConnect(CGU_ENTITY_T ClockSource, CGU_ENTITY_T ClockEntity);
+uint32_t	CGU_GetBaseStatus(CGU_ENTITY_T Base);
+void		CGU_UpdateClock(void);
+uint32_t	CGU_RealFrequencyCompare(CGU_ENTITY_T Clock, CGU_ENTITY_T CompareToClock, uint32_t *m, uint32_t *d);
+
+/**
+ * @}
+ */
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* lpc43xx_CGU_H_ */
+
+/**
+ * @}
+ */
+