RZ/A1H CMSIS-RTOS RTX BSP for GR-PEACH.
Dependents: GR-PEACH_Azure_Speech ImageZoomInout_Sample ImageRotaion_Sample ImageScroll_Sample ... more
Fork of R_BSP by
scux.h
00001 /******************************************************************************* 00002 * DISCLAIMER 00003 * This software is supplied by Renesas Electronics Corporation and is only 00004 * intended for use with Renesas products. No other uses are authorized. This 00005 * software is owned by Renesas Electronics Corporation and is protected under 00006 * all applicable laws, including copyright laws. 00007 * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING 00008 * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT 00009 * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE 00010 * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. 00011 * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS 00012 * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE 00013 * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR 00014 * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE 00015 * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 00016 * Renesas reserves the right, without notice, to make changes to this software 00017 * and to discontinue the availability of this software. By using this software, 00018 * you agree to the additional terms and conditions found by accessing the 00019 * following link: 00020 * http://www.renesas.com/disclaimer 00021 * Copyright (C) 2013-2014 Renesas Electronics Corporation. All rights reserved. 00022 *******************************************************************************/ 00023 /**************************************************************************//** 00024 * @file scux.h 00025 * $Rev: 993 $ 00026 * $Date:: 2014-07-22 09:54:45 +0900#$ 00027 * @brief Sample driver internal header 00028 ******************************************************************************/ 00029 00030 #ifndef SCUX_H 00031 #define SCUX_H 00032 00033 /****************************************************************************** 00034 Includes <System Includes>, "Project Includes" 00035 ******************************************************************************/ 00036 00037 #include "scux_if.h" 00038 #include "scux_int.h" 00039 #include "aioif.h" 00040 #include "iodefine.h" 00041 #include "Renesas_RZ_A1.h" 00042 #include "dma_if.h" 00043 #include "bsp_drv_cmn.h" 00044 00045 /****************************************************************************** 00046 Macro definitions 00047 ******************************************************************************/ 00048 00049 /* SCUX Register Set Value */ 00050 /* Init Value */ 00051 /* IPC */ 00052 #define IPCIR_IPC0_INIT_VALUE (0x00000001U) 00053 #define IPSLR_IPC0_INIT_VALUE (0x00000000U) 00054 /* OPC */ 00055 #define OPCIR_OPC0_INIT_VALUE (0x00000001U) 00056 #define OPSLR_OPC0_INIT_VALUE (0x00000000U) 00057 /* FFD */ 00058 #define FFDIR_FFD0_INIT_VALUE (0x00000001U) 00059 #define FDAIR_FFD0_INIT_VALUE (0x00000000U) 00060 #define DRQSR_FFD0_INIT_VALUE (0x00000000U) 00061 #define FFDPR_FFD0_INIT_VALUE (0x00000000U) 00062 #define FFDBR_FFD0_INIT_VALUE (0x00000000U) 00063 #define DEVMR_FFD0_INIT_VALUE (0x00000000U) 00064 #define DEVCR_FFD0_INIT_VALUE (0x00000000U) 00065 /* FFU */ 00066 #define FFUIR_FFU0_INIT_VALUE (0x00000001U) 00067 #define FUAIR_FFU0_INIT_VALUE (0x00000000U) 00068 #define URQSR_FFU0_INIT_VALUE (0x00000000U) 00069 #define FFUPR_FFU0_INIT_VALUE (0x00000000U) 00070 #define UEVMR_FFU0_INIT_VALUE (0x00000000U) 00071 #define UEVCR_FFU0_INIT_VALUE (0x00000000U) 00072 /* SRC */ 00073 #define SRCIR_2SRC0_INIT_VALUE (0x00000001U) 00074 #define SADIR_2SRC0_INIT_VALUE (0x00000000U) 00075 #define SRCBR_2SRC0_INIT_VALUE (0x00000000U) 00076 #define IFSCR_2SRC0_INIT_VALUE (0x00000000U) 00077 #define IFSVR_2SRC0_INIT_VALUE (0x00000000U) 00078 #define SRCCR_2SRC0_INIT_VALUE (0x00000000U) 00079 #define MNFSR_2SRC0_INIT_VALUE (0x00000000U) 00080 #define BFSSR_2SRC0_INIT_VALUE (0x00000000U) 00081 #define WATSR_2SRC0_INIT_VALUE (0x00000000U) 00082 #define SEVMR_2SRC0_INIT_VALUE (0x00000000U) 00083 #define SEVCR_2SRC0_INIT_VALUE (0x00000000U) 00084 #define SRCIRR_2SRC0_INIT_VALUE (0x00000001U) 00085 /* DVU */ 00086 #define DVUIR_DVU0_INIT_VALUE (0x00000001U) 00087 #define VADIR_DVU0_INIT_VALUE (0x00000000U) 00088 #define DVUBR_DVU0_INIT_VALUE (0x00000000U) 00089 #define DVUCR_DVU0_INIT_VALUE (0x00000000U) 00090 #define ZCMCR_DVU0_INIT_VALUE (0x00000000U) 00091 #define VRCTR_DVU0_INIT_VALUE (0x00000000U) 00092 #define VRPDR_DVU0_INIT_VALUE (0x00000000U) 00093 #define VRDBR_DVU0_INIT_VALUE (0x00000000U) 00094 #define VRWTR_DVU0_INIT_VALUE (0x00000000U) 00095 #define VOL_N_R_DVU0_INIT_VALUE (0x00000000U) 00096 #define DVUER_DVU0_INIT_VALUE (0x00000000U) 00097 #define VEVMR_DVU0_INIT_VALUE (0x00000000U) 00098 #define VEVCR_DVU0_INIT_VALUE (0x00000000U) 00099 /* MIX */ 00100 #define MIXIR_MIX0_0_INIT_VALUE (0x00000001U) 00101 #define MADIR_MIX0_0_INIT_VALUE (0x00000000U) 00102 #define MIXBR_MIX0_0_INIT_VALUE (0x00000000U) 00103 #define MIXMR_MIX0_0_INIT_VALUE (0x00000000U) 00104 #define MVPDR_MIX0_0_INIT_VALUE (0x00000000U) 00105 #define MDB_N_R_MIX0_0_INIT_VALUE (0x00000000U) 00106 #define MDBER_MIX0_0_INIT_VALUE (0x00000000U) 00107 /* CIM */ 00108 #define SWRSR_CIM_INIT_VALUE (0x00000001U) 00109 #define DMACR_CIM_INIT_VALUE (0x00000000U) 00110 #define SSIRSEL_CIM_INIT_VALUE (0x00000000U) 00111 #define FDTSEL_CIM_INIT_VALUE (0x00000000U) 00112 #define FUTSEL_CIM_INIT_VALUE (0x00000000U) 00113 #define SSIPMD_CIM_INIT_VALUE (0x00000000U) 00114 #define SSICTRL_CIM_INIT_VALUE (0x00000000U) 00115 #define SRCRSEL_CIM_INIT_VALUE (0x76543210U) 00116 #define MIXRSEL_CIM_INIT_VALUE (0x76543210U) 00117 00118 /* SCUX bit value & mask & fixed setting */ 00119 00120 /* IPC */ 00121 #define IPCIR_IPC0_INIT_SET (1U << 0) 00122 00123 #define IPSLR_IPC_PASS_SEL_MASK (7U << 0) 00124 #define IPSLR_IPC_PASS_SEL_SET_ASYNC (3U << 0) 00125 #define IPSLR_IPC_PASS_SEL_SET_SYNC (4U << 0) 00126 00127 /* OPC */ 00128 #define OPCIR_OPC0_INIT_SET (1U << 0) 00129 00130 #define OPSLR_OPC_PASS_SEL_MASK (7U << 0) 00131 #define OPSLR_OPC_PASS_SEL_SET_DIRECT (1U << 0) 00132 #define OPSLR_OPC_PASS_SEL_SET_ASYNC (3U << 0) 00133 #define OPSLR_OPC_PASS_SEL_SET_SYNC (4U << 0) 00134 00135 /* FFD */ 00136 #define FFDIR_FFD0_INIT_SET (1U << 0) 00137 00138 #define FDAIR_FFD0_CHNUM_MASK (0x0FU << 0) 00139 00140 #define DRQSR_FFD0_SIZE_MASK (0x0FU << 0) 00141 00142 #define FFDPR_FFD0_PASS_SET_ASYNC (1U << 0) 00143 #define FFDPR_FFD0_PASS_SET_SYNC (2U << 0) 00144 00145 #define FFDBR_FFD0_BOOT_SET (1U << 0) 00146 00147 #define DEVMR_FFD0_DEVMUF_SET (1U << 31) 00148 #define DEVMR_FFD0_DEVMOF_SET (1U << 30) 00149 #define DEVMR_FFD0_DEVMOL_SET (1U << 29) 00150 #define DEVMR_FFD0_DEVMIUF_SET (1U << 28) 00151 #define DEVMR_FFD0_DEVMRQ_SET (1U << 15) 00152 00153 #define DEVCR_FFD0_DEVCUF_MASK (1U << 31) 00154 #define DEVCR_FFD0_DEVCUF_SET (1U << 31) 00155 #define DEVCR_FFD0_DEVCOF_MASK (1U << 30) 00156 #define DEVCR_FFD0_DEVCOF_SET (1U << 30) 00157 #define DEVCR_FFD0_DEVCOL_MASK (1U << 29) 00158 #define DEVCR_FFD0_DEVCOL_SET (1U << 29) 00159 #define DEVCR_FFD0_DEVCIUF_MASK (1U << 28) 00160 #define DEVCR_FFD0_DEVCIUF_SET (1U << 28) 00161 #define DEVCR_FFD0_DEVCRQ_MASK (1U << 15) 00162 #define DEVCR_FFD0_DEVCRQ_SET (1U << 15) 00163 00164 /* FFU */ 00165 #define FFUIR_FFU0_INIT_SET (1U << 0) 00166 00167 #define FUAIR_FFU0_CHNUM_MASK (0x0FU << 0) 00168 00169 #define URQSR_FFU0_SIZE_MASK (0x0FU << 0) 00170 00171 #define FFUPR_FFU0_PASS_SET_ASYNC (1U << 0) 00172 #define FFUPR_FFU0_PASS_SET_SYNC (2U << 0) 00173 00174 #define UEVMR_FFU0_UEVMUF_SET (1U << 31) 00175 #define UEVMR_FFU0_UEVMOF_SET (1U << 30) 00176 #define UEVMR_FFU0_UEVMOL_SET (1U << 29) 00177 #define UEVMR_FFU0_UEVMRQ_SET (1U << 15) 00178 00179 #define UEVCR_FFU0_UEVCUF_MASK (1U << 31) 00180 #define UEVCR_FFU0_UEVCUF_SET (1U << 31) 00181 #define UEVCR_FFU0_UEVCOF_MASK (1U << 30) 00182 #define UEVCR_FFU0_UEVCOF_SET (1U << 30) 00183 #define UEVCR_FFU0_UEVCOL_MASK (1U << 29) 00184 #define UEVCR_FFU0_UEVCOL_SET (1U << 29) 00185 #define UEVCR_FFU0_UEVCRQ_MASK (1U << 15) 00186 #define UEVCR_FFU0_UEVCRQ_SET (1U << 15) 00187 00188 /* SRC */ 00189 #define SRCIR_2SRC0_INIT_SET (1U << 0) 00190 00191 #define SADIR_2SRC0_CHNUM_MASK (0x0FU << 0) 00192 #define SADIR_2SRC0_OTBL_MASK (0x1FU << 16) 00193 #define SADIR_2SRC0_OTBL_SET_24BIT (0x0U << 16) 00194 #define SADIR_2SRC0_OTBL_SET_16BIT (0x8U << 16) 00195 00196 #define SRCBR_2SRC0_BYPASS_SET (0x1U << 0) 00197 00198 #define IFSCR_2SRC0_INTIFSEN_SET (0x1U << 0) 00199 00200 #define IFSVR_2SRC0_INTIFS_MASK (0x0FFFFFFFU << 0) 00201 00202 #define SRCCR_2SRC0_BASE_VALUE (0x00010110U) 00203 #define SRCCR_2SRC0_WATMD_SET (1U << 20) 00204 #define SRCCR_2SRC0_BUFMD_SET (1U << 12) 00205 #define SRCCR_2SRC0_SRCMD_SET (1U << 0) 00206 00207 #define MNFSR_2SRC0_MINFS_MASK (0x0FFFFFFFU << 0) 00208 00209 #define BFSSR_2SRC0_BUFDATA_MASK (0x3FFU << 16) 00210 #define BFSSR_2SRC0_BUFDATA_SET_DELAY_MODE1 (0x80U << 16) 00211 #define BFSSR_2SRC0_BUFDATA_SET_DELAY_MODE2 (0x40U << 16) 00212 #define BFSSR_2SRC0_BUFIN_MASK (0x0FU << 0) 00213 #define BFSSR_2SRC0_BUFIN_SET_DELAY_MODE (0x05U << 0) 00214 00215 #define WATSR_2SRC0_WTIME_MASK (0xFFFFFFU << 0) 00216 00217 #define SEVMR_2SRC0_EVMUF_SET (1U << 31) 00218 #define SEVMR_2SRC0_EVMOF_SET (1U << 30) 00219 00220 #define SEVCR_2SRC0_EVCUF_MASK (1U << 31) 00221 #define SEVCR_2SRC0_EVCUF_SET (1U << 31) 00222 #define SEVCR_2SRC0_EVCOF_MASK (1U << 30) 00223 #define SEVCR_2SRC0_EVCOF_SET (1U << 30) 00224 00225 #define SRCIRR_2SRC0_INIT_SET (1U << 0) 00226 00227 #define DVUIR_DVU0_INIT_SET (1U << 0) 00228 00229 #define VADIR_DVU0_OTBL_MASK (0x1FU << 16) 00230 #define VADIR_DVU0_OTBL_SET_24BIT (0x0U << 16) 00231 #define VADIR_DVU0_OTBL_SET_16BIT (0x8U << 16) 00232 #define VADIR_DVU0_CHNUM_MASK (0x0FU << 0) 00233 00234 #define DVUBR_DVU0_BYPASS_SET (0x1U << 0) 00235 00236 #define DVUCR_DVU0_VVMD_SET (1U << 8) 00237 #define DVUCR_DVU0_VRMD_SET (1U << 4) 00238 #define DVUCR_DVU0_ZCMD_SET (1U << 0) 00239 00240 #define ZCMCR_DVU0_ZCEN_SET (1U << 0) 00241 00242 #define VRCTR_DVU0_VREN_SET (1U << 0) 00243 00244 #define VRPDR_DVU0_VRPDUP_SHIFT (8U) 00245 #define VRPDR_DVU0_VRPDUP_MASK (0x1F << VRPDR_DVU0_VRPDUP_SHIFT) 00246 #define VRPDR_DVU0_VRPDDW_SHIFT (0U) 00247 #define VRPDR_DVU0_VRPDDW_MASK (0x1F << VRPDR_DVU0_VRPDDW_SHIFT) 00248 00249 #define VRDBR_DVU0_VRDB_MASK (0x3FFU << 0) 00250 00251 #define VRWTR_DVU0_VRWT_MASK (0xFFFFFFU << 0) 00252 00253 #define VOL_N_R_DVU_VOLVAL_MASK (0xFFFFFFU << 0) 00254 00255 #define DVUER_DVU0_DVUEN_SET (1U << 0) 00256 00257 #define DVUSR_DVU0_ZSTS_N_SHIFT (16U) 00258 #define DVUSR_DVU0_ZSTS_N_MASK (1U << DVUSR_DVU0_ZSTS_N_SHIFT) 00259 #define DVUSR_DVU0_ZSTS_MASK (0xFFU << DVUSR_DVU0_ZSTS_N_SHIFT) 00260 #define DVUSR_DVU0_VRSTS_MASK (7U << 0) 00261 #define DVUSR_DVU0_VRSTS_VOL_FIX (4U << 0) 00262 00263 #define VEVMR_DVU0_VEVMZCM_SET (1U << 24) 00264 00265 #define VEVCR_DVU0_VEVCZCM_SET (1U << 24) 00266 00267 /* MIX */ 00268 #define MIXIR_MIX0_INIT_SET (1U << 0) 00269 00270 #define MADIR_MIX0_CHNUM_MASK (0x0FU << 0) 00271 00272 #define MIXMR_MIX0_MIXMODE_SET (1U << 0) 00273 00274 #define MVPDR_MIX0_MXPDUP_SHIFT (8U) 00275 #define MVPDR_MIX0_MXPDUP_MASK (0x0FU << MVPDR_MIX0_MXPDUP_SHIFT) 00276 #define MVPDR_MIX0_MXPDDW_SHIFT (0U) 00277 #define MVPDR_MIX0_MXPDDW_MASK (0x0FU << MVPDR_MIX0_MXPDDW_SHIFT) 00278 00279 #define MDB_N_R_MIX0_MIXDB_N_MASK (0x3FFU <<0) 00280 00281 #define MDBER_MIX0_MIXDBEN_SET (1U << 0) 00282 00283 #define MIXSR_MIX0_MIXSTS_MASK (3U << 0) 00284 00285 /* CIM */ 00286 #define SWRSR_CIM_SWRST_SET (1U << 0) 00287 00288 #define DMACR_CIM_DMAMDFFU_N_SET (1U << 4) 00289 #define DMACR_CIM_DMAMDFFD_N_SET (1U << 0) 00290 00291 #define SSIRSEL_CIM_SOSEL5_MASK (3U << 20) 00292 #define SSIRSEL_CIM_SOSEL5_SRC3_SET (0U << 20) 00293 #define SSIRSEL_CIM_SOSEL5_SRC1_SET (1U << 20) 00294 #define SSIRSEL_CIM_SOSEL5_SRC0_SET (2U << 20) 00295 #define SSIRSEL_CIM_SOSEL5_MIX_SET (3U << 20) 00296 #define SSIRSEL_CIM_SOSEL4_MASK (3U << 16) 00297 #define SSIRSEL_CIM_SOSEL4_SRC2_SET (0U << 16) 00298 #define SSIRSEL_CIM_SOSEL4_SRC1_SET (1U << 16) 00299 #define SSIRSEL_CIM_SOSEL4_SRC0_SET (2U << 16) 00300 #define SSIRSEL_CIM_SOSEL4_MIX_SET (3U << 16) 00301 #define SSIRSEL_CIM_SOSEL3_MASK (3U << 12) 00302 #define SSIRSEL_CIM_SOSEL3_SRC1_SET (0U << 12) 00303 #define SSIRSEL_CIM_SOSEL3_SRC0_SET (1U << 12) 00304 #define SSIRSEL_CIM_SOSEL3_MIX_SET (2U << 12) 00305 #define SSIRSEL_CIM_SOSEL2_MASK (3U << 8) 00306 #define SSIRSEL_CIM_SOSEL2_SRC3_SET (0U << 8) 00307 #define SSIRSEL_CIM_SOSEL2_SRC0_SET (1U << 8) 00308 #define SSIRSEL_CIM_SOSEL2_SRC1_SET (2U << 8) 00309 #define SSIRSEL_CIM_SOSEL2_MIX_SET (3U << 8) 00310 #define SSIRSEL_CIM_SOSEL1_MASK (3U << 4) 00311 #define SSIRSEL_CIM_SOSEL1_SRC2_SET (0U << 4) 00312 #define SSIRSEL_CIM_SOSEL1_SRC0_SET (1U << 4) 00313 #define SSIRSEL_CIM_SOSEL1_SRC1_SET (2U << 4) 00314 #define SSIRSEL_CIM_SOSEL1_MIX_SET (3U << 4) 00315 #define SSIRSEL_CIM_SOSEL0_MASK (3U << 0) 00316 #define SSIRSEL_CIM_SOSEL0_SRC0_SET (0U << 0) 00317 #define SSIRSEL_CIM_SOSEL0_SRC1_SET (1U << 0) 00318 #define SSIRSEL_CIM_SOSEL0_MIX_SET (2U << 0) 00319 00320 #define FDTSEL_CIM_SCKDIV_SHIFT (16U) 00321 #define FDTSEL_CIM_SCKDIV_MASK (0x7FFU << FDTSEL_CIM_SCKDIV_SHIFT) 00322 #define FDTSEL_CIM_DIVEN_MASK (1U << 8) 00323 #define FDTSEL_CIM_DIVEN_SET (1U << 8) 00324 #define FDTSEL_CIM_MTUSEL_MASK (1U << 4) 00325 #define FDTSEL_CIM_MTUSEL_SET_TIOC3A (0U << 4) 00326 #define FDTSEL_CIM_MTUSEL_SET_TIOC4A (1U << 4) 00327 #define FDTSEL_CIM_SCKSEL_MASK (0x0FU << 0) 00328 #define FDTSEL_CIM_SCKSEL_AUDIO_CLK_SET (0U) 00329 #define FDTSEL_CIM_SCKSEL_AUDIO_X1_SET (1U) 00330 #define FDTSEL_CIM_SCKSEL_MLB_CLK_SET (2U) 00331 #define FDTSEL_CIM_SCKSEL_USB_X1_SET (3U) 00332 #define FDTSEL_CIM_SCKSEL_CLKP1_2_SET (4U) 00333 #define FDTSEL_CIM_SCKSEL_MTUSEL2_SET (5U) 00334 #define FDTSEL_CIM_SCKSEL_SSIF0_WS_SET (8U) 00335 #define FDTSEL_CIM_SCKSEL_SSIF1_WS_SET (9U) 00336 #define FDTSEL_CIM_SCKSEL_SSIF2_WS_SET (10U) 00337 #define FDTSEL_CIM_SCKSEL_SSIF3_WS_SET (11U) 00338 #define FDTSEL_CIM_SCKSEL_SSIF4_WS_SET (12U) 00339 #define FDTSEL_CIM_SCKSEL_SSIF5_WS_SET (13U) 00340 00341 #define FUTSEL_CIM_SCKDIV_SHIFT (16U) 00342 #define FUTSEL_CIM_SCKDIV_MASK (0x7FFU << FDTSEL_CIM_SCKDIV_SHIFT) 00343 #define FUTSEL_CIM_DIVEN_MASK (1U << 8) 00344 #define FUTSEL_CIM_DIVEN_SET (1U << 8) 00345 #define FUTSEL_CIM_MTUSEL_MASK (1U << 4) 00346 #define FUTSEL_CIM_MTUSEL_SET_TIOC3A (0U << 4) 00347 #define FUTSEL_CIM_MTUSEL_SET_TIOC4A (1U << 4) 00348 #define FUTSEL_CIM_SCKSEL_MASK (0x0FU << 0) 00349 #define FUTSEL_CIM_SCKSEL_AUDIO_CLK_SET (0U) 00350 #define FUTSEL_CIM_SCKSEL_AUDIO_X1_SET (1U) 00351 #define FUTSEL_CIM_SCKSEL_MLB_CLK_SET (2U) 00352 #define FUTSEL_CIM_SCKSEL_USB_X1_SET (3U) 00353 #define FUTSEL_CIM_SCKSEL_CLKP1_2_SET (4U) 00354 #define FUTSEL_CIM_SCKSEL_MTUSEL2_SET (5U) 00355 #define FUTSEL_CIM_SCKSEL_SSIF0_WS_SET (8U) 00356 #define FUTSEL_CIM_SCKSEL_SSIF1_WS_SET (9U) 00357 #define FUTSEL_CIM_SCKSEL_SSIF2_WS_SET (10U) 00358 #define FUTSEL_CIM_SCKSEL_SSIF3_WS_SET (11U) 00359 #define FUTSEL_CIM_SCKSEL_SSIF4_WS_SET (12U) 00360 #define FUTSEL_CIM_SCKSEL_SSIF5_WS_SET (13U) 00361 00362 #define SSIPMD_CIM_SSI5CKS_MASK (1U << 21) 00363 #define SSIPMD_CIM_SSI5CKS_SET (1U << 21) 00364 #define SSIPMD_CIM_SSI4CKS_MASK (1U << 20) 00365 #define SSIPMD_CIM_SSI4CKS_SET (1U << 20) 00366 #define SSIPMD_CIM_SSI3CKS_MASK (1U << 19) 00367 #define SSIPMD_CIM_SSI3CKS_SET (1U << 19) 00368 #define SSIPMD_CIM_SSI2CKS_MASK (1U << 18) 00369 #define SSIPMD_CIM_SSI2CKS_SET (1U << 18) 00370 #define SSIPMD_CIM_SSI1CKS_MASK (1U << 17) 00371 #define SSIPMD_CIM_SSI1CKS_SET (1U << 17) 00372 #define SSIPMD_CIM_SSI0CKS_MASK (1U << 16) 00373 #define SSIPMD_CIM_SSI0CKS_SET (1U << 16) 00374 #define SSIPMD_CIM_SSI3PMD_SHIFT (14U) 00375 #define SSIPMD_CIM_SSI3PMD_MASK (3U << SSIPMD_CIM_SSI3PMD_SHIFT) 00376 #define SSIPMD_CIM_SSI345EN_MASK (1U << 12) 00377 #define SSIPMD_CIM_SSI345EN_SET (1U << 12) 00378 #define SSIPMD_CIM_SSI4PMD_SHIFT (10U) 00379 #define SSIPMD_CIM_SSI4PMD_MASK (3U << SSIPMD_CIM_SSI4PMD_SHIFT) 00380 #define SSIPMD_CIM_SSI5PMD_SHIFT (8U) 00381 #define SSIPMD_CIM_SSI5PMD_MASK (3U << SSIPMD_CIM_SSI5PMD_SHIFT) 00382 #define SSIPMD_CIM_SSI012EN_MASK (1U << 4) 00383 #define SSIPMD_CIM_SSI012EN_SET (1U << 4) 00384 #define SSIPMD_CIM_SSI2PMD_SHIFT (2U) 00385 #define SSIPMD_CIM_SSI2PMD_MASK (3U << SSIPMD_CIM_SSI2PMD_SHIFT) 00386 #define SSIPMD_CIM_SSI1PMD_SHIFT (0U) 00387 #define SSIPMD_CIM_SSI1PMD_MASK (3U << SSIPMD_CIM_SSI1PMD_SHIFT) 00388 00389 #define SSICTRL_CIM_SSI3TX_SET (1U << 30) 00390 #define SSICTRL_CIM_SSI4TX_SET (1U << 29) 00391 #define SSICTRL_CIM_SSI5TX_SET (1U << 28) 00392 #define SSICTRL_CIM_SSI345TEN_SET (1U << 17) 00393 #define SSICTRL_CIM_SSI0TX_SET (1U << 14) 00394 #define SSICTRL_CIM_SSI1TX_SET (1U << 13) 00395 #define SSICTRL_CIM_SSI2TX_SET (1U << 12) 00396 #define SSICTRL_CIM_SSI012TEN_SET (1U << 1) 00397 00398 #define SRCRSEL_CIM_PLACE_N_MASK (7U) 00399 #define SRCRSEL_CIM_PLACE_N_SHIFT (4U) 00400 00401 #define MIXRSEL_CIM_PLACE_N_MASK (7U) 00402 #define MIXRSEL_CIM_PLACE_N_SHIFT (4U) 00403 00404 00405 /* SSIF Register Set Value */ 00406 /* Init Value */ 00407 #define SCUX_SSICR_INIT_VALUE (0x00000000U) 00408 #define SCUX_SSIFCR_INIT_VALUE (0x00000000U) 00409 #define SCUX_SSIFTDR_INIT_VALUE (0x00000000U) 00410 #define SCUX_SSITDMR_INIT_VALUE (0x00000000U) 00411 #define SCUX_SSIFCCR_INIT_VALUE (0x00000000U) 00412 #define SCUX_SSIFCMR_INIT_VALUE (0x00000000U) 00413 00414 /* SSIF bit value & mask & fixed setting */ 00415 #define SCUX_SSICR_CKS_SET (1U << 30) 00416 #define SCUX_SSICR_TUIEN_SET (1U << 29) 00417 #define SCUX_SSICR_TOIEN_SET (1U << 28) 00418 #define SCUX_SSICR_RUIEN_SET (1U << 27) 00419 #define SCUX_SSICR_ROIEN_SET (1U << 26) 00420 #define SCUX_SSICR_CHNL_SET_1CH (0U << 22) 00421 #define SCUX_SSICR_CHNL_SET_2CH (1U << 22) 00422 #define SCUX_SSICR_CHNL_SET_3CH (2U << 22) 00423 #define SCUX_SSICR_CHNL_SET_4CH (3U << 22) 00424 #define SCUX_SSICR_DWL_16BIT_SET (1U << 19) 00425 #define SCUX_SSICR_DWL_24BIT_SET (5U << 19) 00426 #define SCUX_SSICR_SWL_SHIFT (16U) 00427 #define SCUX_SSICR_SCKD_SET (1U << 15) 00428 #define SCUX_SSICR_SWSD_SET (1U << 14) 00429 #define SCUX_SSICR_SCKP_SET (1U << 13) 00430 #define SCUX_SSICR_SWSP_SET (1U << 12) 00431 #define SCUX_SSICR_SPDP_SET (1U << 11) 00432 #define SCUX_SSICR_SDTA_SET (1U << 10) 00433 #define SCUX_SSICR_DEL_SET (1U << 8) 00434 #define SCUX_SSICR_CKDV_SHIFT (4U) 00435 #define SCUX_SSICR_TEN_SET (1U << 1) 00436 00437 #define SCUX_SSITDMR_CONT_SET (1U << 8) 00438 #define SCUX_SSITDMR_TDM_SET (1U << 0) 00439 00440 /* SCUX fixed value */ 00441 #define SCUX_RATE_CONVERT_CALC_VALUE (0x400000U) 00442 #define SCUX_CALC_MINFS_VALUE (100U) 00443 #define SCUX_MAX_DIV_CLK (2046U) 00444 #define SCUX_MIN_RATE_MIN_PAERCENTAGE (90U) 00445 #define SCUX_MIN_RATE_MAX_PAERCENTAGE (98U) 00446 #define SCUX_MIN_RATE_DENOMINATOR (100U) 00447 #define SCUX_MAX_WAIT_TIME (0xFFFFFFU) 00448 #define SCUX_MAX_DIGITAL_VOLUME (0x7FFFFFU) 00449 #define SCUX_MAX_RAMP_VOLUME (0x3FFU) 00450 #define SCUX_RATE_INT_CONV_VALUE (1000U) 00451 #define SCUX_ADJUST_REST_VALUE (1U) 00452 #define SCUX_MAX_CONV_RATE (16000U) 00453 #define SCUX_MIN_CONV_RATE_NORMAL_CH1_2 (125U) 00454 #define SCUX_MIN_CONV_RATE_NORMAL_CH4 (250U) 00455 #define SCUX_MIN_CONV_RATE_NORMAL_CH6 (375U) 00456 #define SCUX_MIN_CONV_RATE_NORMAL_CH8 (500U) 00457 #define SCUX_MIN_CONV_RATE_DELAY1 (500U) 00458 #define SCUX_MIN_CONV_RATE_DELAY2 (1000U) 00459 #define SCUX_MIN_FREQ (1000U) 00460 #define SCUX_MAX_FREQ_CH1_4 (96000U) 00461 #define SCUX_MAX_FREQ_CH6 (66000U) 00462 #define SCUX_MAX_FREQ_CH8 (49000U) 00463 #define SCUX_PROC_DELAY_NONE (0U) 00464 #define SCUX_PROCESS_DELAY_NORMAL_CH1 (641U) 00465 #define SCUX_PROCESS_DELAY_NORMAL_CH2 (321U) 00466 #define SCUX_PROCESS_DELAY_NORMAL_CH4 (161U) 00467 #define SCUX_PROCESS_DELAY_NORMAL_CH6 (102U) 00468 #define SCUX_PROCESS_DELAY_NORMAL_CH8 (81U) 00469 #define SCUX_PROCESS_DELAY_1_CH1_2 (81U) 00470 #define SCUX_PROCESS_DELAY_2_CH1_2 (49U) 00471 #define SCUX_LOGIC_DELAY_BYPASS_ON (1U) 00472 #define SCUX_LOGIC_DELAY_BYPASS_OFF (3U) 00473 #define SCUX_AUDIO_X1 (22579200U) 00474 #define SCUX_AUDIO_CLK (0U) 00475 #define SCUX_MLB_CLK (66670000U) 00476 #define SCUX_USB_X1 (48000000U) 00477 #define SCUX_CLKLP1_DIV2 (33335000U) 00478 #define SCUX_SYSTEMWORD_16 (16U) 00479 #define SCUX_SYSTEMWORD_24 (24U) 00480 #define SCUX_SYSTEMWORD_32 (32U) 00481 #define SCUX_SYSTEMWORD_48 (48U) 00482 #define SCUX_SYSTEMWORD_64 (64U) 00483 #define SCUX_SYSTEMWORD_128 (128U) 00484 #define SCUX_SYSTEMWORD_256 (256U) 00485 #define SCUX_SSIF_CLK_DIV1 (1U) 00486 #define SCUX_SSIF_CLK_DIV2 (2U) 00487 #define SCUX_SSIF_CLK_DIV4 (4U) 00488 #define SCUX_SSIF_CLK_DIV8 (8U) 00489 #define SCUX_SSIF_CLK_DIV16 (16U) 00490 #define SCUX_SSIF_CLK_DIV32 (32U) 00491 #define SCUX_SSIF_CLK_DIV64 (64U) 00492 #define SCUX_SSIF_CLK_DIV128 (128U) 00493 #define SCUX_SSIF_CLK_DIV6 (6U) 00494 #define SCUX_SSIF_CLK_DIV12 (12U) 00495 #define SCUX_SSIF_CLK_DIV24 (24U) 00496 #define SCUX_SSIF_CLK_DIV48 (48U) 00497 #define SCUX_SSIF_CLK_DIV96 (96U) 00498 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH0 (0U) 00499 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH1 (1U) 00500 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH2 (2U) 00501 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH3 (3U) 00502 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH4 (4U) 00503 #define SCUX_SSIF_GPIO_SNCR_SHIFT_CH5 (5U) 00504 #define SCUX_DUMMY_BUF_SIZE (4096U) 00505 #define SCUX_GET_ROUTE_MASK (0xF000) 00506 #define SCUX_ROUTE_MEM_TO_MEM (0x1000) 00507 #define SCUX_ROUTE_SSIF (0x2000) 00508 #define SCUX_ROUTE_MIX (0x3000) 00509 #define SCUX_FIFO_SIZE_CH0_1 (1024U) 00510 #define SCUX_FIFO_SIZE_CH2_3 (256U) 00511 #define SCUX_SSIF_NO_USE_CH (0xFFFFU) 00512 #define SCUX_SSIF_USE_MIX_BIT (0x1000U) 00513 #define SRC_MOD_SRC0 (0U) 00514 #define SRC_MOD_SRC1 (1U) 00515 #define SCUX_EVEN_VALUE_DIV (2U) 00516 #define SCUX_SSIF_NUM_CH_ARRANGEMENT (3U) 00517 #define SCUX_SSIF_CH_ARRANGEMENT1 (0U) 00518 #define SCUX_SSIF_CH_ARRANGEMENT2 (1U) 00519 #define SCUX_SSIF_CH_ARRANGEMENT3 (2U) 00520 #define SCUX_DMA_UNIT_SIZE16 (2U) 00521 #define SCUX_DMA_UNIT_SIZE24 (4U) 00522 #define SCUX_HALF_SIZE_VALUE (2U) 00523 #define SCUX_RAMP_WAIT_MAX (10U) 00524 00525 /************************************************************************* 00526 Enumerated Types 00527 *************************************************************************/ 00528 00529 /* DRV Status */ 00530 typedef enum 00531 { 00532 SCUX_DRV_UNINIT = 0, /* Uninit */ 00533 #if(1) /* mbed */ 00534 SCUX_DRV_INIT_RUNNING = 1, /* Init running */ 00535 SCUX_DRV_INIT = 2 /* Init */ 00536 #else /* not mbed */ 00537 SCUX_DRV_INIT = 1 /* Init */ 00538 #endif /* end mbed */ 00539 } scux_stat_drv_t; 00540 00541 /* Channel Status */ 00542 typedef enum 00543 { 00544 SCUX_CH_UNINIT = 0, /* Uninit */ 00545 SCUX_CH_INIT = 1, /* Init */ 00546 SCUX_CH_STOP = 2, /* Open (request can't be received) */ 00547 SCUX_CH_TRANS_IDLE = 4, /* Open (request is not received) */ 00548 SCUX_CH_TRANS_RD = 8, /* Transfer (read only) */ 00549 SCUX_CH_TRANS_WR = 16, /* Transfer (read only) */ 00550 SCUX_CH_TRANS_RDWR = 32, /* Transfer (read & write) */ 00551 SCUX_CH_STOP_WAIT = 64, /* Transfer (wait flush stop) */ 00552 SCUX_CH_STOP_WAIT_IDLE = 128 /* Transfer (wait flush stop and request is not received */ 00553 } scux_stat_ch_t; 00554 00555 /* fifo size */ 00556 typedef enum 00557 { 00558 SCUX_FIFO_REQ_SIZE_256_64 = 0, /* fifo size is 256 data (SRC0, 1) and 64 data (SRC2, 3) */ 00559 SCUX_FIFO_REQ_SIZE_128_32 = 1, /* fifo size is 128 data (SRC0, 1) and 32 data (SRC2, 3) */ 00560 SCUX_FIFO_REQ_SIZE_64_16 = 2, /* fifo size is 64 data (SRC0, 1) and 16 data (SRC2, 3) */ 00561 SCUX_FIFO_REQ_SIZE_32_8 = 3, /* fifo size is 32 data (SRC0, 1) and 8 data (SRC2, 3) */ 00562 SCUX_FIFO_REQ_SIZE_16_4 = 4, /* fifo size is 16 data (SRC0, 1) and 4 data (SRC2, 3) */ 00563 SCUX_FIFO_REQ_SIZE_8_2 = 5, /* fifo size is 8 data (SRC0, 1) and 2 data (SRC2, 3) */ 00564 SCUX_FIFO_REQ_SIZE_4_1 = 6, /* fifo size is 4 data (SRC0, 1) and 1 data (SRC2, 3) */ 00565 SCUX_FIFO_REQ_SIZE_2 = 7, /* fifo size is 2 data (SRC0, 1) */ 00566 SCUX_FIFO_REQ_SIZE_1 = 8 /* fifo size is 1 data (SRC0, 1) */ 00567 } scux_fifo_req_size_t; 00568 00569 /* SSIF over sampling clock divide rate */ 00570 typedef enum 00571 { 00572 SCUX_SSIF_CKDIV_1 = 0, /* divide rate 1/1 */ 00573 SCUX_SSIF_CKDIV_2 = 1, /* divide rate 1/2 */ 00574 SCUX_SSIF_CKDIV_4 = 2, /* divide rate 1/4 */ 00575 SCUX_SSIF_CKDIV_8 = 3, /* divide rate 1/8 */ 00576 SCUX_SSIF_CKDIV_16 = 4, /* divide rate 1/16 */ 00577 SCUX_SSIF_CKDIV_32 = 5, /* divide rate 1/32 */ 00578 SCUX_SSIF_CKDIV_64 = 6, /* divide rate 1/64 */ 00579 SCUX_SSIF_CKDIV_128 = 7, /* divide rate 1/128 */ 00580 SCUX_SSIF_CKDIV_6 = 8, /* divide rate 1/6 */ 00581 SCUX_SSIF_CKDIV_12 = 9, /* divide rate 1/12 */ 00582 SCUX_SSIF_CKDIV_24 = 10, /* divide rate 1/24 */ 00583 SCUX_SSIF_CKDIV_48 = 11, /* divide rate 1/48 */ 00584 SCUX_SSIF_CKDIV_96 = 12 /* divide rate 1/96 */ 00585 } scux_ssif_ckdiv_t; 00586 00587 /************************************************************************* 00588 Structures 00589 *************************************************************************/ 00590 00591 /* Information of SCUX register */ 00592 typedef struct 00593 { 00594 struct st_scux_from_dvuir_dvu0_n *p_dvu_reg; /* DVU register */ 00595 struct st_scux_from_srcir0_2src0_n *p_src_reg; /* SRC register */ 00596 struct st_scux_from_ffuir_ffu0_n *p_ffu_reg; /* FFU register */ 00597 struct st_scux_from_ffdir_ffd0_n *p_ffd_reg; /* FFD register */ 00598 struct st_scux_from_opcir_opc0_n *p_opc_reg; /* OPC register */ 00599 struct st_scux_from_ipcir_ipc0_n *p_ipc_reg; /* IPC register */ 00600 volatile uint32_t *mixir_mix0_0; /* MIXIR_MIX0_0 register */ 00601 volatile uint32_t *madir_mix0_0; /* MADIR_MIX0_0 register */ 00602 volatile uint32_t *mixbr_mix0_0; /* MIXBR_MIX0_0 register */ 00603 volatile uint32_t *mixmr_mix0_0; /* MIXMR_MIX0_0 register */ 00604 volatile uint32_t *mvpdr_mix0_0; /* MVPDR_MIX0_0 register */ 00605 volatile uint32_t *mdb_n_r_mix0_0; /* MDBAR_MIX0_0 - MDBDR_MIX0_0 register */ 00606 volatile uint32_t *mdber_mix0_0; /* MDBER_MIX0_0 register */ 00607 volatile uint32_t *mixsr_mix0_0; /* MIXSR_MIX0_0 register */ 00608 volatile uint32_t *swrsr_cim; /* SWRSR_CIM register */ 00609 volatile uint32_t *dmacr_cim; /* DMACR_CIM register */ 00610 volatile uint32_t *dmatd_n_cim; /* DMATD0_CIM - DMATD3_CIM register */ 00611 volatile uint32_t *dmatu_n_cim; /* DMATU0_CIM - DMATU3_CIM register */ 00612 volatile uint32_t *ssirsel_cim; /* SSIRSEL_CIM register */ 00613 volatile uint32_t *fdtsel_n_cim; /* FDTSEL0_CIM - FDTSEL3_CIM register */ 00614 volatile uint32_t *futsel_n_cim; /* FUTSEL0_CIM - FUTSEL3_CIM register */ 00615 volatile uint32_t *ssipmd_cim; /* SSIPMD_CIM register */ 00616 volatile uint32_t *ssictrl_cim; /* SSICTRL_CIM register */ 00617 volatile uint32_t *srcrsel_n_cim; /* SRCRSEL0_CIM - SRCRSEL3_CIM register */ 00618 volatile uint32_t *mixrsel_cim; /* MIXRSEL_CIM register */ 00619 } scux_reg_info_t; 00620 00621 /* Information of SSIF */ 00622 typedef struct 00623 { 00624 bool_t ssif_enable; /* USE SSIF flag */ 00625 bool_t ssif_setup; /* SSIF setup complete flag */ 00626 osSemaphoreId sem_ch_scux_ssif_access; /* SSIF info semaphore */ 00627 int_t scux_channel; /* SCUX ch which is using SSIF */ 00628 scux_src_clk_source_t pin_clk; /* AUDIO_CLK source */ 00629 scux_pin_mode_t pin_mode; /* SSIF sync setting */ 00630 scux_pin_mode_t pin_mode_backup; /* back up of SSIF sync setting */ 00631 scux_ssif_cfg_t ssif_cfg; /* SSIF parameters */ 00632 scux_ssif_ckdiv_t clk_div; /* Over sampling clock divide rate */ 00633 volatile struct st_ssif *p_scux_ssif_reg; /* SSIF register */ 00634 } scux_ssif_info_t; 00635 00636 /* Information of Driver */ 00637 typedef struct 00638 { 00639 osSemaphoreId sem_shared_access; /* Shared info semaphore */ 00640 bool_t mix_setup; /* MIX setup complete flag */ 00641 uint32_t mix_run_ch; /* MIX used channel */ 00642 uint32_t mix_ssif_ch; /* SSIF channel on used MIX */ 00643 bool_t mixmode_ramp; /* Ramp mode / Step mode select */ 00644 scux_mix_ramp_time_t up_period; /* Ramp up period */ 00645 scux_mix_ramp_time_t down_period; /* Ramp down period */ 00646 uint32_t mix_vol[SCUX_CH_NUM]; /* MIX volume value */ 00647 scux_audio_channel_t select_out_data_ch[SCUX_AUDIO_CH_MAX]; /* Audio data position setting */ 00648 uint32_t ssictrl_cim_value; /* SSICTRL_CIM register (write only) value */ 00649 } scux_shared_info_t; 00650 00651 /* Information of Channel */ 00652 typedef struct 00653 { 00654 int_t channel; /* Channel Number */ 00655 bool_t enabled; /* Used channel flag */ 00656 int_t open_flags; /* Read/write flag */ 00657 scux_stat_ch_t ch_stat; /* Channel Status */ 00658 osSemaphoreId sem_ch_scux_access; /* Channel Semaphore */ 00659 AHF_S tx_que; /* Write request queue */ 00660 AHF_S rx_que; /* Read request queue */ 00661 AIOCB *p_tx_aio; /* Write request information pointer */ 00662 AIOCB *p_tx_next_aio; /* Next write request information pointer */ 00663 AIOCB *p_rx_aio; /* Read request information pointer */ 00664 AIOCB *p_rx_next_aio; /* Next read request information pointer */ 00665 uint8_t int_level; /* Interrupt priority */ 00666 IRQn_Type int_num[SCUX_INT_MAX]; /* Each interrupt number */ 00667 int_t dma_tx_ch; /* Write DMA channel */ 00668 int_t dma_rx_ch; /* Read DMA channel */ 00669 dma_res_select_t dma_resource_tx; /* Write DMA resource */ 00670 dma_res_select_t dma_resource_rx; /* Read DMA resource */ 00671 uint32_t dma_tx_current_size; /* Current write DMA size */ 00672 uint32_t dma_tx_next_size; /* Next write DMA size */ 00673 uint32_t dma_rx_current_size; /* Current read DMA size */ 00674 uint32_t dma_rx_next_size; /* Next read DMA size */ 00675 dma_ch_setup_t dma_tx_setup; /* Write DMA paramtter */ 00676 dma_ch_setup_t dma_rx_setup; /* Read DMA paramtter */ 00677 scux_reg_info_t *p_scux_reg; /* SCUX register information */ 00678 scux_route_t route_set; /* SCUX route paramter */ 00679 scux_src_cfg_t src_cfg; /* SRC parameter */ 00680 scux_dvu_cfg_t dvu_cfg; /* DVU parameter */ 00681 bool_t dvu_setup; /* DVU setup complete flag */ 00682 uint32_t dvu_mute_stat; /* DVU mute status */ 00683 scux_ssif_info_t *p_ssif_info1; /* SSIF channel information1 */ 00684 scux_ssif_info_t *p_ssif_info2; /* SSIF channel information2 */ 00685 scux_ssif_info_t *p_ssif_info3; /* SSIF channel information3 */ 00686 void (*p_flush_callback)(int_t ercd); /* Call back pointer for flush stop */ 00687 bool_t first_tx_flag; /* First write data transfer flag */ 00688 bool_t first_rx_flag; /* First read data transfer flag */ 00689 bool_t first_ramp_flag; /* First ramp setting flag */ 00690 volatile uint8_t *p_tx_dummy_data; /* Write dummy data buffer pointer */ 00691 volatile uint8_t *p_rx_dummy_data; /* Read dummy data buffer pointer */ 00692 uint32_t flush_stop_size; /* Needed transfer size for flush stop */ 00693 uint32_t fifo_size; /* Fifo size */ 00694 uint32_t fifo_req_size; /* Fifo request size */ 00695 uint32_t last_dummy_size; /* Last dummy data size for flush stop */ 00696 uint32_t tx_fifo_total_size; /* Total data size of write request size / FIFO size */ 00697 uint32_t rx_fifo_total_size; /* Total data size of read request size / FIFO size */ 00698 bool_t tx_dummy_run_flag; /* Dummy data transfer flag */ 00699 bool_t cancel_operate_flag; /* indicate cancel operation */ 00700 bool_t restart_ramp_flag; /* ramp restart flag after cancel operation */ 00701 uint32_t input_rate; /* Input rate */ 00702 uint32_t output_rate; /* Output rate */ 00703 uint32_t futsel_cim_value; /* FUTSEL_CIM register value (write only) */ 00704 int_t err_stat_backup; /* SCUX HW error status backup */ 00705 } scux_info_ch_t; 00706 00707 /* Information of Driver */ 00708 typedef struct 00709 { 00710 scux_stat_drv_t drv_stat; /* DRV status */ 00711 scux_info_ch_t info_ch[SCUX_CH_NUM]; /* CH status */ 00712 scux_shared_info_t shared_info; /* shared resource information */ 00713 } scux_info_drv_t; 00714 00715 /*********************************************************************************** 00716 Function Prototypes 00717 ***********************************************************************************/ 00718 00719 scux_info_drv_t *SCUX_GetDrvInstance(void); 00720 scux_info_ch_t *SCUX_GetDrvChInfo(const int_t channel); 00721 scux_ssif_info_t *SCUX_GetSsifChInfo(const int_t channel); 00722 #if(1) /* mbed */ 00723 int_t SCUX_InitializeOne(const int_t channel, const scux_channel_cfg_t * const p_scux_init_param); 00724 void SCUX_UnInitializeOne(const int_t channel); 00725 #endif /* end mbed */ 00726 int_t SCUX_Initialize(const scux_channel_cfg_t * const p_scux_init_param); 00727 void SCUX_UnInitialize(void); 00728 int_t SCUX_OpenChannel(const int_t channel, const int_t flags); 00729 int_t SCUX_CloseChannel(const int_t channel); 00730 int_t SCUX_IoctlTransStart(const int_t channel); 00731 int_t SCUX_IoctlFlushStop(const int_t channel, void (* const callback)(int_t ercd), const int_t was_masked); 00732 int_t SCUX_IoctlClearStop(const int_t channel, const int_t was_masked); 00733 void SCUX_IoctlSetRoute(const int_t channel, const scux_route_t route); 00734 int_t SCUX_IoctlSetPinClk(const int_t channel, const scux_ssif_pin_clk_t * const p_pin_clk_param); 00735 int_t SCUX_IoctlSetPinMode(const int_t channel, const scux_ssif_pin_mode_t * const p_pin_mode_param); 00736 void SCUX_IoctlSetSrcCfg(const int_t channel, const scux_src_cfg_t * const p_src_param); 00737 void SCUX_IoctlSetDvuCfg(const int_t channel, const scux_dvu_cfg_t * const p_dvu_param); 00738 int_t SCUX_IoctlSetDvuDigiVol(const int_t channel, const scux_dvu_digi_vol_t * const p_digi_vol_param); 00739 int_t SCUX_IoctlSetDvuRampVol(const int_t channel, const scux_dvu_ramp_vol_t * const p_ramp_vol_param); 00740 int_t SCUX_IoctlSetDvuZerocrossMute(const int_t channel, const scux_zc_mute_t * const p_zc_mute_param); 00741 int_t SCUX_IoctlSetStopMute(const int_t channel, const uint32_t audio_channel); 00742 int_t SCUX_IoctlSetMixCfg(const scux_mix_cfg_t * const p_mix_param); 00743 int_t SCUX_IoctlSetMixVol(const int_t channel, const uint32_t mix_vol); 00744 int_t SCUX_IoctlSetSsifCfg(const scux_ssif_cfg_t *const p_ssif_param); 00745 void SCUX_IoctlGetWriteStat(const int_t channel, uint32_t * const p_write_stat); 00746 void SCUX_IoctlGetReadStat(const int_t channel, uint32_t * const p_read_stat); 00747 void SCUX_IoctlGetDvuStat(const int_t channel, uint32_t * const p_dvu_stat); 00748 void SCUX_IoctlGetMuteStat(const int_t channel, uint32_t * const p_mute_stat); 00749 void SCUX_IoctlGetMixStat(const int_t channel, uint32_t * const p_mix_stat); 00750 int_t SCUX_CheckParam(scux_info_ch_t * const p_scux_info_ch); 00751 int_t SCUX_FlushWriteStart(scux_info_ch_t * const p_scux_info_ch); 00752 void SCUX_InitHw(scux_info_ch_t * const p_scux_info_ch); 00753 void SCUX_SetupSsif(const scux_info_ch_t * const p_scux_info_ch); 00754 void SCUX_SetupSrc(scux_info_ch_t * const p_scux_info_ch); 00755 void SCUX_SetupDvu(scux_info_ch_t * const p_scux_info_ch); 00756 int_t SCUX_SetupDma(scux_info_ch_t * const p_scux_info_ch); 00757 void SCUX_SyncStartHw(const scux_info_ch_t * const p_scux_info_ch); 00758 void SCUX_AsyncStartHw(scux_info_ch_t * const p_scux_info_ch); 00759 int_t SCUX_CopyWriteStart(scux_info_ch_t * const p_scux_info_ch, AIOCB * const p_write_aio); 00760 int_t SCUX_DirectWriteStart(scux_info_ch_t * const p_scux_info_ch, AIOCB * const p_write_aio); 00761 int_t SCUX_CopyReadStart(scux_info_ch_t * const p_scux_info_ch, AIOCB * const p_read_aio); 00762 int_t SCUX_CopyCancelSpecific(scux_info_ch_t * const p_scux_info_ch, AIOCB * const p_cancel_aio); 00763 int_t SCUX_DirectCancelSpecific(scux_info_ch_t * const p_scux_info_ch, AIOCB * const p_cancel_aio); 00764 int_t SCUX_CopyCancelAll(scux_info_ch_t * const p_scux_info_ch); 00765 int_t SCUX_DirectCancelAll(scux_info_ch_t * const p_scux_info_ch); 00766 void SCUX_AdjustAccessFifo(scux_info_ch_t * const p_scux_info_ch, const uint32_t tx_remain_size, const uint32_t rx_remain_size); 00767 void SCUX_SyncStartHw(const scux_info_ch_t * const p_scux_info_ch); 00768 void SCUX_AsyncStartHw(scux_info_ch_t * const p_scux_info_ch); 00769 void SCUX_SyncStopHw(const scux_info_ch_t * const p_scux_info_ch); 00770 void SCUX_AsyncStopHw(scux_info_ch_t * const p_scux_info_ch); 00771 void SCUX_SetDigiVolRegister(const scux_info_ch_t * const p_scux_info_ch); 00772 void SCUX_SetRampVolRegister(scux_info_ch_t * const p_scux_info_ch); 00773 void SCUX_SetZerocrossMuteRegister(const scux_info_ch_t * const p_scux_info_ch); 00774 void SCUX_SetMixVolRegister(const int_t channel); 00775 int_t SCUX_CheckSsifClockDiv(const scux_info_ch_t * const p_scux_info_ch, const uint32_t ssif_ch_num); 00776 void SCUX_SetupSsifGpio(const scux_ssif_ch_num_t ssif_ch); 00777 size_t SCUX_StrNLen(const char_t* p_str, size_t maxlen); 00778 00779 #endif /* SCUX_H */
Generated on Tue Jul 12 2022 20:43:58 by 1.7.2