⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xllp_pccardsocket.c

📁 Windows CE 6.0 BSP for VOIPAC Board (PXA270) Version 2b.
💻 C
📖 第 1 页 / 共 3 页
字号:
                {
                    //
                    //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 + -