linux平台添加usb 3g的流程 (usb 接口中兴AC580)

我说一下,我的编写流程:
1.在storage/unusual_devs.h中添加
UNUSUAL_DEV(0x19D2,0x0026,0x0000,0x0000,
"ZTE MOBILE",
"Mass Storage",
US_SC_DEVICE,US_PR_DEVICE,usb_stor_ZTE_AC580_init,
0),

2.在storage/Initializers.h中添加
int usb_stor_ZTE_AC580_init(struct us_data *us);

3.在storage/Initializers.c中添加
int usb_stor_ZTE_AC580_init(struct us_data *us)  // PID = 0x0026
{
int result = 0;
int act_len = 0;

unsigned char cmd[32] = { 
0x55, 0x53, 0x42, 0x43, 0x28, 0x4e, 0xbc, 0x88, 
0x24, 0x00, 0x00, 0x00, 0x80, 0x00, 0x06, 0x85, 
0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};


result = usb_stor_control_msg(us, us->send_ctrl_pipe,USB_REQ_SET_FEATURE,
      USB_TYPE_STANDARD | USB_RECIP_DEVICE,0x01, 0x0, NULL, 0x0, 1000);
US_DEBUGP("usb_stor_control_msg performing result is %d\n", result);
printk("====AC580===>usb_stor_control_msg performing result is %d\n", result);

result |= usb_stor_bulk_transfer_buf (us, us->send_bulk_pipe, cmd, 31, &act_len);
US_DEBUGP("usb_stor_bulk_transfer_buf performing result12 is %d, transfer the actual length=%d\n", result, act_len);
printk("usb_stor_bulk_transfer_buf performing result is %d, transfer the actual length=%d\n", result, act_len);

return (result ? 0 : -ENODEV);
}

5.在Serial/option.c中添加
#define ZTE_VENDOR_ID 0x19D2
#define ZTE_PRODUCT_AC580 0x0094
{USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID,0x0026,0xff,0xff,0xff)},
{USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID,ZTE_PRODUCT_AC580,0xff,0xff,0xff)},

你可能感兴趣的:(linux平台添加usb 3g的流程 (usb 接口中兴AC580))