diff options
Diffstat (limited to 'arch/mips/pnx8550/common/platform.c')
| -rw-r--r-- | arch/mips/pnx8550/common/platform.c | 31 | 
1 files changed, 30 insertions, 1 deletions
diff --git a/arch/mips/pnx8550/common/platform.c b/arch/mips/pnx8550/common/platform.c index 5264cc09a27..0a8faeaa7b7 100644 --- a/arch/mips/pnx8550/common/platform.c +++ b/arch/mips/pnx8550/common/platform.c @@ -20,6 +20,7 @@  #include <linux/serial.h>  #include <linux/serial_pnx8xxx.h>  #include <linux/platform_device.h> +#include <linux/usb/ohci_pdriver.h>  #include <int.h>  #include <usb.h> @@ -96,12 +97,40 @@ static u64 ohci_dmamask = DMA_BIT_MASK(32);  static u64 uart_dmamask = DMA_BIT_MASK(32); +static int pnx8550_usb_ohci_power_on(struct platform_device *pdev) +{ +	/* +	 * Set register CLK48CTL to enable and 48MHz +	 */ +	outl(0x00000003, PCI_BASE | 0x0004770c); + +	/* +	 * Set register CLK12CTL to enable and 48MHz +	 */ +	outl(0x00000003, PCI_BASE | 0x00047710); + +	udelay(100); + +	return 0; +} + +static void pnx8550_usb_ohci_power_off(struct platform_device *pdev) +{ +	udelay(10); +} + +static struct usb_ohci_pdata pnx8550_usb_ohci_pdata = { +	.power_on	= pnx8550_usb_ohci_power_on, +	.power_off	= pnx8550_usb_ohci_power_off, +}; +  static struct platform_device pnx8550_usb_ohci_device = { -	.name		= "pnx8550-ohci", +	.name		= "ohci-platform",  	.id		= -1,  	.dev = {  		.dma_mask		= &ohci_dmamask,  		.coherent_dma_mask	= DMA_BIT_MASK(32), +		.platform_data		= &pnx8550_usb_ohci_pdata,  	},  	.num_resources	= ARRAY_SIZE(pnx8550_usb_ohci_resources),  	.resource	= pnx8550_usb_ohci_resources,  |