1 /***************************************************************************//**
2 * \file cyip_pdm.h
3 *
4 * \brief
5 * PDM IP definitions
6 *
7 ********************************************************************************
8 * \copyright
9 * (c) (2016-2023), Cypress Semiconductor Corporation (an Infineon company) or
10 * an affiliate of Cypress Semiconductor Corporation.
11 *
12 * SPDX-License-Identifier: Apache-2.0
13 *
14 * Licensed under the Apache License, Version 2.0 (the "License");
15 * you may not use this file except in compliance with the License.
16 * You may obtain a copy of the License at
17 *
18 *     http://www.apache.org/licenses/LICENSE-2.0
19 *
20 * Unless required by applicable law or agreed to in writing, software
21 * distributed under the License is distributed on an "AS IS" BASIS,
22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 * See the License for the specific language governing permissions and
24 * limitations under the License.
25 *******************************************************************************/
26 
27 #ifndef _CYIP_PDM_H_
28 #define _CYIP_PDM_H_
29 
30 #include "cyip_headers.h"
31 
32 /*******************************************************************************
33 *                                     PDM
34 *******************************************************************************/
35 
36 #define PDM_SECTION_SIZE                        0x00001000UL
37 
38 /**
39   * \brief PDM registers (PDM)
40   */
41 typedef struct {
42   __IOM uint32_t CTL;                           /*!< 0x00000000 Control */
43    __IM uint32_t RESERVED[3];
44   __IOM uint32_t CLOCK_CTL;                     /*!< 0x00000010 Clock control */
45   __IOM uint32_t MODE_CTL;                      /*!< 0x00000014 Mode control */
46   __IOM uint32_t DATA_CTL;                      /*!< 0x00000018 Data control */
47    __IM uint32_t RESERVED1;
48   __IOM uint32_t CMD;                           /*!< 0x00000020 Command */
49    __IM uint32_t RESERVED2[7];
50   __IOM uint32_t TR_CTL;                        /*!< 0x00000040 Trigger control */
51    __IM uint32_t RESERVED3[175];
52   __IOM uint32_t RX_FIFO_CTL;                   /*!< 0x00000300 RX FIFO control */
53    __IM uint32_t RX_FIFO_STATUS;                /*!< 0x00000304 RX FIFO status */
54    __IM uint32_t RX_FIFO_RD;                    /*!< 0x00000308 RX FIFO read */
55    __IM uint32_t RX_FIFO_RD_SILENT;             /*!< 0x0000030C RX FIFO silent read */
56    __IM uint32_t RESERVED4[764];
57   __IOM uint32_t INTR;                          /*!< 0x00000F00 Interrupt register */
58   __IOM uint32_t INTR_SET;                      /*!< 0x00000F04 Interrupt set register */
59   __IOM uint32_t INTR_MASK;                     /*!< 0x00000F08 Interrupt mask register */
60    __IM uint32_t INTR_MASKED;                   /*!< 0x00000F0C Interrupt masked register */
61 } PDM_V1_Type;                                  /*!< Size = 3856 (0xF10) */
62 
63 
64 /* PDM.CTL */
65 #define PDM_CTL_PGA_R_Pos                       0UL
66 #define PDM_CTL_PGA_R_Msk                       0xFUL
67 #define PDM_CTL_PGA_L_Pos                       8UL
68 #define PDM_CTL_PGA_L_Msk                       0xF00UL
69 #define PDM_CTL_SOFT_MUTE_Pos                   16UL
70 #define PDM_CTL_SOFT_MUTE_Msk                   0x10000UL
71 #define PDM_CTL_STEP_SEL_Pos                    17UL
72 #define PDM_CTL_STEP_SEL_Msk                    0x20000UL
73 #define PDM_CTL_ENABLED_Pos                     31UL
74 #define PDM_CTL_ENABLED_Msk                     0x80000000UL
75 /* PDM.CLOCK_CTL */
76 #define PDM_CLOCK_CTL_CLK_CLOCK_DIV_Pos         0UL
77 #define PDM_CLOCK_CTL_CLK_CLOCK_DIV_Msk         0x3UL
78 #define PDM_CLOCK_CTL_MCLKQ_CLOCK_DIV_Pos       4UL
79 #define PDM_CLOCK_CTL_MCLKQ_CLOCK_DIV_Msk       0x30UL
80 #define PDM_CLOCK_CTL_CKO_CLOCK_DIV_Pos         8UL
81 #define PDM_CLOCK_CTL_CKO_CLOCK_DIV_Msk         0xF00UL
82 #define PDM_CLOCK_CTL_SINC_RATE_Pos             16UL
83 #define PDM_CLOCK_CTL_SINC_RATE_Msk             0x7F0000UL
84 /* PDM.MODE_CTL */
85 #define PDM_MODE_CTL_PCM_CH_SET_Pos             0UL
86 #define PDM_MODE_CTL_PCM_CH_SET_Msk             0x3UL
87 #define PDM_MODE_CTL_SWAP_LR_Pos                2UL
88 #define PDM_MODE_CTL_SWAP_LR_Msk                0x4UL
89 #define PDM_MODE_CTL_S_CYCLES_Pos               8UL
90 #define PDM_MODE_CTL_S_CYCLES_Msk               0x700UL
91 #define PDM_MODE_CTL_CKO_DELAY_Pos              16UL
92 #define PDM_MODE_CTL_CKO_DELAY_Msk              0x70000UL
93 #define PDM_MODE_CTL_HPF_GAIN_Pos               24UL
94 #define PDM_MODE_CTL_HPF_GAIN_Msk               0xF000000UL
95 #define PDM_MODE_CTL_HPF_EN_N_Pos               28UL
96 #define PDM_MODE_CTL_HPF_EN_N_Msk               0x10000000UL
97 /* PDM.DATA_CTL */
98 #define PDM_DATA_CTL_WORD_LEN_Pos               0UL
99 #define PDM_DATA_CTL_WORD_LEN_Msk               0x3UL
100 #define PDM_DATA_CTL_BIT_EXTENSION_Pos          8UL
101 #define PDM_DATA_CTL_BIT_EXTENSION_Msk          0x100UL
102 /* PDM.CMD */
103 #define PDM_CMD_STREAM_EN_Pos                   0UL
104 #define PDM_CMD_STREAM_EN_Msk                   0x1UL
105 /* PDM.TR_CTL */
106 #define PDM_TR_CTL_RX_REQ_EN_Pos                16UL
107 #define PDM_TR_CTL_RX_REQ_EN_Msk                0x10000UL
108 /* PDM.RX_FIFO_CTL */
109 #define PDM_RX_FIFO_CTL_TRIGGER_LEVEL_Pos       0UL
110 #define PDM_RX_FIFO_CTL_TRIGGER_LEVEL_Msk       0xFFUL
111 #define PDM_RX_FIFO_CTL_CLEAR_Pos               16UL
112 #define PDM_RX_FIFO_CTL_CLEAR_Msk               0x10000UL
113 #define PDM_RX_FIFO_CTL_FREEZE_Pos              17UL
114 #define PDM_RX_FIFO_CTL_FREEZE_Msk              0x20000UL
115 /* PDM.RX_FIFO_STATUS */
116 #define PDM_RX_FIFO_STATUS_USED_Pos             0UL
117 #define PDM_RX_FIFO_STATUS_USED_Msk             0xFFUL
118 #define PDM_RX_FIFO_STATUS_RD_PTR_Pos           16UL
119 #define PDM_RX_FIFO_STATUS_RD_PTR_Msk           0xFF0000UL
120 #define PDM_RX_FIFO_STATUS_WR_PTR_Pos           24UL
121 #define PDM_RX_FIFO_STATUS_WR_PTR_Msk           0xFF000000UL
122 /* PDM.RX_FIFO_RD */
123 #define PDM_RX_FIFO_RD_DATA_Pos                 0UL
124 #define PDM_RX_FIFO_RD_DATA_Msk                 0xFFFFFFFFUL
125 /* PDM.RX_FIFO_RD_SILENT */
126 #define PDM_RX_FIFO_RD_SILENT_DATA_Pos          0UL
127 #define PDM_RX_FIFO_RD_SILENT_DATA_Msk          0xFFFFFFFFUL
128 /* PDM.INTR */
129 #define PDM_INTR_RX_TRIGGER_Pos                 16UL
130 #define PDM_INTR_RX_TRIGGER_Msk                 0x10000UL
131 #define PDM_INTR_RX_NOT_EMPTY_Pos               18UL
132 #define PDM_INTR_RX_NOT_EMPTY_Msk               0x40000UL
133 #define PDM_INTR_RX_OVERFLOW_Pos                21UL
134 #define PDM_INTR_RX_OVERFLOW_Msk                0x200000UL
135 #define PDM_INTR_RX_UNDERFLOW_Pos               22UL
136 #define PDM_INTR_RX_UNDERFLOW_Msk               0x400000UL
137 /* PDM.INTR_SET */
138 #define PDM_INTR_SET_RX_TRIGGER_Pos             16UL
139 #define PDM_INTR_SET_RX_TRIGGER_Msk             0x10000UL
140 #define PDM_INTR_SET_RX_NOT_EMPTY_Pos           18UL
141 #define PDM_INTR_SET_RX_NOT_EMPTY_Msk           0x40000UL
142 #define PDM_INTR_SET_RX_OVERFLOW_Pos            21UL
143 #define PDM_INTR_SET_RX_OVERFLOW_Msk            0x200000UL
144 #define PDM_INTR_SET_RX_UNDERFLOW_Pos           22UL
145 #define PDM_INTR_SET_RX_UNDERFLOW_Msk           0x400000UL
146 /* PDM.INTR_MASK */
147 #define PDM_INTR_MASK_RX_TRIGGER_Pos            16UL
148 #define PDM_INTR_MASK_RX_TRIGGER_Msk            0x10000UL
149 #define PDM_INTR_MASK_RX_NOT_EMPTY_Pos          18UL
150 #define PDM_INTR_MASK_RX_NOT_EMPTY_Msk          0x40000UL
151 #define PDM_INTR_MASK_RX_OVERFLOW_Pos           21UL
152 #define PDM_INTR_MASK_RX_OVERFLOW_Msk           0x200000UL
153 #define PDM_INTR_MASK_RX_UNDERFLOW_Pos          22UL
154 #define PDM_INTR_MASK_RX_UNDERFLOW_Msk          0x400000UL
155 /* PDM.INTR_MASKED */
156 #define PDM_INTR_MASKED_RX_TRIGGER_Pos          16UL
157 #define PDM_INTR_MASKED_RX_TRIGGER_Msk          0x10000UL
158 #define PDM_INTR_MASKED_RX_NOT_EMPTY_Pos        18UL
159 #define PDM_INTR_MASKED_RX_NOT_EMPTY_Msk        0x40000UL
160 #define PDM_INTR_MASKED_RX_OVERFLOW_Pos         21UL
161 #define PDM_INTR_MASKED_RX_OVERFLOW_Msk         0x200000UL
162 #define PDM_INTR_MASKED_RX_UNDERFLOW_Pos        22UL
163 #define PDM_INTR_MASKED_RX_UNDERFLOW_Msk        0x400000UL
164 
165 
166 #endif /* _CYIP_PDM_H_ */
167 
168 
169 /* [] END OF FILE */
170