1 /* 2 * Copyright (c) 2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "hpm_common.h" 9 #include "hpm_gwc_drv.h" 10 gwc_get_default_config(gwc_config_t * cfg)11void gwc_get_default_config(gwc_config_t *cfg) 12 { 13 cfg->clk_pol = gwc_clk_pol_normal; 14 } 15 gwc_init(GWC_Type * ptr,gwc_config_t * cfg)16void gwc_init(GWC_Type *ptr, gwc_config_t *cfg) 17 { 18 ptr->GLB_CTRL = cfg->clk_pol; 19 } 20 gwc_enable(GWC_Type * ptr)21void gwc_enable(GWC_Type *ptr) 22 { 23 ptr->GLB_CTRL |= GWC_GLB_CTRL_GWC_EN_MASK; 24 } 25 gwc_disable(GWC_Type * ptr)26void gwc_disable(GWC_Type *ptr) 27 { 28 ptr->GLB_CTRL &= ~GWC_GLB_CTRL_GWC_EN_MASK; 29 } 30 gwc_freeze_interrupt_control(GWC_Type * ptr)31void gwc_freeze_interrupt_control(GWC_Type *ptr) 32 { 33 ptr->IRQ_MASK |= GWC_IRQ_MASK_MASK_RREEZ_MASK; 34 } 35 gwc_ch_init(GWC_Type * ptr,uint8_t ch_index,gwc_ch_config_t * cfg)36void gwc_ch_init(GWC_Type *ptr, uint8_t ch_index, gwc_ch_config_t *cfg) 37 { 38 assert(ch_index <= GWC_CHANNEL_CH15); 39 ptr->CHANNEL[ch_index].CFG0 = GWC_CHANNEL_CFG0_START_ROW_SET(cfg->start_row) | 40 GWC_CHANNEL_CFG0_START_COL_SET(cfg->start_col) | 41 (cfg->freeze ? GWC_CHANNEL_CFG0_FREEZE_MASK : 0); 42 ptr->CHANNEL[ch_index].CFG1 = GWC_CHANNEL_CFG1_END_ROW_SET(cfg->end_row) | 43 GWC_CHANNEL_CFG1_END_COL_SET(cfg->end_col); 44 ptr->CHANNEL[ch_index].REFCRC = cfg->ref_crc; 45 }