1 /*
2 * @ : Copyright (c) 2021 Phytium Information Technology, Inc.
3 *
4 * SPDX-License-Identifier: Apache-2.0.
5 *
6 * @Date: 2021-03-31 14:59:20
7 * @LastEditTime: 2021-05-25 16:47:05
8 * @Description: This files is for sd ctrl option setting
9 *
10 * @Modify History: * * Ver Who Date Changes
11 * ----- ------ -------- --------------------------------------
12 */
13
14 #include "ft_sdctrl.h"
15 #include "ft_sdctrl_hw.h"
16 #include "ft_types.h"
17 #include "ft_io.h"
18 #include "ft_printf.h"
19 #include "ft_assert.h"
20
FSdCtrl_NormalIrqSet(FtsdCtrl_t * pFtsdCtrl,FT_IN FSdCtrl_NormalIrqSelect_t flgs)21 void FSdCtrl_NormalIrqSet(FtsdCtrl_t *pFtsdCtrl, FT_IN FSdCtrl_NormalIrqSelect_t flgs)
22 {
23 FSdCtrl_Config_t *pConfig;
24 u32 regValue;
25 Ft_assertVoid(FT_NULL != pFtsdCtrl);
26 pConfig = &pFtsdCtrl->config;
27
28 /* */
29 regValue = ((flgs & NORMAL_IRQ_CC) ? NORMAL_INT_EN_ECC : 0) | ((flgs & NORMAL_IRQ_CR) ? NORMAL_INT_EN_ECCRCE : 0) |
30 ((flgs & NORMAL_IRQ_EI) ? NORMAL_INT_EN_ECIE : 0);
31
32 Ft_out32(pConfig->baseAddress + NORMAL_INT_EN_REG_OFFSET, regValue);
33 }
34
FsdCtrl_errorIrqSet(FtsdCtrl_t * pFtsdCtrl,FT_IN FSdCtrl_ErrorIrqSelect_t flgs)35 void FsdCtrl_errorIrqSet(FtsdCtrl_t *pFtsdCtrl, FT_IN FSdCtrl_ErrorIrqSelect_t flgs)
36 {
37 FSdCtrl_Config_t *pConfig;
38 u32 regValue;
39 Ft_assertVoid(FT_NULL != pFtsdCtrl);
40 pConfig = &pFtsdCtrl->config;
41
42 regValue = ((flgs & ERROR_IRQ_CTE) ? ERROR_INT_EN_CTE : 0) | ((flgs & ERROR_IRQ_CCRCE) ? ERROR_INT_EN_CCRCE : 0) |
43 ((flgs & ERROR_IRQ_CIR) ? ERROR_INT_EN_CIR : 0) | ((flgs & ERROR_IRQ_CNR) ? ERROR_INT_EN_CNR : 0);
44
45 Ft_out32(pConfig->baseAddress + ERROR_INT_EN_REG_OFFSET, regValue);
46 }
47
FSdCtrl_BdIrqSet(FtsdCtrl_t * pFtsdCtrl,FT_IN FSdCtrl_BdIrqSelect flgs)48 void FSdCtrl_BdIrqSet(FtsdCtrl_t *pFtsdCtrl, FT_IN FSdCtrl_BdIrqSelect flgs)
49 {
50 FSdCtrl_Config_t *pConfig;
51 u32 regValue;
52 Ft_assertVoid(FT_NULL != pFtsdCtrl);
53 pConfig = &pFtsdCtrl->config;
54
55 regValue = ((flgs & BD_IRQ_TRS) ? BD_ISR_EN_ETRS : 0) | ((flgs & BD_IRQ_DTE) ? BD_ISR_EN_EDTE : 0) |
56 ((flgs & BD_IRQ_CMDE) ? BD_ISR_EN_ECMDE : 0) | ((flgs & BD_IRQ_TRE) ? BD_ISR_EN_ETRE : 0) |
57 ((flgs & BD_IRQ_NRCRC) ? BD_ISR_EN_ENRCRCE : 0) | ((flgs & BD_IRQ_DATFRAX) ? BD_ISR_EN_EDATFRAXE : 0) |
58 ((flgs & BD_IRQ_RESPE) ? BD_ISR_EN_RESPE : 0) | ((flgs & BD_IRQ_DAIS) ? BD_ISR_EN_EDAISE : 0);
59
60 Ft_out32(pConfig->baseAddress + BD_ISR_EN_REG_OFFSET, regValue);
61 }
62