Pb patch pour ehci-hcd (Pb USB2)
Bonjour,
Pour tenter quelque chose pour mon problème de ehci-hcd (carte mère Asus
P4P800), j'ai tenté de patcher avec le ehci-handoff-2.patch suivant :
en root, j'ai fait :
cd /usr/src/
patch -p1 < ehci-handoff-2.patch
il me demande alors quel fichier doit être patché.
Lequel faut-il ?
(j'ai aussi essayé patch -p0 < ehci-hcd.patch
et aussi dans /usr/src/linux/ mais sans succès)
Je joins le code du patch 'ehci-handoff-2.patch' au cas où ça parle à
quelqu'un...
merci
Emmanuel
#########################
commit d49d431744007cec0ee1a3ade96f9e0f100c7907
tree 4ed2f01c98b8fdf0ecd7a92d61f7c1af8beb58a2
parent 9198769363d4dc1d63d49ecb2e2b189aceb42d94
author David Brownell <david-b@pacbell.net> 1115497310 -0700
committer Greg Kroah-Hartman <gregkh@suse.de> 1119908635 -0700
[PATCH] USB: misc ehci updates
Various minor EHCI updates
* Dump some more info in the debug dumps, notably the product
description (e.g. chip vendor), BIOS handhake flags, and
debug port status (when it's not managed by the HCD).
* Minor updates to the BIOS handoff code: always flag the HCD
as owned by Linux (in case BIOS doesn't grab it "early"),
and on the buggy-BIOS path always match the "early handoff"
code and forcibly disable SMI IRQs.
* For the disabled 64bit DMA support, there's now a constant
to use for the mask; use it.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
D:100644 100644 2ff11d53567bcbfd0fdaf48de5dfc545d6d93eab
50cb01831075916c5f8e828f5e15f1ddd0df91df M drivers/usb/host/ehci-dbg.c
R:100644 100644 527abc693b17841ade6acdf2a673ab5fc5b260e7
35248a37b7174ad807110fa74eef1382fe4c4f80 M drivers/usb/host/ehci-hcd.c
D:100644 100644 d7b4f7939ded4d16989478ca58fa3edc573fb728
36cc1f2218d55d203434aafb0698773291b48e4b M drivers/usb/host/ehci-hub.c
D:100644 100644 7df9b9af54f60205b09a6e490db182c33ef922ec
45d89a7083b13f4bfd30b319f438c2b996948260 M drivers/usb/host/ehci-q.c
Key:
S: Skipped
I: Included Included verbatim
D: Deleted Manually deleted by subsequent user edit
R: Revised Manually revised by subsequent user edit
Only include bios_handoff change and rediff for 2.6.8 - Horms
--- a/drivers/usb/host/ehci-hcd.c 2005-07-04 20:49:26.000000000 +0900
+++ b/drivers/usb/host/ehci-hcd.c 2005-07-04 20:52:40.000000000 +0900
@@ -288,30 +288,32 @@
*/
static int bios_handoff (struct ehci_hcd *ehci, int where, u32 cap)
{
- if (cap & (1 << 16)) {
- int msec = 5000;
- struct pci_dev *pdev = to_pci_dev(ehci->hcd.self.controller);
+struct pci_dev *pdev = to_pci_dev(ehci_to_hcd(ehci)->self.controller);
+ struct pci_dev *pdev = to_pci_dev(ehci_to_hcd(ehci)->self.controller);
- /* request handoff to OS */
- cap |= 1 << 24;
- pci_write_config_dword(pdev, where, cap);
+ /* always say Linux will own the hardware */
+ pci_write_config_byte(pdev, where + 3, 1);
- /* and wait a while for it to happen */
+ /* maybe wait a while for BIOS to respond */
+ if (cap & (1 << 16)) {
do {
msleep(10);
msec -= 10;
pci_read_config_dword(pdev, where, &cap);
} while ((cap & (1 << 16)) && msec);
if (cap & (1 << 16)) {
- ehci_err (ehci, "BIOS handoff failed (%d, %04x)\n",
+ ehci_err(ehci, "BIOS handoff failed (%d, %04x)\n",
where, cap);
// some BIOS versions seem buggy...
// return 1;
ehci_warn (ehci, "continuing after BIOS bug...\n");
- return 0;
- }
- ehci_dbg (ehci, "BIOS handoff succeeded\n");
+ /* disable all SMIs, and clear "BIOS owns" flag */
+ pci_write_config_dword(pdev, where + 4, 0);
+ pci_write_config_byte(pdev, where + 2, 0);
+ } else
+ ehci_dbg(ehci, "BIOS handoff succeeded\n");
}
+
return 0;
}
#######################
Reply to: