1.在linux下插入usb 进入msdc模式,在Windows上没有出盘符
This commit is contained in:
parent
996aa82e50
commit
5bd85f955b
6
code/hdal/drivers/k_driver/source/comm/usb2dev/usb2dev.c
Executable file → Normal file
6
code/hdal/drivers/k_driver/source/comm/usb2dev/usb2dev.c
Executable file → Normal file
|
@ -23,6 +23,7 @@
|
||||||
#include <plat/nvt-gpio.h>
|
#include <plat/nvt-gpio.h>
|
||||||
#include "linux/delay.h"
|
#include "linux/delay.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include <plat/nvt-sramctl.h>
|
||||||
|
|
||||||
#include "usb2dev.h"
|
#include "usb2dev.h"
|
||||||
#include "usb2dev_reg.h"
|
#include "usb2dev_reg.h"
|
||||||
|
@ -458,6 +459,7 @@ static ER usb_openInternal(BOOL bChkCharger, UINT32 uiDebounce)
|
||||||
}
|
}
|
||||||
|
|
||||||
usb_attach();
|
usb_attach();
|
||||||
|
nvt_disable_sram_shutdown(USB_SD);
|
||||||
|
|
||||||
// Set Controller as Device Mode
|
// Set Controller as Device Mode
|
||||||
RegTop.reg = USB_GETREG(USB_PHYTOP_REG_OFS);
|
RegTop.reg = USB_GETREG(USB_PHYTOP_REG_OFS);
|
||||||
|
@ -494,6 +496,7 @@ static ER usb_openInternal(BOOL bChkCharger, UINT32 uiDebounce)
|
||||||
|
|
||||||
#if (USB_STANDARD_CHARGER_DETECT == 1)
|
#if (USB_STANDARD_CHARGER_DETECT == 1)
|
||||||
if (bChkCharger == TRUE) {
|
if (bChkCharger == TRUE) {
|
||||||
|
// nvt_enable_sram_shutdown(USB_SD);
|
||||||
return E_OK;
|
return E_OK;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
@ -515,6 +518,7 @@ static ER usb_openInternal(BOOL bChkCharger, UINT32 uiDebounce)
|
||||||
}
|
}
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
DBG_ERR("No USBHost\r\n");
|
DBG_ERR("No USBHost\r\n");
|
||||||
|
// nvt_enable_sram_shutdown(USB_SD);
|
||||||
return E_TMOUT;
|
return E_TMOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1285,6 +1289,8 @@ ER usb2dev_close(void)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nvt_enable_sram_shutdown(USB_SD);
|
||||||
|
|
||||||
gfpVendorReqHdl = NULL;
|
gfpVendorReqHdl = NULL;
|
||||||
gUsbSetInterfaceHdl = NULL;
|
gUsbSetInterfaceHdl = NULL;
|
||||||
|
|
||||||
|
|
|
@ -142,14 +142,12 @@ static void usb_setEPMap(USB_EP EPn, USB_EP_DIR Dir, USB_FIFO_NUM FIFOn)
|
||||||
else
|
else
|
||||||
DevEpMAP9_12Reg.bit.FNO_OEP11 = FIFOn;
|
DevEpMAP9_12Reg.bit.FNO_OEP11 = FIFOn;
|
||||||
break;
|
break;
|
||||||
case USB_EP12:
|
default:
|
||||||
if (Dir == EP_DIR_IN)
|
if (Dir == EP_DIR_IN)
|
||||||
DevEpMAP9_12Reg.bit.FNO_IEP12 = FIFOn;
|
DevEpMAP9_12Reg.bit.FNO_IEP12 = FIFOn;
|
||||||
else
|
else
|
||||||
DevEpMAP9_12Reg.bit.FNO_OEP12 = FIFOn;
|
DevEpMAP9_12Reg.bit.FNO_OEP12 = FIFOn;
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
USB_SETREG(USB_DEVEPMAP9_12_REG_OFS, DevEpMAP9_12Reg.reg);
|
USB_SETREG(USB_DEVEPMAP9_12_REG_OFS, DevEpMAP9_12Reg.reg);
|
||||||
|
|
||||||
|
@ -2478,7 +2476,10 @@ ER usb2dev_set_ep_read(USB_EP EPn, UINT8 *pBuffer, UINT32 *pDMALen)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
#if _USE_VDMA_FIFO_
|
||||||
|
#else
|
||||||
FLGPTN flags2;
|
FLGPTN flags2;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!gUSBOpen) {
|
if (!gUSBOpen) {
|
||||||
DBG_ERR("driver is not opened !\r\n");
|
DBG_ERR("driver is not opened !\r\n");
|
||||||
|
@ -2598,7 +2599,7 @@ ER usb2dev_set_ep_read(USB_EP EPn, UINT8 *pBuffer, UINT32 *pDMALen)
|
||||||
|
|
||||||
#if _USE_VDMA_FIFO_
|
#if _USE_VDMA_FIFO_
|
||||||
//wai_flg(&flags2, FLG_ID_USB, FLGPTN_USB_DMA_RDY, TWF_CLR | TWF_ORW);
|
//wai_flg(&flags2, FLG_ID_USB, FLGPTN_USB_DMA_RDY, TWF_CLR | TWF_ORW);
|
||||||
flags2 = flags2;
|
//flags2 = flags2;
|
||||||
|
|
||||||
if (fifonum < USB_FIFO4) {
|
if (fifonum < USB_FIFO4) {
|
||||||
|
|
||||||
|
@ -2798,7 +2799,10 @@ ER usb2dev_set_ep_write(USB_EP EPn, UINT8 *pBuffer, UINT32 *pDMALen)
|
||||||
UINT32 *pBUF;
|
UINT32 *pBUF;
|
||||||
#endif
|
#endif
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
#if _USE_VDMA_FIFO_
|
||||||
|
#else
|
||||||
FLGPTN flags2;
|
FLGPTN flags2;
|
||||||
|
#endif
|
||||||
UINT32 busy_count = 0;
|
UINT32 busy_count = 0;
|
||||||
|
|
||||||
if (!gUSBOpen) {
|
if (!gUSBOpen) {
|
||||||
|
@ -2916,7 +2920,7 @@ ER usb2dev_set_ep_write(USB_EP EPn, UINT8 *pBuffer, UINT32 *pDMALen)
|
||||||
|
|
||||||
#if _USE_VDMA_FIFO_
|
#if _USE_VDMA_FIFO_
|
||||||
//wai_flg(&flags2, FLG_ID_USB, FLGPTN_USB_DMA_RDY, TWF_CLR | TWF_ORW);
|
//wai_flg(&flags2, FLG_ID_USB, FLGPTN_USB_DMA_RDY, TWF_CLR | TWF_ORW);
|
||||||
flags2 = flags2;
|
//flags2 = flags2;
|
||||||
|
|
||||||
if (fifonum < USB_FIFO4) {
|
if (fifonum < USB_FIFO4) {
|
||||||
|
|
||||||
|
@ -3245,9 +3249,14 @@ ER usb2dev_wait_ep_done_timeout(USB_EP EPn, UINT32 *pDMALen, UINT32 timeout_ms)
|
||||||
|
|
||||||
if (EPn == USB_EP0) {
|
if (EPn == USB_EP0) {
|
||||||
#if _USE_VDMA_FIFO_
|
#if _USE_VDMA_FIFO_
|
||||||
vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_EP0_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms));
|
if (vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_EP0_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms)) != E_OK) {
|
||||||
|
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms));
|
if (vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms)) != E_OK) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
set_flg(FLG_ID_USBTSK, FLGPTN_USB_DMA_RDY);
|
set_flg(FLG_ID_USBTSK, FLGPTN_USB_DMA_RDY);
|
||||||
#endif
|
#endif
|
||||||
//DBG_DUMP("o");
|
//DBG_DUMP("o");
|
||||||
|
@ -3260,9 +3269,18 @@ ER usb2dev_wait_ep_done_timeout(USB_EP EPn, UINT32 *pDMALen, UINT32 timeout_ms)
|
||||||
if (fifonum < USB_FIFO_MAX) {
|
if (fifonum < USB_FIFO_MAX) {
|
||||||
// wait for DMA done
|
// wait for DMA done
|
||||||
#if _USE_VDMA_FIFO_
|
#if _USE_VDMA_FIFO_
|
||||||
vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, (FLGUSB_DMA0DONE << fifonum), TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms));
|
if (vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, (FLGUSB_DMA0DONE << fifonum), TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms)) != E_OK) {
|
||||||
|
//timeout
|
||||||
|
*pDMALen = 0;
|
||||||
|
return E_TMOUT;
|
||||||
|
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms));
|
if (vos_flag_wait_timeout(&uiFlag, FLG_ID_USBTSK, FLGUSB_DMADONE, TWF_CLR | TWF_ORW, vos_util_msec_to_tick(timeout_ms)) != E_OK) {
|
||||||
|
//timeout
|
||||||
|
*pDMALen = 0;
|
||||||
|
return E_TMOUT;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (uiFlag == 0) {
|
if (uiFlag == 0) {
|
||||||
|
|
439
code/hdal/drivers/k_driver/source/comm/usb2dev/usb2dev_drv.c
Executable file → Normal file
439
code/hdal/drivers/k_driver/source/comm/usb2dev/usb2dev_drv.c
Executable file → Normal file
|
@ -332,6 +332,11 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
|
|
||||||
//usb2dev_api("%s IF-%d cmd:%x\n", __func__, uc_if, ui_cmd);
|
//usb2dev_api("%s IF-%d cmd:%x\n", __func__, uc_if, ui_cmd);
|
||||||
pdesc = kmalloc(sizeof(USB2DEV_DESC), GFP_KERNEL);
|
pdesc = kmalloc(sizeof(USB2DEV_DESC), GFP_KERNEL);
|
||||||
|
if (pdesc == NULL) {
|
||||||
|
ret = -ENOMEM;
|
||||||
|
DBG_ERR("no mem for pdesc\r\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
switch (ui_cmd) {
|
switch (ui_cmd) {
|
||||||
case USB2DEV_IOC_OPEN: {
|
case USB2DEV_IOC_OPEN: {
|
||||||
|
@ -439,246 +444,274 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
case USB2DEV_IOC_SET_DEVICE_DESC: {
|
case USB2DEV_IOC_SET_DEVICE_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("dev desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("dev desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_dev_desc == NULL) {
|
if(usbioc_dev_desc == NULL) {
|
||||||
usbioc_dev_desc = kmalloc(18, GFP_KERNEL);
|
usbioc_dev_desc = kmalloc(18, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= 18)
|
||||||
|
memcpy(usbioc_dev_desc, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_dev_desc = usbioc_dev_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 18)
|
|
||||||
memcpy(usbioc_dev_desc, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_dev_desc = usbioc_dev_desc;
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_CFG_HS_DESC: {
|
case USB2DEV_IOC_SET_CFG_HS_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("cfg hs desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("cfg hs desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_cfg_desc_hs == NULL) {
|
if(usbioc_cfg_desc_hs == NULL) {
|
||||||
usbioc_cfg_desc_hs = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
usbioc_cfg_desc_hs = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
||||||
|
memcpy(usbioc_cfg_desc_hs, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_config_desc_hs = (USB_CONFIG_DESC *)usbioc_cfg_desc_hs;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
|
||||||
memcpy(usbioc_cfg_desc_hs, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_config_desc_hs = (USB_CONFIG_DESC *)usbioc_cfg_desc_hs;
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_CFG_HS_OTHER_DESC: {
|
case USB2DEV_IOC_SET_CFG_HS_OTHER_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("cfg hs desc oth (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("cfg hs desc oth (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_cfg_desc_hs_oth == NULL) {
|
if(usbioc_cfg_desc_hs_oth == NULL) {
|
||||||
usbioc_cfg_desc_hs_oth = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
usbioc_cfg_desc_hs_oth = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
||||||
|
memcpy(usbioc_cfg_desc_hs_oth, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_config_desc_hs_other = (USB_CONFIG_DESC *)usbioc_cfg_desc_hs_oth;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
|
||||||
memcpy(usbioc_cfg_desc_hs_oth, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_config_desc_hs_other = (USB_CONFIG_DESC *)usbioc_cfg_desc_hs_oth;
|
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_CFG_FS_DESC: {
|
case USB2DEV_IOC_SET_CFG_FS_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("cfg fs desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("cfg fs desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_cfg_desc_fs == NULL) {
|
if(usbioc_cfg_desc_fs == NULL) {
|
||||||
usbioc_cfg_desc_fs = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
usbioc_cfg_desc_fs = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
||||||
|
memcpy(usbioc_cfg_desc_fs, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_config_desc_fs = (USB_CONFIG_DESC *)usbioc_cfg_desc_fs;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
|
||||||
memcpy(usbioc_cfg_desc_fs, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_config_desc_fs = (USB_CONFIG_DESC *)usbioc_cfg_desc_fs;
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_CFG_FS_OTHER_DESC: {
|
case USB2DEV_IOC_SET_CFG_FS_OTHER_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("cfg hs desc oth (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("cfg hs desc oth (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_cfg_desc_fs_oth == NULL) {
|
if(usbioc_cfg_desc_fs_oth == NULL) {
|
||||||
usbioc_cfg_desc_fs_oth = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
usbioc_cfg_desc_fs_oth = kmalloc(USB_DESC_MAX_SIZE, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
||||||
|
memcpy(usbioc_cfg_desc_fs_oth, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_config_desc_fs_other = (USB_CONFIG_DESC *)usbioc_cfg_desc_fs_oth;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= USB_DESC_MAX_SIZE)
|
|
||||||
memcpy(usbioc_cfg_desc_fs_oth, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_config_desc_fs_other = (USB_CONFIG_DESC *)usbioc_cfg_desc_fs_oth;
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_DEV_QUALI_DESC: {
|
case USB2DEV_IOC_SET_DEV_QUALI_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("dev qua desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("dev qua desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_devquali_desc == NULL) {
|
if(usbioc_devquali_desc == NULL) {
|
||||||
usbioc_devquali_desc = kmalloc(18, GFP_KERNEL);
|
usbioc_devquali_desc = kmalloc(18, GFP_KERNEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pdesc->ui_length <= 18)
|
||||||
|
memcpy(usbioc_devquali_desc, pdesc->desc_data, pdesc->ui_length);
|
||||||
|
|
||||||
|
gUSBManage.p_dev_quali_desc = (USB_DEVICE_DESC *)usbioc_devquali_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 18)
|
|
||||||
memcpy(usbioc_devquali_desc, pdesc->desc_data, pdesc->ui_length);
|
|
||||||
|
|
||||||
gUSBManage.p_dev_quali_desc = (USB_DEVICE_DESC *)usbioc_devquali_desc;
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case USB2DEV_IOC_SET_STRING0_DESC: {
|
case USB2DEV_IOC_SET_STRING0_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-0 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-0 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc0 == NULL) {
|
if(usbioc_str_desc0 == NULL) {
|
||||||
usbioc_str_desc0 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc0 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc0, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc0, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[0] = (USB_STRING_DESC *)usbioc_str_desc0;
|
gUSBManage.p_string_desc[0] = (USB_STRING_DESC *)usbioc_str_desc0;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str0 size exceed 512\r\n");
|
DBG_ERR("str0 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING1_DESC: {
|
case USB2DEV_IOC_SET_STRING1_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-1 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-1 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc1 == NULL) {
|
if(usbioc_str_desc1 == NULL) {
|
||||||
usbioc_str_desc1 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc1 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc1, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc1, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[1] = (USB_STRING_DESC *)usbioc_str_desc1;
|
gUSBManage.p_string_desc[1] = (USB_STRING_DESC *)usbioc_str_desc1;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str1 size exceed 512\r\n");
|
DBG_ERR("str1 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING2_DESC: {
|
case USB2DEV_IOC_SET_STRING2_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-2 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-2 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc2 == NULL) {
|
if(usbioc_str_desc2 == NULL) {
|
||||||
usbioc_str_desc2 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc2 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc2, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc2, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[2] = (USB_STRING_DESC *)usbioc_str_desc2;
|
gUSBManage.p_string_desc[2] = (USB_STRING_DESC *)usbioc_str_desc2;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str2 size exceed 512\r\n");
|
DBG_ERR("str2 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING3_DESC: {
|
case USB2DEV_IOC_SET_STRING3_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-3 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-3 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc3 == NULL) {
|
if(usbioc_str_desc3 == NULL) {
|
||||||
usbioc_str_desc3 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc3 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc3, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc3, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[3] = (USB_STRING_DESC *)usbioc_str_desc3;
|
gUSBManage.p_string_desc[3] = (USB_STRING_DESC *)usbioc_str_desc3;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str3 size exceed 512\r\n");
|
DBG_ERR("str3 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING4_DESC: {
|
case USB2DEV_IOC_SET_STRING4_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-4 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-4 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc4 == NULL) {
|
if(usbioc_str_desc4 == NULL) {
|
||||||
usbioc_str_desc4 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc4 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc4, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc4, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[4] = (USB_STRING_DESC *)usbioc_str_desc4;
|
gUSBManage.p_string_desc[4] = (USB_STRING_DESC *)usbioc_str_desc4;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str4 size exceed 512\r\n");
|
DBG_ERR("str4 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING5_DESC: {
|
case USB2DEV_IOC_SET_STRING5_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-5 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-5 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc5 == NULL) {
|
if(usbioc_str_desc5 == NULL) {
|
||||||
usbioc_str_desc5 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc5 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc5, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc5, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[5] = (USB_STRING_DESC *)usbioc_str_desc5;
|
gUSBManage.p_string_desc[5] = (USB_STRING_DESC *)usbioc_str_desc5;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str5 size exceed 512\r\n");
|
DBG_ERR("str5 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING6_DESC: {
|
case USB2DEV_IOC_SET_STRING6_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-6 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-6 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc6 == NULL) {
|
if(usbioc_str_desc6 == NULL) {
|
||||||
usbioc_str_desc6 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc6 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc6, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc6, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[6] = (USB_STRING_DESC *)usbioc_str_desc6;
|
gUSBManage.p_string_desc[6] = (USB_STRING_DESC *)usbioc_str_desc6;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str6 size exceed 512\r\n");
|
DBG_ERR("str6 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_STRING7_DESC: {
|
case USB2DEV_IOC_SET_STRING7_DESC: {
|
||||||
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
ret = copy_from_user(pdesc, (void __user *)ul_arg, sizeof(USB2DEV_DESC));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_api("str-7 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
if (pdesc != NULL) {
|
||||||
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
usb2dev_api("str-7 desc (%d) 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\r\n"
|
||||||
|
, pdesc->ui_length, pdesc->desc_data[0], pdesc->desc_data[1], pdesc->desc_data[2], pdesc->desc_data[3], pdesc->desc_data[4], pdesc->desc_data[5], pdesc->desc_data[6], pdesc->desc_data[7]);
|
||||||
|
|
||||||
if(usbioc_str_desc7 == NULL) {
|
if(usbioc_str_desc7 == NULL) {
|
||||||
usbioc_str_desc7 = kmalloc(512, GFP_KERNEL);
|
usbioc_str_desc7 = kmalloc(512, GFP_KERNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdesc->ui_length <= 512) {
|
if (pdesc->ui_length <= 512) {
|
||||||
memcpy(usbioc_str_desc7, pdesc->desc_data, pdesc->ui_length);
|
memcpy(usbioc_str_desc7, pdesc->desc_data, pdesc->ui_length);
|
||||||
gUSBManage.p_string_desc[7] = (USB_STRING_DESC *)usbioc_str_desc7;
|
gUSBManage.p_string_desc[7] = (USB_STRING_DESC *)usbioc_str_desc7;
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("str7 size exceed 512\r\n");
|
DBG_ERR("str7 size exceed 512\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -834,27 +867,50 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
case USB2DEV_IOC_SET_EP_R: {
|
case USB2DEV_IOC_SET_EP_R: {
|
||||||
USB2DEV_DATA_RW data_rw;
|
USB2DEV_DATA_RW data_rw;
|
||||||
UINT32 dma_len = 0;
|
UINT32 dma_len = 0;
|
||||||
|
ER erReturn;
|
||||||
|
|
||||||
ret = copy_from_user(&data_rw, (void __user *)ul_arg, sizeof(USB2DEV_DATA_RW));
|
ret = copy_from_user(&data_rw, (void __user *)ul_arg, sizeof(USB2DEV_DATA_RW));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret)
|
if (!ret) {
|
||||||
usb2dev_set_ep_read(data_rw.epn, data_rw.buffer, &dma_len);
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
|
erReturn = usb2dev_set_ep_read(data_rw.epn, data_rw.buffer, &dma_len);
|
||||||
|
|
||||||
|
if (erReturn != E_OK) {
|
||||||
|
ret = erReturn;
|
||||||
|
DBG_ERR("usb2dev_set_ep_read err\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_SET_EP_R EP range exceed\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_SET_EP_W: {
|
case USB2DEV_IOC_SET_EP_W: {
|
||||||
USB2DEV_DATA_RW data_rw;
|
USB2DEV_DATA_RW data_rw;
|
||||||
UINT32 dma_len = 0;
|
UINT32 dma_len = 0;
|
||||||
|
ER erReturn;
|
||||||
|
|
||||||
ret = copy_from_user(&data_rw, (void __user *)ul_arg, sizeof(USB2DEV_DATA_RW));
|
ret = copy_from_user(&data_rw, (void __user *)ul_arg, sizeof(USB2DEV_DATA_RW));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret)
|
if (!ret) {
|
||||||
usb2dev_set_ep_write(data_rw.epn, data_rw.buffer, &dma_len);
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
|
erReturn = usb2dev_set_ep_write(data_rw.epn, data_rw.buffer, &dma_len);
|
||||||
|
|
||||||
|
if (erReturn != E_OK) {
|
||||||
|
ret = erReturn;
|
||||||
|
DBG_ERR("usb2dev_set_ep_write err\n");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_SET_EP_W EP range exceed\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case USB2DEV_IOC_READ_EP: {
|
case USB2DEV_IOC_READ_EP: {
|
||||||
|
@ -868,25 +924,28 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
|
if (data_rw.epn == USB_EP0) {
|
||||||
|
memset(pmodule_info->ctrl_buff, 0x0, 64);
|
||||||
|
|
||||||
if (data_rw.epn == USB_EP0) {
|
if(dma_len <= 64) {
|
||||||
memset(pmodule_info->ctrl_buff, 0x0, 64);
|
usb2dev_read_endpoint(data_rw.epn, pmodule_info->ctrl_buff, &dma_len);
|
||||||
|
ret = copy_to_user((void __user *)data_rw.buffer, pmodule_info->ctrl_buff, dma_len);
|
||||||
if(dma_len <= 64) {
|
if (ret != 0)
|
||||||
usb2dev_read_endpoint(data_rw.epn, pmodule_info->ctrl_buff, &dma_len);
|
DBG_ERR("copy_to_user\n");
|
||||||
ret = copy_to_user((void __user *)data_rw.buffer, pmodule_info->ctrl_buff, dma_len);
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_to_user\n");
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
DBG_ERR("ep0 r sz err %d\n",dma_len);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("ep0 r sz err %d\n",dma_len);
|
usb2dev_read_endpoint(data_rw.epn, data_rw.buffer, &dma_len);
|
||||||
}
|
}
|
||||||
|
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
||||||
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_to_user\n");
|
||||||
} else {
|
} else {
|
||||||
usb2dev_read_endpoint(data_rw.epn, data_rw.buffer, &dma_len);
|
DBG_ERR("USB2DEV_IOC_READ_EP EP out of range\n");
|
||||||
}
|
}
|
||||||
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_to_user\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -902,15 +961,17 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
|
if (data_rw.epn != USB_EP0) {
|
||||||
|
usb2dev_read_endpoint_timeout(data_rw.epn, data_rw.buffer, &dma_len, data_rw.timeout_ms);
|
||||||
|
}
|
||||||
|
|
||||||
if (data_rw.epn != USB_EP0) {
|
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
||||||
usb2dev_read_endpoint_timeout(data_rw.epn, data_rw.buffer, &dma_len, data_rw.timeout_ms);
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_to_user\n");
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_READ_EP_TMOT EP out of range\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_to_user\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
@ -925,26 +986,29 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
|
if (data_rw.epn == USB_EP0) {
|
||||||
|
memset(pmodule_info->ctrl_buff, 0x0, 64);
|
||||||
|
|
||||||
if (data_rw.epn == USB_EP0) {
|
if(dma_len <= 64) {
|
||||||
memset(pmodule_info->ctrl_buff, 0x0, 64);
|
ret = copy_from_user(pmodule_info->ctrl_buff, (void __user *)data_rw.buffer, dma_len);
|
||||||
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_from_user\n");
|
||||||
|
|
||||||
if(dma_len <= 64) {
|
usb2dev_write_endpoint(data_rw.epn, pmodule_info->ctrl_buff, &dma_len);
|
||||||
ret = copy_from_user(pmodule_info->ctrl_buff, (void __user *)data_rw.buffer, dma_len);
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_from_user\n");
|
|
||||||
|
|
||||||
usb2dev_write_endpoint(data_rw.epn, pmodule_info->ctrl_buff, &dma_len);
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
DBG_ERR("ep0 r sz err %d\n",dma_len);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
DBG_ERR("ep0 r sz err %d\n",dma_len);
|
usb2dev_write_endpoint(data_rw.epn, data_rw.buffer, &dma_len);
|
||||||
}
|
}
|
||||||
|
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
||||||
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_to_user\n");
|
||||||
} else {
|
} else {
|
||||||
usb2dev_write_endpoint(data_rw.epn, data_rw.buffer, &dma_len);
|
DBG_ERR("USB2DEV_IOC_WRITE_EP EP out of range\n");
|
||||||
}
|
}
|
||||||
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_to_user\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -959,13 +1023,16 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
ret = copy_from_user(&dma_len, (void __user *)data_rw.dma_length, sizeof(UINT32));
|
||||||
|
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
if ((data_rw.epn <= (USB_EP_MAX -1))) {
|
||||||
if (data_rw.epn != USB_EP0) {
|
if (data_rw.epn != USB_EP0) {
|
||||||
usb2dev_write_endpoint_timeout(data_rw.epn, data_rw.buffer, &dma_len, data_rw.timeout_ms);
|
usb2dev_write_endpoint_timeout(data_rw.epn, data_rw.buffer, &dma_len, data_rw.timeout_ms);
|
||||||
|
}
|
||||||
|
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
||||||
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_to_user\n");
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_WRITE_EP_TMOT EP out of range\n");
|
||||||
}
|
}
|
||||||
ret = copy_to_user((void __user *)data_rw.dma_length, &dma_len, sizeof(UINT32));
|
|
||||||
if (ret != 0)
|
|
||||||
DBG_ERR("copy_to_user\n");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -993,7 +1060,11 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
case USB2DEV_IOC_STALL_EP: {
|
case USB2DEV_IOC_STALL_EP: {
|
||||||
ret = copy_from_user(&value, (void __user *)ul_arg, sizeof(UINT32));
|
ret = copy_from_user(&value, (void __user *)ul_arg, sizeof(UINT32));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
usb2dev_set_ep_stall((USB_EP) value);
|
if ((value <= (USB_EP_MAX -1))) {
|
||||||
|
usb2dev_set_ep_stall((USB_EP) value);
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_STALL_EP EP out of range\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
@ -1008,10 +1079,14 @@ int nvt_usb2dev_drv_ioctl(unsigned char uc_if, USB2DEV_MODULE_INFO *pmodule_info
|
||||||
case USB2DEV_IOC_CHK_EPBUSY: {
|
case USB2DEV_IOC_CHK_EPBUSY: {
|
||||||
ret = copy_from_user(&value, (void __user *)ul_arg, sizeof(UINT32));
|
ret = copy_from_user(&value, (void __user *)ul_arg, sizeof(UINT32));
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
value = usb2dev_check_ep_busy((USB_EP) value);
|
if ((value <= (USB_EP_MAX -1))) {
|
||||||
ret = copy_to_user((void __user *)ul_arg, &value, sizeof(UINT32));
|
value = usb2dev_check_ep_busy((USB_EP) value);
|
||||||
if (ret != 0)
|
ret = copy_to_user((void __user *)ul_arg, &value, sizeof(UINT32));
|
||||||
DBG_ERR("copy_to_user\n");
|
if (ret != 0)
|
||||||
|
DBG_ERR("copy_to_user\n");
|
||||||
|
} else {
|
||||||
|
DBG_ERR("USB2DEV_IOC_CHK_EPBUSY EP out of range\n");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
|
@ -17,4 +17,4 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VOS_MODULE_VERSION(usb2dev, 1, 00, 000, 11);
|
VOS_MODULE_VERSION(usb2dev, 1, 00, 000, 14);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user