ETxnStatus sdioAdapt_TransactBytes (unsigned int  uFuncId,
                                    unsigned int  uHwAddr,
                                    void *        pHostAddr,
                                    unsigned int  uLength,
                                    unsigned int  bDirection,
                                    unsigned int  bMore)
{
    int iStatus;

#ifdef PROPRIETARY_SDIO
    if(bMore == 1)
    {
        sdioDrv_cancel_inact_timer();
        sdioDrv_clk_enable();
    }
#endif

    /* Call read or write bytes Sync method */
    if (bDirection) 
    {
//        printk("[sdioDrv_ReadSyncBytes]uFuncId = %d, uHwAddr = %d, uLength = %d, bMore = %d\n", uFuncId, uHwAddr, uLength, bMore);
        iStatus = sdioDrv_ReadSyncBytes (uFuncId, uHwAddr, pHostAddr, uLength, bMore);
    }
    else 
    {
//        printk("[sdioDrv_WriteSyncBytes]uFuncId = %d, uHwAddr = %d, uLength = %d, bMore = %d\n", uFuncId, uHwAddr, uLength, bMore);
        iStatus = sdioDrv_WriteSyncBytes (uFuncId, uHwAddr, pHostAddr, uLength, bMore);
    }

#ifdef PROPRIETARY_SDIO
    if(bMore == 0)
    {
        sdioDrv_start_inact_timer();
    }
#endif

    /* If failed return ERROR, if succeeded return COMPLETE */
    if (iStatus) 
    {
        return TXN_STATUS_ERROR;
    }
    return TXN_STATUS_COMPLETE;
}
Пример #2
0
ETxnStatus sdioAdapt_TransactBytes (unsigned int  uFuncId,
                                    unsigned int  uHwAddr,
                                    void *        pHostAddr,
                                    unsigned int  uLength,
                                    unsigned int  bDirection,
                                    unsigned int  bMore)
{
    int iStatus;

    if(bMore == 1)
    {
        sdioDrv_cancel_inact_timer();
#ifdef PROPRIETARY_SDIO
        sdioDrv_clk_enable();
#else
        sdioDrv_ClaimHost(SDIO_WLAN_FUNC);
#endif
    }

    /* Call read or write bytes Sync method */
    if (bDirection) 
    {
        iStatus = sdioDrv_ReadSyncBytes (uFuncId, uHwAddr, pHostAddr, uLength, bMore);
    }
    else 
    {
        iStatus = sdioDrv_WriteSyncBytes (uFuncId, uHwAddr, pHostAddr, uLength, bMore);
    }

    if(bMore == 0)
    {
        sdioDrv_start_inact_timer();
    }

    /* If failed return ERROR, if succeeded return COMPLETE */
    if (iStatus) 
    {
        return TXN_STATUS_ERROR;
    }
    return TXN_STATUS_COMPLETE;
}