USB: Mass Storage: Add MediaTek MT6276M device entry
Subsystems (2)
PATCH 1/1 USB: Mass Storage: Add MediaTek MT6276M device entry
from: Meng Zhang <[email protected]>
1. Add entrys for mediatek MT6276M in unusual_devs.h
2. Add init function for mediatek MT6276M to switch to COM port mode
3. usb-devices outputs after running with this patch:
T: Bus=02 Lev=01 Prnt=01 Port=05 Cnt=01 Dev#= 48 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=0e8d ProdID=00a1 Rev=02.00 S: Manufacturer=MediaTek Inc S: Product=Product C: #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=02 Prot=01 Driver=option I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
Signed-off-by Meng Zhang <[email protected]>
---
this patch is based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
drivers/usb/storage/initializers.c | 27 +++++++++++++++++++++++++++ drivers/usb/storage/initializers.h | 3 +++ drivers/usb/storage/unusual_devs.h | 9 +++++++++ 3 files changed, 39 insertions(+), 0 deletions(-)
drivers/usb/storage/initializers.c +27 -0
@@ -104,3 +104,30 @@ int usb_stor_huawei_e220_init(struct us_data *us)US_DEBUGP ("Huawei mode set result is %d\n" , result);return 0 ; } + +/* switch MediaTek MT6276M to COM port mode */ +int usb_stor_mediatek_mt6276m_init (struct us_data *us) +{ +const unsigned char rezero_msg[] = { +0x55 ,0x53 ,0x42 ,0x43 ,0x78 ,0x56 ,0x34 ,0x12 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x06 ,0xf0 , +0x01 ,0x03 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 + }; +char *buffer; +int result; + +US_DEBUGP ("Initializing mediatek USB device...\n" ); + + buffer =kzalloc (32 ,GFP_KERNEL ); +if (buffer ==NULL ) +return USB_STOR_TRANSPORT_ERROR ; + +memcpy (buffer, rezero_msg,sizeof (rezero_msg)); + result =usb_stor_bulk_transfer_buf (us, + us->send_bulk_pipe, + buffer,sizeof (rezero_msg),NULL ); + +kfree (buffer); +return result; +}
drivers/usb/storage/initializers.h +3 -0
@@ -48,3 +48,6 @@ int usb_stor_ucr61s2b_init(struct us_data *us);/* This places the HUAWEI E220 devices in multi-port mode */ int usb_stor_huawei_e220_init (struct us_data *us); + +/* switch MediaTek MT6276M to COM port mode */ +int usb_stor_mediatek_mt6276m_init (struct us_data *us);
drivers/usb/storage/unusual_devs.h +9 -0
@@ -1356,6 +1356,15 @@ UNUSUAL_DEV( 0x0e21, 0x0520, 0x0100, 0x0100, USB_SC_DEVICE, USB_PR_BULK, NULL, US_FL_NEED_OVERRIDE ), +/* Reported by Meng Zhang <[email protected]> +* switch mediatek USB devices into COM port mode +*/ +UNUSUAL_DEV (0x0e8d ,0x0002 ,0x0000 ,0x0300 , +"MediaTek Inc." , +"MT6276M" , +USB_SC_DEVICE ,USB_PR_DEVICE , + usb_stor_mediatek_mt6276m_init,0 ), +/* Submitted by Antoine Mairesse <[email protected]> */ UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300, "USB",