Skip to content

Commit

Permalink
usb: dwc3: omap: minor fixes to get dt working
Browse files Browse the repository at this point in the history
Includes few minor fixes in dwc3-omap like populating the compatible
string in a correct way, extracting the utmi-mode property properly and
changing the index of get_irq since irq of core is removed from hwmod
entry.

Also updated the documentation with dwc3-omap device tree binding
information.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>

[ balbi@ti.com : fix a compile warning introduced by
	this commit ]

Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Kishon Vijay Abraham I authored and Felipe Balbi committed Mar 18, 2013
1 parent b54b5f5 commit e36a0c8
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 24 deletions.
28 changes: 28 additions & 0 deletions Documentation/devicetree/bindings/usb/omap-usb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,34 @@ Board specific device node entry
power = <50>;
};

OMAP DWC3 GLUE
- compatible : Should be "ti,dwc3"
- ti,hwmods : Should be "usb_otg_ss"
- reg : Address and length of the register set for the device.
- interrupts : The irq number of this device that is used to interrupt the
MPU
- #address-cells, #size-cells : Must be present if the device has sub-nodes
- utmi-mode : controls the source of UTMI/PIPE status for VBUS and OTG ID.
It should be set to "1" for HW mode and "2" for SW mode.
- ranges: the child address space are mapped 1:1 onto the parent address space

Sub-nodes:
The dwc3 core should be added as subnode to omap dwc3 glue.
- dwc3 :
The binding details of dwc3 can be found in:
Documentation/devicetree/bindings/usb/dwc3.txt

omap_dwc3 {
compatible = "ti,dwc3";
ti,hwmods = "usb_otg_ss";
reg = <0x4a020000 0x1ff>;
interrupts = <0 93 4>;
#address-cells = <1>;
#size-cells = <1>;
utmi-mode = <2>;
ranges;
};

OMAP CONTROL USB

Required properties:
Expand Down
45 changes: 21 additions & 24 deletions drivers/usb/dwc3/dwc3-omap.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,11 +316,11 @@ static int dwc3_omap_probe(struct platform_device *pdev)
struct resource *res;
struct device *dev = &pdev->dev;

int size;
int ret = -ENOMEM;
int irq;

const u32 *utmi_mode;
int utmi_mode = 0;

u32 reg;

void __iomem *base;
Expand All @@ -334,13 +334,13 @@ static int dwc3_omap_probe(struct platform_device *pdev)

platform_set_drvdata(pdev, omap);

irq = platform_get_irq(pdev, 1);
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
dev_err(dev, "missing IRQ resource\n");
return -EINVAL;
}

res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
dev_err(dev, "missing memory base resource\n");
return -EINVAL;
Expand Down Expand Up @@ -387,25 +387,22 @@ static int dwc3_omap_probe(struct platform_device *pdev)

reg = dwc3_omap_readl(omap->base, USBOTGSS_UTMI_OTG_STATUS);

utmi_mode = of_get_property(node, "utmi-mode", &size);
if (utmi_mode && size == sizeof(*utmi_mode)) {
reg |= *utmi_mode;
} else {
if (!pdata) {
dev_dbg(dev, "missing platform data\n");
} else {
switch (pdata->utmi_mode) {
case DWC3_OMAP_UTMI_MODE_SW:
reg |= USBOTGSS_UTMI_OTG_STATUS_SW_MODE;
break;
case DWC3_OMAP_UTMI_MODE_HW:
reg &= ~USBOTGSS_UTMI_OTG_STATUS_SW_MODE;
break;
default:
dev_dbg(dev, "UNKNOWN utmi mode %d\n",
pdata->utmi_mode);
}
}
if (node)
of_property_read_u32(node, "utmi-mode", &utmi_mode);
else if (pdata)
utmi_mode = pdata->utmi_mode;
else
dev_dbg(dev, "missing platform data\n");

switch (utmi_mode) {
case DWC3_OMAP_UTMI_MODE_SW:
reg |= USBOTGSS_UTMI_OTG_STATUS_SW_MODE;
break;
case DWC3_OMAP_UTMI_MODE_HW:
reg &= ~USBOTGSS_UTMI_OTG_STATUS_SW_MODE;
break;
default:
dev_dbg(dev, "UNKNOWN utmi mode %d\n", utmi_mode);
}

dwc3_omap_writel(omap->base, USBOTGSS_UTMI_OTG_STATUS, reg);
Expand Down Expand Up @@ -465,7 +462,7 @@ static int dwc3_omap_remove(struct platform_device *pdev)

static const struct of_device_id of_dwc3_match[] = {
{
"ti,dwc3",
.compatible = "ti,dwc3"
},
{ },
};
Expand Down

0 comments on commit e36a0c8

Please sign in to comment.