|
@@ -48,3 +48,83 @@ static struct omap_device_pm_latency omap_uhhtll_latency[] = {
|
|
.activate_func = omap_device_enable_hwmods,
|
|
.activate_func = omap_device_enable_hwmods,
|
|
.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
|
|
.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
|
|
},
|
|
},
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* MUX settings for EHCI pins */
|
|
|
|
+/*
|
|
|
|
+ * setup_ehci_io_mux - initialize IO pad mux for USBHOST
|
|
|
|
+ */
|
|
|
|
+static void __init setup_ehci_io_mux(const enum usbhs_omap_port_mode *port_mode)
|
|
|
|
+{
|
|
|
|
+ switch (port_mode[0]) {
|
|
|
|
+ case OMAP_EHCI_PORT_MODE_PHY:
|
|
|
|
+ omap_mux_init_signal("hsusb1_stp", OMAP_PIN_OUTPUT);
|
|
|
|
+ omap_mux_init_signal("hsusb1_clk", OMAP_PIN_OUTPUT);
|
|
|
|
+ omap_mux_init_signal("hsusb1_dir", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_nxt", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data0", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data1", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data2", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data3", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data4", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data5", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data6", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_data7", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ break;
|
|
|
|
+ case OMAP_EHCI_PORT_MODE_TLL:
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_stp",
|
|
|
|
+ OMAP_PIN_INPUT_PULLUP);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_clk",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_dir",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_nxt",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data0",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data1",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data2",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data3",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data4",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data5",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data6",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb1_tll_data7",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ break;
|
|
|
|
+ case OMAP_USBHS_PORT_MODE_UNUSED:
|
|
|
|
+ /* FALLTHROUGH */
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch (port_mode[1]) {
|
|
|
|
+ case OMAP_EHCI_PORT_MODE_PHY:
|
|
|
|
+ omap_mux_init_signal("hsusb2_stp", OMAP_PIN_OUTPUT);
|
|
|
|
+ omap_mux_init_signal("hsusb2_clk", OMAP_PIN_OUTPUT);
|
|
|
|
+ omap_mux_init_signal("hsusb2_dir", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_nxt", OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data0",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data1",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data2",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data3",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data4",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data5",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data6",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ omap_mux_init_signal("hsusb2_data7",
|
|
|
|
+ OMAP_PIN_INPUT_PULLDOWN);
|
|
|
|
+ break;
|
|
|
|
+ case OMAP_EHCI_PORT_MODE_TLL:
|
|
|
|
+ omap_mux_init_signal("hsusb2_tll_stp",
|