📄 xllp_pccardsocket.c
字号:
{
//
//3.3V card detected; set bit[3] of the status register
//
pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR |= (XLLP_BIT_3);
pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR &= ~(XLLP_BIT_2);
}
else
{
//
//Unsupported PC Card voltage
//
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}*/
// (pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR) &= ~(XLLP_BCR_PCMCIA_SCR_S0_RESET);
vpstrBvdGPIORegs->GPCR0 = XLLP_BIT_11; // GPIO11 RESETpcmcia
break;
case XLLP_PCCARD_SOCKET1:
/*
if(uiCardVoltage == XLLP_PCCARD_5_00VOLTS)
{
//5V card detected; set bit[2] of the status register
pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR |= (XLLP_BIT_2);
pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR &= ~(XLLP_BIT_3);
}
else if(uiCardVoltage == XLLP_PCCARD_3_30VOLTS)
{
//3.3V card detected; set bit[3] of the status register
pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR |= (XLLP_BIT_3);
pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR &= ~(XLLP_BIT_2);
}
else
{
//
//Unsupported PC Card voltage
//
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}*/
// (pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR) &= ~(XLLP_BCR_PCMCIA_SCR_S1_RESET);
vpstrBvdGPIORegs->GPCR0 = XLLP_BIT_16; // GPIO11 RESETcf
break;
default:
//TBD. Should not be here at all!!
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
break;
} //end switch
}
return ReturnValue;
} //end XllpPCCardEnableSocket()
/******************************************************************************
Function Name: XllpPCCardPowerOff
Description:
Global Registers Modified:
Input Arguments:
Output Arguments:
Return Value:
*******************************************************************************/
XLLP_STATUS_T XllpPCCardPowerOff(XLLP_PCCARDSOCKET_T *pstrSocketHandle,
XLLP_VUINT16_T ushSocketNumber)
{
volatile XLLP_GPIO_T *vpstrBvdGPIORegs = (volatile XLLP_GPIO_T *)pstrSocketHandle->pstrGpioRegsHandle;
XLLP_STATUS_T ReturnValue = XLLP_STATUS_SUCCESS;
//
//Check the validity of the input arguments to the function
//
if((ushSocketNumber > XLLP_MAINSTONE_MAX_PCCARD_SOCKETS) ||
(pstrSocketHandle == XLLP_NULL_PTR))
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
if(ReturnValue != XLLP_STATUS_PCCARD_FAILURE)
{
switch(ushSocketNumber)
{
case XLLP_PCCARD_SOCKET0:
//
//Power off the socket
//
// pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR |= (XLLP_BIT_2);
// pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR |= (XLLP_BIT_3);
vpstrBvdGPIORegs->GPSR3 = XLLP_BIT_11; // GPIO107 PPENpcmcia
break;
case XLLP_PCCARD_SOCKET1:
//
//Power off the socket
//
// pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR |= (XLLP_BIT_2);
// pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR |= (XLLP_BIT_3);
break;
default:
//TBD. Should not be here at all!!
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
break;
} //end switch
} //end if
return ReturnValue;
} //end XllpPCCardResetSocket()
/******************************************************************************
Function Name: XllpPCCardGetVoltageSetting
Description:
Global Registers Modified:
Input Arguments:
Output Arguments:
Return Value:
*******************************************************************************/
XLLP_STATUS_T XllpPCCardGetVoltageSetting(XLLP_PCCARDSOCKET_T *pstrSocketHandle,
XLLP_VUINT16_T ushSocketNumber,
XLLP_UINT32_T *puiCardVoltage)
{
XLLP_STATUS_T ReturnValue = XLLP_STATUS_SUCCESS;
//
//Check the validity of the input arguments to the function
//
if((ushSocketNumber > XLLP_MAINSTONE_MAX_PCCARD_SOCKETS) ||
(pstrSocketHandle == XLLP_NULL_PTR))
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
if(ReturnValue != XLLP_STATUS_PCCARD_FAILURE)
{
switch(ushSocketNumber)
{
case XLLP_PCCARD_SOCKET0:
/*
if((pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR) & (XLLP_BCR_PCMCIA_SCR_S0_nCD))
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
else
{
//
//Determine the voltage requirements of the PC Card, else
//default voltage to 3.3V
//
if(((pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR) & (XLLP_BIT_6)) &&
((pstrSocketHandle->pstrBcrHandle->PCMCIAS0SCR) & (XLLP_BIT_7)))
{
//
//5 volt card detected in the socket
//
*puiCardVoltage = XLLP_PCCARD_5_00VOLTS;
}
else
{
//
//3.3 volt card detected in the socket
//
*puiCardVoltage = XLLP_PCCARD_3_30VOLTS;
}
}*/
*puiCardVoltage = XLLP_PCCARD_3_30VOLTS;
break;
case XLLP_PCCARD_SOCKET1:
/*
if((pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR) & (XLLP_BCR_PCMCIA_SCR_S0_nCD))
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
else
{
//
//Determine the voltage requirements of the PC Card, else
//default voltage to 3.3V
//
if(((pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR) & (XLLP_BIT_6)) &&
((pstrSocketHandle->pstrBcrHandle->PCMCIAS1SCR) & (XLLP_BIT_7)))
{
//
//5 volt card detected in the socket
//
*puiCardVoltage = XLLP_PCCARD_5_00VOLTS;
}
else
{
//
//3.3 volt card detected in the socket
//
*puiCardVoltage = XLLP_PCCARD_3_30VOLTS;
}
}*/
*puiCardVoltage = XLLP_PCCARD_3_30VOLTS;
break;
default:
//TBD. Should not be here at all!!
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
break;
} //end switch
}
return ReturnValue;
} //end XllpPCCardGetVoltageSetting()
/******************************************************************************
Function Name: XllpPCCardSetExpMemTiming
Description:
Global Registers Modified:
Input Arguments:
Output Arguments:
Return Value:
*******************************************************************************/
XLLP_STATUS_T XllpPCCardSetExpMemTiming(XLLP_PCCARDSOCKET_T *pstrSocketHandle)
{
XLLP_STATUS_T ReturnValue = XLLP_STATUS_SUCCESS;
//
//Check the validity of the input arguments to the function
//
if(pstrSocketHandle == XLLP_NULL_PTR)
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
if(ReturnValue != XLLP_STATUS_PCCARD_FAILURE)
{
pstrSocketHandle->pstrMemCtrlRegsHandle->MCATT0 = pstrSocketHandle->pstrCardTimingHandle->MCATT0;
pstrSocketHandle->pstrMemCtrlRegsHandle->MCATT1 = pstrSocketHandle->pstrCardTimingHandle->MCATT1;
pstrSocketHandle->pstrMemCtrlRegsHandle->MCMEM0 = pstrSocketHandle->pstrCardTimingHandle->MCMEM0;
pstrSocketHandle->pstrMemCtrlRegsHandle->MCMEM1 = pstrSocketHandle->pstrCardTimingHandle->MCMEM1;
pstrSocketHandle->pstrMemCtrlRegsHandle->MCIO0 = pstrSocketHandle->pstrCardTimingHandle->MCIO0;
pstrSocketHandle->pstrMemCtrlRegsHandle->MCIO1 = pstrSocketHandle->pstrCardTimingHandle->MCIO1;
}
return ReturnValue;
} //end XllpPCCardSetExpMemTiming()
/******************************************************************************
Function Name: XllpPCCardGetExpMemTiming
Description:
Global Registers Modified:
Input Arguments:
Output Arguments:
Return Value:
*******************************************************************************/
XLLP_STATUS_T XllpPCCardGetExpMemTiming(XLLP_PCCARDSOCKET_T *pstrSocketHandle,
XLLP_CARDTIMING_T *pstrCardTimingHandle)
{
XLLP_STATUS_T ReturnValue = XLLP_STATUS_SUCCESS;
//
//Check the validity of the input arguments to the function
//
if((pstrSocketHandle == XLLP_NULL_PTR) ||
(pstrCardTimingHandle == XLLP_NULL_PTR))
{
ReturnValue = XLLP_STATUS_PCCARD_FAILURE;
}
if(ReturnValue != XLLP_STATUS_PCCARD_FAILURE)
{
pstrCardTimingHandle->MCATT0 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCATT0;
pstrCardTimingHandle->MCATT1 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCATT1;
pstrCardTimingHandle->MCMEM0 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCMEM0;
pstrCardTimingHandle->MCMEM1 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCMEM1;
pstrCardTimingHandle->MCIO0 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCIO0;
pstrCardTimingHandle->MCIO1 = pstrSocketHandle->pstrMemCtrlRegsHandle->MCIO1;
}
return ReturnValue;
} //end XllpPCCardGetExpMemTiming()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -