mirror of
				https://github.com/pvvx/RTL00MP3.git
				synced 2025-07-31 12:41:06 +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…
	
	Add table
		Add a link
		
	
		Reference in a new issue