--- /dev/null
+Exynos USB EHCI controllers
+
+Required properties:
+ - compatible : should be "samsung,exynos-ehci".
+ - reg : should contain at least address and length of the standard EHCI
+ register set for the device.
+ - interrupts : one EHCI interrupt should be described here.
+
+Optional properties:
+ - samsung,vbus-gpio : OF gpio specification of the pin which needs to be
+ activated for the bus to be powered.
+ - samsung,port_used_bitmap : defined which port should be enabled on the
+ root hub.
+
+Example:
+ ehci {
+ compatible = "samsung,exynos-ehci";
+ reg = <0x12110000 0x100>;
+ interrupts = <0 71 0>;
+ samsung,vbus-gpio = <&gpx1 1 1 3 3>;
+ samsung,port_used_bitmap = <0x2>;
+ };
if (!wIndex || wIndex > ports)
goto error;
wIndex--;
+
+ /* test if the port is configured to be ignored */
+ if (ehci->port_used_bitmap &&
+ !(ehci->port_used_bitmap & (1 << wIndex)))
+ goto error_exit;
+
temp = ehci_readl(ehci, status_reg);
if (temp & PORT_OWNER)
break;
ehci->regs = hcd->regs +
HC_LENGTH(ehci, readl(&ehci->caps->hc_capbase));
+ /* populate port enabled bitmap if provided by the device tree */
+ ehci->port_used_bitmap = -1UL;
+ if (pdev->dev.of_node)
+ of_property_read_u32(pdev->dev.of_node,
+ "samsung,port_used_bitmap", &ehci->port_used_bitmap);
+
/* DMA burst Enable */
writel(EHCI_INSNREG00_ENABLE_DMA_BURST, EHCI_INSNREG00(hcd->regs));
* OTG controllers and transceivers need software interaction
*/
struct usb_phy *transceiver;
+
+ /* if non null: bitmap of all ports in use on the root hub */
+ u32 port_used_bitmap;
};
/* convert between an HCD pointer and the corresponding EHCI_HCD */