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