Commit 5867320d authored by Roger Quadros's avatar Roger Quadros Committed by Greg Kroah-Hartman
Browse files

USB: ohci-omap3: Add device tree support and binding information



Allows the OHCI controller found in OMAP3 and later chips to
be specified via device tree.

Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
Reviewed-by: default avatarMark Rutland <mark.rutland@arm.com>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 8c3ec385
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
OMAP HS USB OHCI controller (OMAP3 and later)

Required properties:

- compatible: should be "ti,ohci-omap3"
- reg: should contain one register range i.e. start and length
- interrupts: description of the interrupt line

Example for OMAP4:

usbhsohci: ohci@4a064800 {
	compatible = "ti,ohci-omap3", "usb-ohci";
	reg = <0x4a064800 0x400>;
	interrupts = <0 76 0x4>;
};
+19 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@

#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/of.h>
#include <linux/dma-mapping.h>

/*-------------------------------------------------------------------------*/

@@ -112,6 +114,8 @@ static const struct hc_driver ohci_omap3_hc_driver = {

/*-------------------------------------------------------------------------*/

static u64 omap_ohci_dma_mask = DMA_BIT_MASK(32);

/*
 * configure so an HC device and id are always provided
 * always called with process context; sleeping is OK
@@ -159,6 +163,13 @@ static int ohci_hcd_omap3_probe(struct platform_device *pdev)
		return -ENOMEM;
	}

	/*
	 * Right now device-tree probed devices don't get dma_mask set.
	 * Since shared usb code relies on it, set it here for now.
	 * Once we have dma capability bindings this can go away.
	 */
	if (!pdev->dev.dma_mask)
		pdev->dev.dma_mask = &omap_ohci_dma_mask;

	hcd = usb_create_hcd(&ohci_omap3_hc_driver, dev,
			dev_name(dev));
@@ -228,12 +239,20 @@ static void ohci_hcd_omap3_shutdown(struct platform_device *pdev)
		hcd->driver->shutdown(hcd);
}

static const struct of_device_id omap_ohci_dt_ids[] = {
	{ .compatible = "ti,ohci-omap3" },
	{ }
};

MODULE_DEVICE_TABLE(of, omap_ohci_dt_ids);

static struct platform_driver ohci_hcd_omap3_driver = {
	.probe		= ohci_hcd_omap3_probe,
	.remove		= ohci_hcd_omap3_remove,
	.shutdown	= ohci_hcd_omap3_shutdown,
	.driver		= {
		.name	= "ohci-omap3",
		.of_match_table = of_match_ptr(omap_ohci_dt_ids),
	},
};