Skip to contentSkip to conversation

USB: Mass Storage: Add MediaTek MT6276M device entry

PATCH In review Meng Zhang 5 participants 10 messages Feb 28, 2012 – Feb 29, 2012

Subsystems (2)
lore
Share & tools
lore

Meng Zhang

author
#0 lore raw

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

4. patch 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
index 105d900..44985a1 100644
@@ -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
index 529327f..6c9337f 100644
@@ -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
index 856ad92..574c291 100644
@@ -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",
#1 lore raw

Hello.

Quoted 17 lines · Meng Zhang

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

Quoted 2 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

This information (4) should be under the --- tear line.

Quoted 1 line

[...]

Quoted 6 lines
drivers/usb/storage/initializers.c +0 -0
index 105d900..44985a1 100644

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 111

Quoted 8 lines
drivers/usb/storage/initializers.c +5 -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[] = {

Unfortunately, when I reply to messages with "format=flowed", source
formatting is spoiled. :-(

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 112

Quoted 1 line
drivers/usb/storage/initializers.c +1 -0
+ 0x55, 0x53, 0x42, 0x43, 0x78, 0x56, 0x34, 0x12,

All indentation here should be done with tabs, not tab and two spaces.

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 116

Quoted 4 lines
drivers/usb/storage/initializers.c +4 -0
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf0,
+ 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };

WBR, Sergei

#2 lore raw

Hi, about the indentation I saw in initializers.c is also tab with 2 spaces.. should I change this to 2 tabs manually?

Thanks!

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Sergei Shtylyov
Sent: Tuesday, February 28, 2012 7:39 PM
To: Meng Zhang (张萌)
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Hello.

Quoted 17 lines · Meng Zhang

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

Quoted 2 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

This information (4) should be under the --- tear line.

Quoted 1 line

[...]

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 108

Quoted 11 lines
drivers/usb/storage/initializers.c +4 -0
index 105d900..44985a1 100644
@@ -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[] = {
    Unfortunately, when I reply to messages with "format=flowed", source formatting is spoiled. :-(

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 112

Quoted 1 line
drivers/usb/storage/initializers.c +1 -0
+ 0x55, 0x53, 0x42, 0x43, 0x78, 0x56, 0x34, 0x12,

All indentation here should be done with tabs, not tab and two spaces.

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 112

Quoted 3 lines
drivers/usb/storage/initializers.c +3 -0
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf0, 0x01, 0x03, 0x00, 
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+ 0x00 };

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
�翳簕.n�+壏煯壄�+%娝�遍荻w�簕.n�+壏{炳G珴�妠ay�蕠跈�,jf"穐殢飦�戧鐉_璁(殠娸"濟�m���G珴�⒏?櫒璀�&x忈秈O曟瑉窔v豝�m��� �鹅�⒏?朓�

#3 lore raw

Dear Sergei,

Sorry I misunderstand it. I'll correct the format and re-submit soon.

Thanks.

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Meng Zhang (张萌)
Sent: Tuesday, February 28, 2012 8:00 PM
To: Sergei Shtylyov
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: RE: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Hi, about the indentation I saw in initializers.c is also tab with 2 spaces.. should I change this to 2 tabs manually?

Thanks!

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Sergei Shtylyov
Sent: Tuesday, February 28, 2012 7:39 PM
To: Meng Zhang (张萌)
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Hello.

Quoted 17 lines · Meng Zhang

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

Quoted 2 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

This information (4) should be under the --- tear line.

Quoted 1 line

[...]

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 108

Quoted 11 lines
drivers/usb/storage/initializers.c +4 -0
index 105d900..44985a1 100644
@@ -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[] = {
    Unfortunately, when I reply to messages with "format=flowed", source formatting is spoiled. :-(

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 112

Quoted 1 line
drivers/usb/storage/initializers.c +1 -0
+ 0x55, 0x53, 0x42, 0x43, 0x78, 0x56, 0x34, 0x12,

All indentation here should be done with tabs, not tab and two spaces.

drivers/usb/storage/initializers.c int usb_stor_huawei_e220_init(struct us_data *us) · line 112

Quoted 3 lines
drivers/usb/storage/initializers.c +3 -0
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xf0, 0x01, 0x03, 0x00, 
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+ 0x00 };

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
韬{.n?壏煯壄?%娝lzwm呴b濍Р骒r笡zXЩ琻)韰骅w*jg?秹殠娸/侁鋤罐枈?娹櫒璀??摺玜囤瓽珴閔?鎗:+v墾妛鑶佶 ���{.n�+�������+%�����ݶ��w��{.n�+����{��G�����{ay�ʇڙ�,j��f���h��������z_�(�階�ݢj"���m������G������?����&���~��iO��z��v�^�m���� ������?�I�

maintainer
#4 lore raw
In reply to Meng Zhang
Quoted 17 lines · Meng Zhang

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
Quoted 5 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Nowadays, aren't such things handled in userspace by the usb_modeswitch program rather than in the kernel driver?

Alan Stern

#5 lore raw

Hi Alan,

As far as I know, many other devices used this init function in unusual_devs.h for their "ZeroCD" feature, and I think this is more convenient than let device user install utilities like usb_modeswitch and input command manually.

Thanks.

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Alan Stern
Sent: Tuesday, February 28, 2012 11:31 PM
To: Meng Zhang (张萌)
Cc: Josua Dietze; Matthew Dharm; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Quoted 17 lines · Meng Zhang

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
Quoted 5 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Nowadays, aren't such things handled in userspace by the usb_modeswitch program rather than in the kernel driver?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
�翳簕.n�+壏煯壄�+%娝�遍荻w�簕.n�+壏{炳G珴�妠ay�蕠跈�,jf"穐殢飦�戧鐉_璁(殠娸"濟�m���G珴�⒏?櫒璀�&x忈秈O曟瑉窔v豝�m��� �鹅�⒏?朓�

#6 lore raw

Devices should not be added to unusual_devs.h unless the device CANNOT use the usb_modeswitch method. This most commonly applies when the device's usb-storage emulation is poor, and the probing commands sent by usb-storage cause the device to crash.

It is much more convenient for users to just upgrade their usb_modeswitch utility than it is for them to upgrade a kernel, which is much more difficult and much more rare. As for 'input command manually', that is what udev scripts are for.

If this can be handled from userspace by usb_modeswitch, then that is where it should be done.

Matt

2012/2/28 Meng Zhang (张萌) <[email protected]>:

Quoted 47 lines

Hi Alan,

As far as I know, many other devices used this init function in unusual_devs.h for their "ZeroCD" feature, and I think this is more convenient than let device user install utilities like usb_modeswitch and input command manually.

Thanks.

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Alan Stern
Sent: Tuesday, February 28, 2012 11:31 PM
To: Meng Zhang (张萌)
Cc: Josua Dietze; Matthew Dharm; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Quoted 17 lines · Meng Zhang

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
Quoted 5 lines

4. patch based on branch:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Nowadays, aren't such things handled in userspace by the usb_modeswitch program rather than in the kernel driver?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

Signature · 2 lines
Matthew Dharm
Maintainer, USB Mass Storage driver for Linux
#7 lore raw

Hi Matthew,

Thanks for your comment, I've tested some other products and found their entries in /lib/udev/rules.d/40-usb_modeswitch.rules. So, does usb_modeswitch comes with latest distributions by default?

Thanks!

BR.
Meng Zhang

-----Original Message-----
From: Matthew Dharm [mailto:[email protected]]
Sent: Wednesday, February 29, 2012 12:08 PM
To: Meng Zhang (张萌)
Cc: Alan Stern; Josua Dietze; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Devices should not be added to unusual_devs.h unless the device CANNOT use the usb_modeswitch method. This most commonly applies when the device's usb-storage emulation is poor, and the probing commands sent by usb-storage cause the device to crash.

It is much more convenient for users to just upgrade their usb_modeswitch utility than it is for them to upgrade a kernel, which is much more difficult and much more rare. As for 'input command manually', that is what udev scripts are for.

If this can be handled from userspace by usb_modeswitch, then that is where it should be done.

Matt

2012/2/28 Meng Zhang (张萌) <[email protected]>:

Quoted 45 lines

Hi Alan,

As far as I know, many other devices used this init function in unusual_devs.h for their "ZeroCD" feature, and I think this is more convenient than let device user install utilities like usb_modeswitch and input command manually.

Thanks.

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Alan Stern
Sent: Tuesday, February 28, 2012 11:31 PM
To: Meng Zhang (张萌)
Cc: Josua Dietze; Matthew Dharm; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Quoted 17 lines · Meng Zhang

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
Quoted 6 lines

4. patch based on branch:

git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Quoted 8 lines

Nowadays, aren't such things handled in userspace by the usb_modeswitch program rather than in the kernel driver?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Matthew Dharm
Maintainer, USB Mass Storage driver for Linux �翳簕.n�+壏煯壄�+%娝�遍荻w�簕.n�+壏{炳G珴�妠ay�蕠跈�,jf"穐殢飦�戧鐉_璁(殠娸"濟�m���G珴�⒏?櫒璀�&x忈秈O曟瑉窔v豝�m��� �鹅�⒏?朓�

#8 lore raw

My understanding is that usb_modeswitch is part of most distributions, but that is really a question for the distro guys...

Matt

2012/2/28 Meng Zhang (张萌) <[email protected]>:

Quoted 86 lines

Hi Matthew,

Thanks for your comment, I've tested some other products and found their entries in /lib/udev/rules.d/40-usb_modeswitch.rules. So, does usb_modeswitch comes with latest distributions by default?

Thanks!

BR.
Meng Zhang

-----Original Message-----
From: Matthew Dharm [mailto:[email protected]]
Sent: Wednesday, February 29, 2012 12:08 PM
To: Meng Zhang (张萌)
Cc: Alan Stern; Josua Dietze; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Devices should not be added to unusual_devs.h unless the device CANNOT use the usb_modeswitch method. This most commonly applies when the device's usb-storage emulation is poor, and the probing commands sent by usb-storage cause the device to crash.

It is much more convenient for users to just upgrade their usb_modeswitch utility than it is for them to upgrade a kernel, which is much more difficult and much more rare. As for 'input command manually', that is what udev scripts are for.

If this can be handled from userspace by usb_modeswitch, then that is where it should be done.

Matt

2012/2/28 Meng Zhang (张萌) <[email protected]>:

Quoted 45 lines

Hi Alan,

As far as I know, many other devices used this init function in unusual_devs.h for their "ZeroCD" feature, and I think this is more convenient than let device user install utilities like usb_modeswitch and input command manually.

Thanks.

BR.
Meng Zhang

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Alan Stern
Sent: Tuesday, February 28, 2012 11:31 PM
To: Meng Zhang (张萌)
Cc: Josua Dietze; Matthew Dharm; Phil Dibowitz; USB list; USB Storage list; Kernel development list
Subject: Re: [PATCH] USB: Mass Storage: Add MediaTek MT6276M device entry

Quoted 17 lines · Meng Zhang

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
Quoted 6 lines

4. patch based on branch:

git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Quoted 8 lines

Nowadays, aren't such things handled in userspace by the usb_modeswitch program rather than in the kernel driver?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Matthew Dharm
Maintainer, USB Mass Storage driver for Linux

Signature · 2 lines
Matthew Dharm
Maintainer, USB Mass Storage driver for Linux
#9 lore raw
In reply to Meng Zhang (张萌)

Am 29.02.2012 07:03, schrieb Meng Zhang:

Quoted 3 lines

Thanks for your comment, I've tested some other products and found their entries in /lib/udev/rules.d/40-usb_modeswitch.rules. So, does usb_modeswitch comes with latest distributions by default?

Yes, it does. In most cases it is a prerequisite of Network Manager AFAIK.

The most-used mode switch entry in unusual_devs.h is there for historical reasons, from a time when usb_modeswitch was not included with distributions yet. I'm talking about "usb_stor_huawei_e220_init".

If people want to access the installer drive for some reason, it's not possible if the kernel does the mode switch without giving a choice. With usb_modeswitch, it's a matter of a small configuration edit.

Josua Dietze