HPM SDK
HPMicro Software Development Kit
hpm_trgm_soc_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2022 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_TRGM_SOC_DRV_H
9 #define HPM_TRGM_SOC_DRV_H
10 
11 #include "hpm_soc.h"
12 #include "hpm_trgm_regs.h"
13 
14 typedef enum {
20 
21 typedef enum {
27 
28 typedef enum {
34 
35 typedef enum {
45 
46 typedef enum {
54 
55 typedef enum {
65 
66 #if defined(__cplusplus)
67 extern "C" {
68 #endif
69 
70 static inline void trgm_adc_matrix_config(TRGM_Type *ptr, trgm_adc_matrix_out_t consumer, trgm_adc_matrix_in_t src, bool inv_val)
71 {
72  if (inv_val) {
73  ptr->ADC_MATRIX_SEL |= 0x80 << consumer * 8U;
74  } else {
75  ptr->ADC_MATRIX_SEL &= ~(0x80 << consumer * 8U);
76  }
77  ptr->ADC_MATRIX_SEL &= ~(0x7f << consumer * 8U);
78  ptr->ADC_MATRIX_SEL |= src << consumer * 8U;
79 }
80 
81 static inline void trgm_dac_matrix_config(TRGM_Type *ptr, trgm_dac_matrix_out_t consumer, trgm_dac_matrix_in_t src, bool inv_val)
82 {
83  if (inv_val) {
84  ptr->DAC_MATRIX_SEL |= 0x80 << consumer * 8U;
85  } else {
86  ptr->DAC_MATRIX_SEL &= ~(0x80 << consumer * 8U);
87  }
88  ptr->DAC_MATRIX_SEL &= ~(0x7f << consumer * 8U);
89  ptr->DAC_MATRIX_SEL |= src << consumer * 8U;
90 }
91 
92 static inline void trgm_pos_matrix_config(TRGM_Type *ptr, trgm_pos_matrix_out_t consumer, trgm_pos_matrix_in_t src, bool inv_val)
93 {
94  uint8_t index = consumer / 4U;
95  uint8_t offset = (consumer % 4U) * 8U;
96 
97  if (index == 0) {
98  if (inv_val) {
99  ptr->POS_MATRIX_SEL0 |= 0x80 << offset;
100  } else {
101  ptr->POS_MATRIX_SEL0 &= ~(0x80 << offset);
102  }
103  ptr->POS_MATRIX_SEL0 &= ~(0x7f << offset);
104  ptr->POS_MATRIX_SEL0 |= src << offset;
105  } else if (index == 1) {
106  if (inv_val) {
107  ptr->POS_MATRIX_SEL1 |= 0x80 << offset;
108  } else {
109  ptr->POS_MATRIX_SEL1 &= ~(0x80 << offset);
110  }
111  ptr->POS_MATRIX_SEL1 &= ~(0x7f << offset);
112  ptr->POS_MATRIX_SEL1 |= src << offset;
113  }
114 }
115 
116 #if defined(__cplusplus)
117 }
118 #endif
119 
120 #endif /* HPM_TRGM_SOC_DRV_H */
static void trgm_pos_matrix_config(TRGM_Type *ptr, trgm_pos_matrix_out_t consumer, trgm_pos_matrix_in_t src, bool inv_val)
Definition: hpm_trgm_soc_drv.h:92
trgm_dac_matrix_out_t
Definition: hpm_trgm_soc_drv.h:28
@ trgm_dac_matrix_output_to_acmp0
Definition: hpm_trgm_soc_drv.h:29
@ trgm_dac_matrix_output_to_dac0
Definition: hpm_trgm_soc_drv.h:31
@ trgm_dac_matrix_output_to_dac1
Definition: hpm_trgm_soc_drv.h:32
@ trgm_dac_matrix_output_to_acmp1
Definition: hpm_trgm_soc_drv.h:30
trgm_dac_matrix_in_t
Definition: hpm_trgm_soc_drv.h:35
@ trgm_dac_matrix_in_from_rdc_dac0
Definition: hpm_trgm_soc_drv.h:42
@ trgm_dac_matrix_in_from_qeo1_dac0
Definition: hpm_trgm_soc_drv.h:39
@ trgm_dac_matrix_in_from_qeo1_dac1
Definition: hpm_trgm_soc_drv.h:40
@ trgm_dac_matrix_in_from_qeo0_dac0
Definition: hpm_trgm_soc_drv.h:36
@ trgm_dac_matrix_in_from_rdc_dac1
Definition: hpm_trgm_soc_drv.h:43
@ trgm_dac_matrix_in_from_qeo0_dac2
Definition: hpm_trgm_soc_drv.h:38
@ trgm_dac_matrix_in_from_qeo0_dac1
Definition: hpm_trgm_soc_drv.h:37
@ trgm_dac_matrix_in_from_qeo1_dac2
Definition: hpm_trgm_soc_drv.h:41
trgm_adc_matrix_in_t
Definition: hpm_trgm_soc_drv.h:21
@ trgm_adc_matrix_in_from_adc0
Definition: hpm_trgm_soc_drv.h:22
@ trgm_adc_matrix_in_from_rdc_adc0
Definition: hpm_trgm_soc_drv.h:24
@ trgm_adc_matrix_in_from_adc1
Definition: hpm_trgm_soc_drv.h:23
@ trgm_adc_matrix_in_from_rdc_adc1
Definition: hpm_trgm_soc_drv.h:25
trgm_adc_matrix_out_t
Definition: hpm_trgm_soc_drv.h:14
@ trgm_adc_matrix_output_to_qei0_adc0
Definition: hpm_trgm_soc_drv.h:15
@ trgm_adc_matrix_output_to_qei1_adc0
Definition: hpm_trgm_soc_drv.h:17
@ trgm_adc_matrix_output_to_qei1_adc1
Definition: hpm_trgm_soc_drv.h:18
@ trgm_adc_matrix_output_to_qei0_adc1
Definition: hpm_trgm_soc_drv.h:16
trgm_pos_matrix_out_t
Definition: hpm_trgm_soc_drv.h:46
@ trgm_pos_matrix_output_to_qeo1
Definition: hpm_trgm_soc_drv.h:52
@ trgm_pos_matrix_output_to_mmc0
Definition: hpm_trgm_soc_drv.h:49
@ trgm_pos_matrix_output_to_sei_pos0
Definition: hpm_trgm_soc_drv.h:47
@ trgm_pos_matrix_output_to_qeo0
Definition: hpm_trgm_soc_drv.h:51
@ trgm_pos_matrix_output_to_sei_pos1
Definition: hpm_trgm_soc_drv.h:48
@ trgm_pos_matrix_output_to_mmc1
Definition: hpm_trgm_soc_drv.h:50
static void trgm_dac_matrix_config(TRGM_Type *ptr, trgm_dac_matrix_out_t consumer, trgm_dac_matrix_in_t src, bool inv_val)
Definition: hpm_trgm_soc_drv.h:81
static void trgm_adc_matrix_config(TRGM_Type *ptr, trgm_adc_matrix_out_t consumer, trgm_adc_matrix_in_t src, bool inv_val)
Definition: hpm_trgm_soc_drv.h:70
trgm_pos_matrix_in_t
Definition: hpm_trgm_soc_drv.h:55
@ trgm_pos_matrix_in_from_mmc1_pos0
Definition: hpm_trgm_soc_drv.h:62
@ trgm_pos_matrix_in_from_qei0
Definition: hpm_trgm_soc_drv.h:58
@ trgm_pos_matrix_in_from_sei_pos1
Definition: hpm_trgm_soc_drv.h:57
@ trgm_pos_matrix_in_from_qei1
Definition: hpm_trgm_soc_drv.h:59
@ trgm_pos_matrix_in_from_sei_pos0
Definition: hpm_trgm_soc_drv.h:56
@ trgm_pos_matrix_in_from_mmc0_pos1
Definition: hpm_trgm_soc_drv.h:61
@ trgm_pos_matrix_in_from_mmc0_pos0
Definition: hpm_trgm_soc_drv.h:60
@ trgm_pos_matrix_in_from_mmc1_pos1
Definition: hpm_trgm_soc_drv.h:63
Definition: hpm_trgm_regs.h:12
__RW uint32_t POS_MATRIX_SEL1
Definition: hpm_trgm_regs.h:24
__RW uint32_t DAC_MATRIX_SEL
Definition: hpm_trgm_regs.h:22
__RW uint32_t POS_MATRIX_SEL0
Definition: hpm_trgm_regs.h:23
__RW uint32_t ADC_MATRIX_SEL
Definition: hpm_trgm_regs.h:21