• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)11 void 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)16 void gwc_init(GWC_Type *ptr, gwc_config_t *cfg)
17 {
18     ptr->GLB_CTRL = cfg->clk_pol;
19 }
20 
gwc_enable(GWC_Type * ptr)21 void gwc_enable(GWC_Type *ptr)
22 {
23     ptr->GLB_CTRL |= GWC_GLB_CTRL_GWC_EN_MASK;
24 }
25 
gwc_disable(GWC_Type * ptr)26 void 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)31 void 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)36 void 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 }