Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280790
b: refs/heads/master
c: 9187bef
h: refs/heads/master
v: v3
  • Loading branch information
Geoff Levand committed Dec 8, 2011
1 parent a521338 commit 5d98f6d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 876e0df902c726408c84b75dab673a90fd492e1d
refs/heads/master: 9187bef2fa395e85d5e22c4792b553d98410ccd6
30 changes: 30 additions & 0 deletions trunk/drivers/usb/host/ehci-ps3.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,34 @@
#include <asm/firmware.h>
#include <asm/ps3.h>

static void ps3_ehci_setup_insnreg(struct ehci_hcd *ehci)
{
/* PS3 HC internal setup register offsets. */

enum ps3_ehci_hc_insnreg {
ps3_ehci_hc_insnreg01 = 0x084,
ps3_ehci_hc_insnreg02 = 0x088,
ps3_ehci_hc_insnreg03 = 0x08c,
};

/* PS3 EHCI HC errata fix 316 - The PS3 EHCI HC will reset its
* internal INSNREGXX setup regs back to the chip default values
* on Host Controller Reset (CMD_RESET) or Light Host Controller
* Reset (CMD_LRESET). The work-around for this is for the HC
* driver to re-initialise these regs when ever the HC is reset.
*/

/* Set burst transfer counts to 256 out, 32 in. */

writel_be(0x01000020, (void __iomem *)ehci->regs +
ps3_ehci_hc_insnreg01);

/* Enable burst transfer counts. */

writel_be(0x00000001, (void __iomem *)ehci->regs +
ps3_ehci_hc_insnreg03);
}

static int ps3_ehci_hc_reset(struct usb_hcd *hcd)
{
int result;
Expand Down Expand Up @@ -49,6 +77,8 @@ static int ps3_ehci_hc_reset(struct usb_hcd *hcd)

ehci_reset(ehci);

ps3_ehci_setup_insnreg(ehci);

return result;
}

Expand Down

0 comments on commit 5d98f6d

Please sign in to comment.