[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <4F4C998D.4000805@mediatek.com>
Date: Tue, 28 Feb 2012 17:08:29 +0800
From: Meng Zhang <meng.zhang@...iatek.com>
To: mdharm-usb@...-eyed-alien.net, phil@...m.com,
stern@...land.harvard.edu
CC: linux-usb@...r.kernel.org, usb-storage@...ts.one-eyed-alien.net,
linux-kernel@...r.kernel.org
Subject: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry
from: Meng Zhang <meng.zhang@...iatek.com>
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
4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Meng Zhang <meng.zhang@...iatek.com>
---
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(-)
diff --git a/drivers/usb/storage/initializers.c
b/drivers/usb/storage/initializers.c
index 105d900..44985a1 100644
--- a/drivers/usb/storage/initializers.c
+++ b/drivers/usb/storage/initializers.c
@@ -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;
+}
diff --git a/drivers/usb/storage/initializers.h
b/drivers/usb/storage/initializers.h
index 529327f..6c9337f 100644
--- a/drivers/usb/storage/initializers.h
+++ b/drivers/usb/storage/initializers.h
@@ -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);
diff --git a/drivers/usb/storage/unusual_devs.h
b/drivers/usb/storage/unusual_devs.h
index 856ad92..574c291 100644
--- a/drivers/usb/storage/unusual_devs.h
+++ b/drivers/usb/storage/unusual_devs.h
@@ -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 <meng.zhang@...iatek.com>
+ * 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 <antoine.mairesse@...e.fr> */
UNUSUAL_DEV( 0x0ed1, 0x6660, 0x0100, 0x0300,
"USB",
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists