diff options
Diffstat (limited to 'arch/arm/mach-omap2')
| -rw-r--r-- | arch/arm/mach-omap2/board-omap4panda.c | 55 | 
1 files changed, 21 insertions, 34 deletions
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c index b02c2f00609..a71ad345f20 100644 --- a/arch/arm/mach-omap2/board-omap4panda.c +++ b/arch/arm/mach-omap2/board-omap4panda.c @@ -31,6 +31,7 @@  #include <linux/ti_wilink_st.h>  #include <linux/usb/musb.h>  #include <linux/usb/phy.h> +#include <linux/usb/nop-usb-xceiv.h>  #include <linux/wl12xx.h>  #include <linux/irqchip/arm-gic.h>  #include <linux/platform_data/omap-abe-twl6040.h> @@ -132,6 +133,22 @@ static struct platform_device btwilink_device = {  	.id	= -1,  }; +/* PHY device on HS USB Port 1 i.e. nop_usb_xceiv.1 */ +static struct nop_usb_xceiv_platform_data hsusb1_phy_data = { +	/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */ +	.clk_rate = 19200000, +}; + +static struct usbhs_phy_data phy_data[] __initdata = { +	{ +		.port = 1, +		.reset_gpio = GPIO_HUB_NRESET, +		.vcc_gpio = GPIO_HUB_POWER, +		.vcc_polarity = 1, +		.platform_data = &hsusb1_phy_data, +	}, +}; +  static struct platform_device *panda_devices[] __initdata = {  	&leds_gpio,  	&wl1271_device, @@ -142,49 +159,19 @@ static struct platform_device *panda_devices[] __initdata = {  static struct usbhs_omap_platform_data usbhs_bdata __initdata = {  	.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, -	.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, -	.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, -	.phy_reset  = false, -	.reset_gpio_port[0]  = -EINVAL, -	.reset_gpio_port[1]  = -EINVAL, -	.reset_gpio_port[2]  = -EINVAL -}; - -static struct gpio panda_ehci_gpios[] __initdata = { -	{ GPIO_HUB_POWER,	GPIOF_OUT_INIT_LOW,  "hub_power"  }, -	{ GPIO_HUB_NRESET,	GPIOF_OUT_INIT_LOW,  "hub_nreset" },  };  static void __init omap4_ehci_init(void)  {  	int ret; -	struct clk *phy_ref_clk;  	/* FREF_CLK3 provides the 19.2 MHz reference clock to the PHY */ -	phy_ref_clk = clk_get(NULL, "auxclk3_ck"); -	if (IS_ERR(phy_ref_clk)) { -		pr_err("Cannot request auxclk3\n"); -		return; -	} -	clk_set_rate(phy_ref_clk, 19200000); -	clk_prepare_enable(phy_ref_clk); - -	/* disable the power to the usb hub prior to init and reset phy+hub */ -	ret = gpio_request_array(panda_ehci_gpios, -				 ARRAY_SIZE(panda_ehci_gpios)); -	if (ret) { -		pr_err("Unable to initialize EHCI power/reset\n"); -		return; -	} - -	gpio_export(GPIO_HUB_POWER, 0); -	gpio_export(GPIO_HUB_NRESET, 0); -	gpio_set_value(GPIO_HUB_NRESET, 1); +	ret = clk_add_alias("main_clk", "nop_usb_xceiv.1", "auxclk3_ck", NULL); +	if (ret) +		pr_err("Failed to add main_clk alias to auxclk3_ck\n"); +	usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));  	usbhs_init(&usbhs_bdata); - -	/* enable power to hub */ -	gpio_set_value(GPIO_HUB_POWER, 1);  }  static struct omap_musb_board_data musb_board_data = {  |