mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-22 05:54:17 +00:00
add hal sdioh
This commit is contained in:
parent
494a7e1b39
commit
d34db1740e
1 changed files with 110 additions and 0 deletions
|
@ -0,0 +1,110 @@
|
||||||
|
/*
|
||||||
|
* hal_sdio_host.c (disasm hal_sdio_host.o)
|
||||||
|
*
|
||||||
|
* RTL8710/11 pvvx 12/2016
|
||||||
|
*/
|
||||||
|
#include "rtl8195a.h"
|
||||||
|
#include "sd.h"
|
||||||
|
#include "sdio_host.h"
|
||||||
|
#include "hal_sdio_host.h"
|
||||||
|
#include "rtl8195a_sdio_host.h"
|
||||||
|
#include "hal_pinmux.h"
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// Function declarations
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
|
// Data declarations
|
||||||
|
|
||||||
|
//----- HalSdioHostInit(PHAL_SDIO_HOST_ADAPTER)
|
||||||
|
HAL_Status HalSdioHostInit(IN VOID *Data) {
|
||||||
|
PHAL_SDIO_HOST_ADAPTER pSdioHostAdapter = (PHAL_SDIO_HOST_ADAPTER) Data;
|
||||||
|
HAL_Status result;
|
||||||
|
if (FunctionChk(SDIOH, 0) != 0) {
|
||||||
|
if (pSdioHostAdapter != NULL) {
|
||||||
|
if (HalSdioHostInitHostRtl8195a(pSdioHostAdapter) != HAL_OK) {
|
||||||
|
result = HAL_ERR_HW;
|
||||||
|
} else {
|
||||||
|
result = HalSdioHostInitCardRtl8195a(pSdioHostAdapter);
|
||||||
|
if (result == HAL_OK) {
|
||||||
|
REG_POWER_STATE RegPwrState;
|
||||||
|
RegPwrState.FuncIdx = SDIOH;
|
||||||
|
RegPwrState.PwrState = ACT;
|
||||||
|
RegPowerState(RegPwrState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
result = HAL_ERR_PARA;
|
||||||
|
} else
|
||||||
|
result = HAL_ERR_UNKNOWN;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- HalSdioHostEnable(PHAL_SDIO_HOST_ADAPTER)
|
||||||
|
HAL_Status HalSdioHostEnable(void *Data) {
|
||||||
|
// PHAL_SDIO_HOST_ADAPTER pSdioHostAdapter = (PHAL_SDIO_HOST_ADAPTER) Data;
|
||||||
|
HAL_Status result = HalSdioHostEnableRtl8195a(Data);
|
||||||
|
REG_POWER_STATE RegPwrState;
|
||||||
|
RegPwrState.FuncIdx = SDIOH;
|
||||||
|
RegPwrState.PwrState = ACT;
|
||||||
|
if (result == HAL_OK)
|
||||||
|
RegPowerState(RegPwrState);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- HalSdioHostDeInit(PHAL_SDIO_HOST_ADAPTER)
|
||||||
|
HAL_Status HalSdioHostDeInit(IN VOID *Data) {
|
||||||
|
PHAL_SDIO_HOST_ADAPTER pSdioHostAdapter = (PHAL_SDIO_HOST_ADAPTER) Data;
|
||||||
|
REG_POWER_STATE SdioHostPwrState;
|
||||||
|
u8 HwState;
|
||||||
|
HAL_Status result;
|
||||||
|
SdioHostPwrState.FuncIdx = SDIOH;
|
||||||
|
SdioHostPwrState.PwrState = ACT;
|
||||||
|
|
||||||
|
QueryRegPwrState(SdioHostPwrState.FuncIdx, &SdioHostPwrState.PwrState,
|
||||||
|
&HwState);
|
||||||
|
if (SdioHostPwrState.PwrState & 0xF7) {
|
||||||
|
HalSdioHostEnable(pSdioHostAdapter);
|
||||||
|
QueryRegPwrState(SdioHostPwrState.FuncIdx, &SdioHostPwrState.PwrState,
|
||||||
|
&HwState);
|
||||||
|
}
|
||||||
|
if (SdioHostPwrState.PwrState == ACT) {
|
||||||
|
SdioHostPwrState.PwrState = INACT;
|
||||||
|
RegPowerState(SdioHostPwrState);
|
||||||
|
}
|
||||||
|
if (pSdioHostAdapter != NULL)
|
||||||
|
result = HalSdioHostDeInitRtl8195a(pSdioHostAdapter);
|
||||||
|
else
|
||||||
|
result = HAL_ERR_PARA;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- HalSdioHostDisable(PHAL_SDIO_HOST_ADAPTER)
|
||||||
|
HAL_Status HalSdioHostDisable(IN VOID *Data) {
|
||||||
|
HAL_Status result = HalSdioHostDisableRtl8195a(Data);
|
||||||
|
if (result == HAL_OK) {
|
||||||
|
REG_POWER_STATE RegPwrState;
|
||||||
|
RegPwrState.FuncIdx = SDIOH;
|
||||||
|
RegPwrState.PwrState = SLPCG;
|
||||||
|
RegPowerState(RegPwrState); // 0x0441
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- HalSdioHostOpInit(PHAL_SDIO_HOST_ADAPTER)
|
||||||
|
void HalSdioHostOpInit(void *Data) {
|
||||||
|
PHAL_SDIO_HOST_OP phsha = Data;
|
||||||
|
phsha->HalSdioHostInitHost = &HalSdioHostInitHostRtl8195a;
|
||||||
|
phsha->HalSdioHostInitCard = &HalSdioHostInitCardRtl8195a;
|
||||||
|
phsha->HalSdioHostDeInit = &HalSdioHostDeInitRtl8195a;
|
||||||
|
phsha->HalSdioHostRegIrq = &HalSdioHostIrqInitRtl8195a;
|
||||||
|
phsha->HalSdioHostReadBlocksDma = &HalSdioHostReadBlocksDmaRtl8195a;
|
||||||
|
phsha->HalSdioHostWriteBlocksDma = &HalSdioHostWriteBlocksDmaRtl8195a;
|
||||||
|
phsha->HalSdioHostStopTransfer = &HalSdioHostStopTransferRtl8195a;
|
||||||
|
phsha->HalSdioHostGetCardStatus = &HalSdioHostGetCardStatusRtl8195a;
|
||||||
|
phsha->HalSdioHostGetSdStatus = &HalSdioHostGetSdStatusRtl8195a;
|
||||||
|
phsha->HalSdioHostChangeSdClock = &HalSdioHostChangeSdClockRtl8195a;
|
||||||
|
phsha->HalSdioHostErase = &HalSdioHostEraseRtl8195a;
|
||||||
|
phsha->HalSdioHostGetWriteProtect = &HalSdioHostGetWriteProtectRtl8195a;
|
||||||
|
phsha->HalSdioHostSetWriteProtect = &HalSdioHostSetWriteProtectRtl8195a;
|
||||||
|
}
|
Loading…
Reference in a new issue