VOS_VOID DMS_UsbPortReadCB(DMS_PHY_BEAR_ENUM enPhyBear) { DMS_PHY_BEAR_PROPERTY_STRU *pstPhyBearProp = NULL; DMS_READ_DATA_PFN pRdDataFun = NULL; ACM_WR_ASYNC_INFO stAcmInfo; UDI_HANDLE lHandle = UDI_INVALID_HANDLE; DMS_LOG_INFO("DMS_UsbPortReadCB[%d]: Read begin.\n", enPhyBear); VOS_MemSet(&stAcmInfo, 0x0, sizeof(stAcmInfo)); pstPhyBearProp = DMS_GetPhyBearProperty(enPhyBear); lHandle = pstPhyBearProp->lPortHandle; if (UDI_INVALID_HANDLE == lHandle) { DMS_LOG_ERROR("DMS_UsbPortReadCB[%d]: UDI_INVALID_HANDLE.\n", enPhyBear); return; } DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_RD_CB_BEGIN + (VOS_UINT32)enPhyBear),\ 0, 0, 0); if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_GET_RD_BUFF, &stAcmInfo)) { DMS_LOG_ERROR("DMS_UsbPortReadCB[%d]: ACM_IOCTL_GET_RD_BUFF fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_RD_CB_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 0); return; } pstPhyBearProp->ucChanStat = ACM_EVT_DEV_READY; pRdDataFun = DMS_GetDataReadFun(); if (NULL != pRdDataFun) { #ifdef FEATURE_USB_ZERO_COPY (VOS_VOID)pRdDataFun(enPhyBear, (VOS_UINT8 *)stAcmInfo.pVirAddr, stAcmInfo.u32Size); #else (VOS_VOID)pRdDataFun(enPhyBear, (VOS_UINT8 *)stAcmInfo.pBuffer, stAcmInfo.u32Size); #endif } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_RETURN_BUFF, &stAcmInfo)) { DMS_LOG_INFO("DMS_UsbPortReadCB[%d]: ACM_IOCTL_RETURN_BUFF fail.\n", enPhyBear); } return; }
VOS_UINT32 DMS_InitGetSliceFile(VOS_VOID) { /*lint -e960 */ if (VOS_NULL_PTR == proc_create("getslice", DMS_VFILE_CRT_LEVEL, VOS_NULL_PTR, &g_stGetSliceOps)) { DMS_LOG_ERROR("DMS_InitGetSliceFile: proc_create return NULL.\n"); return VOS_ERR; } /*lint +e960 */ return VOS_OK; }
VOS_UINT32 DMS_InitPorCfgFile(VOS_VOID) { /*lint -e960 */ if (VOS_NULL_PTR == proc_create("portcfg", DMS_VFILE_CRT_LEVEL, VOS_NULL_PTR, &g_stPortCfgOps)) { DMS_LOG_ERROR("DMS_InitPorCfgFile: proc_create return NULL.\n"); return VOS_ERR; } /*lint +e960 */ return VOS_OK; }
VOS_INT __init DMS_InitPorCfgFile(VOS_VOID) { printk("DMS_InitPorCfgFile,entry,%u",VOS_GetSlice()); g_stDmsMainInfo.bPortCfgFlg = VOS_FALSE; g_stDmsMainInfo.bPortOpenFlg = VOS_FALSE; g_stDmsMainInfo.ulPortCfgValue = DMS_TEST_MODE; /*lint -e960 */ if (VOS_NULL_PTR == proc_create("portcfg", DMS_VFILE_CRT_LEVEL, VOS_NULL_PTR, &g_stPortCfgOps)) { DMS_LOG_ERROR("DMS_InitPorCfgFile: proc_create return NULL.\n"); return VOS_ERR; } /*lint +e960 */ printk("DMS_InitPorCfgFile,exit,%u",VOS_GetSlice()); return VOS_OK; }
VOS_UINT32 DMS_UsbPortOpen( DMS_PHY_BEAR_ENUM enPhyBear, UDI_DEVICE_ID enDeviceId, VOS_VOID *pReadCB, VOS_VOID *pWriteCB, VOS_VOID *pStateCB ) { DMS_PHY_BEAR_PROPERTY_STRU *pstPhyBearProp = NULL; UDI_OPEN_PARAM stOpenParam; ACM_READ_BUFF_INFO stReadBuffInfo; UDI_HANDLE lHandle = UDI_INVALID_HANDLE; DMS_LOG_INFO("DMS_UsbPortOpen[%d]: Open Enter.\n", enPhyBear); pstPhyBearProp = DMS_GetPhyBearProperty(enPhyBear); if (UDI_INVALID_HANDLE != pstPhyBearProp->lPortHandle) { DMS_LOG_WARNING("DMS_UsbPortOpen[%d]: Already open.\n", enPhyBear); return ERR_MSP_SUCCESS; } DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_BEGIN + (VOS_UINT32)enPhyBear),\ 0, 0, 0); stOpenParam.devid = enDeviceId; stReadBuffInfo.u32BuffSize = DMS_UL_DATA_BUFF_SIZE; stReadBuffInfo.u32BuffNum = DMS_UL_DATA_BUFF_NUM; lHandle = DRV_UDI_OPEN(&stOpenParam); if (UDI_INVALID_HANDLE != lHandle) { if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_RELLOC_READ_BUFF, &stReadBuffInfo)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_RELLOC_READ_BUFF fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 0); } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_SEND_BUFF_CAN_DMA, &stReadBuffInfo)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_SEND_BUFF_CAN_DMA fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 1); } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_SET_READ_CB, pReadCB)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_SET_READ_CB fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 2); } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_SET_WRITE_CB, pWriteCB)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_SET_WRITE_CB fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 3); } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_WRITE_DO_COPY, (BSP_VOID *)0)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_WRITE_DO_COPY fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 4); } if (BSP_OK != DRV_UDI_IOCTL(lHandle, ACM_IOCTL_SET_EVT_CB, pStateCB)) { DMS_LOG_ERROR("DMS_UsbPortOpen[%d]: ACM_IOCTL_SET_EVT_CB fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 5); } DMS_LOG_INFO("DMS_UsbPortOpen[%d]: Open success.\n", enPhyBear); pstPhyBearProp->lPortHandle = lHandle; return ERR_MSP_SUCCESS; } DMS_LOG_INFO("DMS_UsbPortOpen[%d]: Open fail.\n", enPhyBear); DMS_DBG_SDM_FUN((DMS_SDM_MSG_ID_ENUM)(DMS_SDM_VCOM_OPEN_ERR_BEGIN + (VOS_UINT32)enPhyBear),\ (VOS_UINT32)lHandle, 0, 6); return ERR_MSP_FAILURE; }