On Thu, 7 Dec 2006, Robert Dyck wrote:

> I recently introduced 2.6.19 on one of my machines. A change  made in  
> uhci-hcd.c is causing a problem for me. I had previously become aware of an 
> incompatibility between my web cam ( with microphone ) and KDE kmix. When the 
> camera is disconnected kmix appears to go into a loop and the CPU cycles at 
> 100%. This is a minor inconvenience because it is easily avoided but now when 
> I suspend and resume it elicits the same response as a disconnect. I have to 
> kill kmix and restart it.

This sounds like a problem with kmix, not a problem with uhci-hcd.  Have 
you reported it to the people responsible for that program?

> The change to uhci-hcd.c targets the ASUS A7V8X motherboard. My A7V8X-X has 
> not exhibited the behaviour that the patch was meant to address. Perhaps we 
> can also assume that the problem has been corrected in the -MX and -MX SE 
> boards as well.
> 
> On my system I made a small change that works for me. I changed  
> DMI_MATCH(DMI_BOARD_NAME, "A7V8X") to
> DMI_MATCH(DMI_BOARD_NAME, "A7V8X ")
> Notice the space after A7V8X.
> 
>  I hope this information is helpful.
> Rob Dyck

In fact I don't even have any real evidence that the original problem
exists on all A7V8X motherboards; it might exist only on the one board 
owned by Tim, the original reporter.

Are you sure that your change will work?  I suspect the string you need to
match against is "A7V8X" with no space at the end.  This would mean your
change will break the original code.

How about the patch below instead?  Tim, can you confirm that your system 
is okay with it?

Alan Stern



Index: usb-2.6/drivers/usb/host/uhci-hcd.c
===================================================================
--- usb-2.6.orig/drivers/usb/host/uhci-hcd.c
+++ usb-2.6/drivers/usb/host/uhci-hcd.c
@@ -209,24 +209,16 @@ static int resume_detect_interrupts_are_
 
 static int remote_wakeup_is_broken(struct uhci_hcd *uhci)
 {
-       static struct dmi_system_id broken_wakeup_table[] = {
-               {
-                       .ident = "Asus A7V8X",
-                       .matches = {
-                               DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK"),
-                               DMI_MATCH(DMI_BOARD_NAME, "A7V8X"),
-                               DMI_MATCH(DMI_BOARD_VERSION, "REV 1.xx"),
-                       }
-               },
-               { }
-       };
        int port;
+       char *sys_info;
+       static char bad_Asus_board[] = "A7V8X";
 
        /* One of Asus's motherboards has a bug which causes it to
         * wake up immediately from suspend-to-RAM if any of the ports
         * are connected.  In such cases we will not set EGSM.
         */
-       if (dmi_check_system(broken_wakeup_table)) {
+       sys_info = dmi_get_system_info(DMI_BOARD_NAME);
+       if (sys_info && !strcmp(sys_info, bad_Asus_board)) {
                for (port = 0; port < uhci->rh_numports; ++port) {
                        if (inw(uhci->io_addr + USBPORTSC1 + port * 2) &
                                        USBPORTSC_CCS)


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to