A compilation of code from different sources to provide support for a Playstation 3 controller via bluetooth on the m3pi.
Fork of mbed_TANK_PS3 by
Diff: USBHost.cpp
- Revision:
- 2:895f70862eb9
- Parent:
- 1:ae49669c5e92
--- a/USBHost.cpp Sun Dec 30 05:16:28 2012 +0000 +++ b/USBHost.cpp Tue Jan 01 02:10:08 2013 +0000 @@ -826,9 +826,9 @@ } #define HOST_CLK_EN (1<<0) - #define PORTSEL_CLK_EN (1<<3) - #define AHB_CLK_EN (1<<4) - #define CLOCK_MASK (HOST_CLK_EN | PORTSEL_CLK_EN | AHB_CLK_EN) + #define OTG_CLK_EN (1<<3) + #define AHB_CLK_EN (1<<4) + #define CLOCK_MASK (HOST_CLK_EN | OTG_CLK_EN | AHB_CLK_EN) #define FRAMEINTERVAL (12000-1) // 1ms #define DEFAULT_FMINTERVAL ((((6 * (FRAMEINTERVAL - 210)) / 7) << 16) | FRAMEINTERVAL) @@ -847,26 +847,28 @@ // turn on power for USB LPC_SC->PCONP |= (1UL<<31); // Enable USB host clock, port selection and AHB clock - LPC_USB->USBClkCtrl |= CLOCK_MASK; + LPC_USB->OTGClkCtrl |= CLOCK_MASK; // Wait for clocks to become available - while ((LPC_USB->USBClkSt & CLOCK_MASK) != CLOCK_MASK) + while ((LPC_USB->OTGClkSt & CLOCK_MASK) != CLOCK_MASK) ; // We are a Host LPC_USB->OTGStCtrl |= 1; - LPC_USB->USBClkCtrl &= ~PORTSEL_CLK_EN; // we don't need port selection clock until we do OTG + LPC_USB->OTGClkCtrl &= ~OTG_CLK_EN; // we don't need port selection clock until we do OTG + + // configure USB pins D+/D- + LPC_PINCON->PINSEL1 &= ~((3<<26)|(3<<28)); // Set PINSEL1 bits 26:29 to 0 + LPC_PINCON->PINSEL1 |= ((1<<26)|(1<<28)); // Set PINSEL1 bits 26 and 28 to 1 - // configure USB pins - LPC_PINCON->PINSEL1 &= ~((3<<26)|(3<<28)); - LPC_PINCON->PINSEL1 |= ((1<<26)|(1<<28)); // USB D+/D- - - LPC_PINCON->PINSEL3 &= ~((3 << 6) | (3 << 22)); // USB_PPWR, USB_OVRCR - LPC_PINCON->PINSEL3 |= ((2 << 6) | (2 << 22)); + // USB_PPWR, USB_OVRCR + LPC_PINCON->PINSEL3 &= ~((3 << 6) | (3 << 22)); // Set PINSEL3 bits 6,:7 and 22:23 to 0 + LPC_PINCON->PINSEL3 |= ((2 << 6) | (2 << 22)); // Set PINSEL3 bits 7 and 23 to 1 - LPC_PINCON->PINSEL4 &= ~(3 << 18); // USB_CONNECT - LPC_PINCON->PINSEL4 |= (1 << 18); + // USB_CONNECT + LPC_PINCON->PINSEL4 &= ~(3 << 18); // Set PINSEL4 bits 18:19 to 0 + LPC_PINCON->PINSEL4 |= (1 << 18); // Set PINSEL4 bits 18 to 1 - // Reset OHCI block + // Reset OHCI block LPC_USB->HcControl = 0; LPC_USB->HcControlHeadED = 0; LPC_USB->HcBulkHeadED = 0;