📄 mmc.c
字号:
/*===============================================================================
TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
Property of Texas Instruments
For Unrestricted Internal Use Only
Unauthorized reproduction and/or distribution is strictly prohibited.
This product is protected under copyright law and trade secret law
as an unpublished work.
Created 1999, (C) Copyright 1999 Texas Instruments. All rights reserved.
Filename : mmc.c
Description : Source file of Multi Media Card Adapter functions
This file manages 16 bits registers
Project : PerseusG4
Author : FRANCK FERRIZ
FUNCTIONS PROVIDED :
MMC_ReadAllCmdReg -
MMC_ReadAllArgReg1 |
MMC_ReadAllArgReg2 |
MMC_ReadAllFreqRatioReg |
MMC_ReadAllAdpStReg |
MMC_ReadAllMaskIrqReg |
MMC_ReadAllBufDtReg |
MMC_ReadAllBufConfReg |
MMC_ReadAllBufAfReg |
MMC_ReadAllBufAeReg | = for MMC_BASE_ADDR as base adress
MMC_ReadAllRespReg1 |
MMC_ReadAllRespReg2 |
MMC_ReadAllRespReg3 |
MMC_ReadAllRespReg4 |
MMC_ReadAllRespReg5 |
MMC_ReadAllRespReg6 |
MMC_ReadAllRespReg7 |
MMC_ReadAllRespReg8 |
MMC_SetMmcCommand |
MMC_WaitUntilTimeOut |
MMC_AllClksCutUnlessMmcAdapterClksWithWakeupAfterIrq-
===============================================================================
*/
#include "test.h"
#include "mmc.h"
/*
-------------------------------------------------------------------------
NAME : MMC_ReadAllCmdReg
DESCRIPTION : read MMC command register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllCmdReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(CMD_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllArgReg1
DESCRIPTION : read MMC argument register 1
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllArgReg1(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(ARG_REG_1_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllArgReg2
DESCRIPTION : read MMc argument register 2
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllArgReg2(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(ARG_REG_2_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllFreqRatioReg
DESCRIPTION : read MMC frequency ratio register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllFreqRatioReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(FREQ_RATIO_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllAdpStReg
DESCRIPTION : read MMC status register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllAdpStReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(ADP_ST_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllMaskIrqReg
DESCRIPTION : read MMC mask interrupt register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllMaskIrqReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(MASK_IRQ_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllReleaseReg
DESCRIPTION : read MMC release register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllReleaseReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RELEASE_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllBufDtReg
DESCRIPTION : read MMC buffer data register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllBufDtReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(BUF_DT_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllBufConfReg
DESCRIPTION : read MMC buffer configuration register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllBufConfReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(BUF_CONF_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllBufAfReg
DESCRIPTION :read MMC buffer almost full level
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllBufAfReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(BUF_AF_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllBufAeReg
DESCRIPTION : read MMC buffer almost empty register
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllBufAeReg(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(BUF_AE_REG_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg1
DESCRIPTION : read MMC response register1
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg1(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG1_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg2
DESCRIPTION : read MMC response register2
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg2(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG2_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg3
DESCRIPTION : read MMC response register3
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg3(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG3_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg4
DESCRIPTION : read MMC response register4
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg4(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG4_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg5
DESCRIPTION : read MMC response register5
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg5(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG5_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg6
DESCRIPTION : read MMC response register6
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg6(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG6_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg7
DESCRIPTION : read MMC response register7
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg7(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG7_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
MMC_ReadAllRespReg8
DESCRIPTION : read MMC response register8
-------------------------------------------------------------------------
*/
UWORD16 MMC_ReadAllRespReg8(void)
{
UWORD16 value = *(REGISTER_UWORD16*)(RESP_REG8_ADDR);
return value;
}
/*
-------------------------------------------------------------------------
NAME : MMC_SetMmcCommand
DESCRIPTION : set mmc command with its arguments
-------------------------------------------------------------------------
*/
void MMC_SetMmcCommand(UWORD16 mmc_arg_reg_1,UWORD16 mmc_arg_reg_2,UWORD16 CMD_number )
{
mmc_set_all_arg_reg_1(mmc_arg_reg_1);
mmc_set_all_arg_reg_2(mmc_arg_reg_2);
mmc_set_all_cmd_reg(CMD_number);
}
/*
-------------------------------------------------------------------------
NAME : MMC_WaitUntilTimeOut
DESCRIPTION : MMC_WaitUntilTimeOut
-------------------------------------------------------------------------
*/
void MMC_WaitUntilTimeOut(UWORD16 time_out)
{
UWORD8 i;
i=0;
while(i++ <= time_out) {/* WAIT */}
}
/*
-------------------------------------------------------------------------
NAME : MMC_AllClksCutUnlessMmcAdapterClksWithWakeupAfterIrq
DESCRIPTION : MMC_AllClksCutUnlessMmcAdapterClksWithWakeupAfterIrq
-------------------------------------------------------------------------
*/
void MMC_AllClksCutUnlessMmcAdapterClksWithWakeupAfterIrq(void)
{
CLKRST_ConfigIdleModule(TIMARM_MODULE_IDLE, SET_IN_IDLE);
CLKRST_ConfigIdleModule(LCDARM_MODULE_IDLE, SET_IN_IDLE);
CLKRST_ConfigIdleModule(PERARM_MODULE_IDLE, SET_NOT_IDLE);
CLKRST_ConfigIdleModule(XORPARM_MODULE_IDLE, SET_NOT_IDLE);
CLKRST_ConfigIdleModule(WDTARM_MODULE_IDLE, SET_IN_IDLE);
CLKRST_SetIdle(IDLE_INT_WKUP);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -