forked from rubenslte/android_kernel_samsung_msm8226
Merge "Revert "usb: dwc3: msm: use of_platform API to create dwc3 core pdev""
This commit is contained in:
committed by
Gerrit - the friendly Code Review server
commit
43957860ef
@@ -6,9 +6,6 @@ Required properties:
|
||||
- compatible: must be "synopsys,dwc3"
|
||||
- reg : Address and length of the register set for the device
|
||||
- interrupts: Interrupts used by the dwc3 controller.
|
||||
- interrupt-names : Required interrupt resource entries are:
|
||||
"irq" : Interrupt for DWC3 core
|
||||
"otg_irq" : Interrupt for DWC3 core's OTG Events
|
||||
|
||||
Optional properties:
|
||||
- tx-fifo-resize: determines if the FIFO *has* to be reallocated.
|
||||
@@ -18,7 +15,6 @@ This is usually a subnode to DWC3 glue to which it is connected.
|
||||
dwc3@4a030000 {
|
||||
compatible = "synopsys,dwc3";
|
||||
reg = <0x4a030000 0xcfff>;
|
||||
interrupts = <0 92 4>, <0 179 0>;
|
||||
interrupt-names = "irq", "otg_irq";
|
||||
interrupts = <0 92 4>
|
||||
tx-fifo-resize;
|
||||
};
|
||||
|
||||
@@ -6,6 +6,9 @@ Required properties :
|
||||
offset and length of the TCSR register for routing USB
|
||||
signals to either picoPHY0 or picoPHY1.
|
||||
- interrupts: IRQ lines used by this controller
|
||||
- interrupt-names : Required interrupt resource entries are:
|
||||
"irq" : Interrupt for DWC3 core
|
||||
"otg_irq" : Interrupt for DWC3 core's OTG Events
|
||||
- <supply-name>-supply: phandle to the regulator device tree node
|
||||
Required "supply-name" examples are:
|
||||
"SSUSB_lp8" : 1.8v supply for SSPHY
|
||||
@@ -46,18 +49,13 @@ Optional properties :
|
||||
bits 13-19 PARAMETER_OVERRIDE_C
|
||||
bits 20-25 PARAMETER_OVERRIDE_D
|
||||
|
||||
Sub nodes:
|
||||
- Sub node for "DWC3- USB3 controller".
|
||||
This sub node is required property for device node. The properties of this subnode
|
||||
are specified in dwc3.txt.
|
||||
|
||||
Example MSM USB3.0 controller device node :
|
||||
usb@f9200000 {
|
||||
compatible = "qcom,dwc-usb3-msm";
|
||||
reg = <0xf9200000 0xfc000>,
|
||||
<0xfd4ab000 0x4>;
|
||||
interrupts = <0 133 0>;
|
||||
interrupt-names = "hs_phy_irq";
|
||||
reg = <0xF9200000 0xFA000>,
|
||||
<0xFD4AB000 0x4>;
|
||||
interrupts = <0 131 0>, <0 179 0>, <0 133 0>;
|
||||
interrupt-names = "irq", "otg_irq", "hs_phy_irq";
|
||||
ssusb_vdd_dig-supply = <&pm8841_s2_corner>;
|
||||
SSUSB_1p8-supply = <&pm8941_l6>;
|
||||
hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
|
||||
@@ -75,11 +73,4 @@ Example MSM USB3.0 controller device node :
|
||||
qcom,msm_bus,vectors =
|
||||
<61 512 0 0>,
|
||||
<61 512 240000000 960000000>;
|
||||
dwc3@f9200000 {
|
||||
compatible = "synopsys,dwc3";
|
||||
reg = <0xf9200000 0xfc000>;
|
||||
interrupts = <0 131 0>, <0 179 0>;
|
||||
interrupt-names = "irq", "otg_irq";
|
||||
tx-fifo-resize;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -702,13 +702,10 @@
|
||||
|
||||
usb3: qcom,ssusb@f9200000 {
|
||||
compatible = "qcom,dwc-usb3-msm";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
reg = <0xf9200000 0xfc000>,
|
||||
<0xfd4ab000 0x4>;
|
||||
interrupts = <0 133 0>;
|
||||
interrupt-names = "hs_phy_irq";
|
||||
interrupts = <0 131 0>, <0 179 0>, <0 133 0>;
|
||||
interrupt-names = "irq", "otg_irq", "hs_phy_irq";
|
||||
ssusb_vdd_dig-supply = <&pm8841_s2_corner>;
|
||||
SSUSB_1p8-supply = <&pm8941_l6>;
|
||||
hsusb_vdd_dig-supply = <&pm8841_s2_corner>;
|
||||
@@ -726,14 +723,6 @@
|
||||
qcom,msm-bus,vectors-KBps =
|
||||
<61 512 0 0>,
|
||||
<61 512 240000 960000>;
|
||||
dwc3@f9200000 {
|
||||
compatible = "synopsys,dwc3";
|
||||
reg = <0xf9200000 0xfc000>;
|
||||
interrupts = <0 131 0>, <0 179 0>;
|
||||
interrupt-names = "irq", "otg_irq";
|
||||
tx-fifo-resize;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
ehci: qcom,ehci-host@f9a55000 {
|
||||
|
||||
@@ -461,7 +461,6 @@ void dwc3_post_host_reset_core_init(struct dwc3 *dwc)
|
||||
|
||||
#define DWC3_ALIGN_MASK (16 - 1)
|
||||
|
||||
static u64 dwc3_dma_mask = DMA_BIT_MASK(64);
|
||||
static int __devinit dwc3_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
@@ -484,11 +483,6 @@ static int __devinit dwc3_probe(struct platform_device *pdev)
|
||||
dwc = PTR_ALIGN(mem, DWC3_ALIGN_MASK + 1);
|
||||
dwc->mem = mem;
|
||||
|
||||
if (!dev->dma_mask)
|
||||
dev->dma_mask = &dwc3_dma_mask;
|
||||
if (!dev->coherent_dma_mask)
|
||||
dev->coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (!res) {
|
||||
dev_err(dev, "missing IRQ\n");
|
||||
|
||||
+32
-10
@@ -26,7 +26,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/uaccess.h>
|
||||
@@ -153,6 +152,7 @@ struct dwc3_msm_req_complete {
|
||||
};
|
||||
|
||||
struct dwc3_msm {
|
||||
struct platform_device *dwc3;
|
||||
struct device *dev;
|
||||
void __iomem *base;
|
||||
u32 resource_size;
|
||||
@@ -220,6 +220,7 @@ struct dwc3_msm {
|
||||
#define USB_SSPHY_1P8_HPM_LOAD 23000 /* uA */
|
||||
|
||||
static struct dwc3_msm *context;
|
||||
static u64 dwc3_msm_dma_mask = DMA_BIT_MASK(64);
|
||||
|
||||
static struct usb_ext_notification *usb_ext;
|
||||
|
||||
@@ -2200,6 +2201,7 @@ static DEVICE_ATTR(adc_enable, S_IRUGO | S_IWUSR, adc_enable_show,
|
||||
static int __devinit dwc3_msm_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct platform_device *dwc3;
|
||||
struct dwc3_msm *msm;
|
||||
struct resource *res;
|
||||
void __iomem *tcsr;
|
||||
@@ -2461,7 +2463,19 @@ static int __devinit dwc3_msm_probe(struct platform_device *pdev)
|
||||
goto disable_hs_ldo;
|
||||
}
|
||||
|
||||
dwc3 = platform_device_alloc("dwc3", -1);
|
||||
if (!dwc3) {
|
||||
dev_err(&pdev->dev, "couldn't allocate dwc3 device\n");
|
||||
ret = -ENODEV;
|
||||
goto disable_hs_ldo;
|
||||
}
|
||||
|
||||
dwc3->dev.parent = &pdev->dev;
|
||||
dwc3->dev.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
dwc3->dev.dma_mask = &dwc3_msm_dma_mask;
|
||||
dwc3->dev.dma_parms = pdev->dev.dma_parms;
|
||||
msm->resource_size = resource_size(res);
|
||||
msm->dwc3 = dwc3;
|
||||
|
||||
if (of_property_read_u32(node, "qcom,dwc-hsphy-init",
|
||||
&msm->hsphy_init_seq))
|
||||
@@ -2487,7 +2501,7 @@ static int __devinit dwc3_msm_probe(struct platform_device *pdev)
|
||||
"max: %d, dbm_num_eps: %d\n",
|
||||
DBM_MAX_EPS, msm->dbm_num_eps);
|
||||
ret = -ENODEV;
|
||||
goto disable_hs_ldo;
|
||||
goto put_pdev;
|
||||
}
|
||||
|
||||
msm->usb_psy.name = "usb";
|
||||
@@ -2507,16 +2521,20 @@ static int __devinit dwc3_msm_probe(struct platform_device *pdev)
|
||||
dev_err(&pdev->dev,
|
||||
"%s:power_supply_register usb failed\n",
|
||||
__func__);
|
||||
goto disable_hs_ldo;
|
||||
goto put_pdev;
|
||||
}
|
||||
|
||||
if (node) {
|
||||
ret = of_platform_populate(node, NULL, NULL, &pdev->dev);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to add create dwc3 core\n");
|
||||
goto put_psupply;
|
||||
}
|
||||
ret = platform_device_add_resources(dwc3, pdev->resource,
|
||||
pdev->num_resources);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "couldn't add resources to dwc3 device\n");
|
||||
goto put_psupply;
|
||||
}
|
||||
|
||||
ret = platform_device_add(dwc3);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to register dwc3 device\n");
|
||||
goto put_psupply;
|
||||
}
|
||||
|
||||
msm->bus_scale_table = msm_bus_cl_get_pdata(pdev);
|
||||
@@ -2561,8 +2579,11 @@ static int __devinit dwc3_msm_probe(struct platform_device *pdev)
|
||||
|
||||
put_xcvr:
|
||||
usb_put_transceiver(msm->otg_xceiv);
|
||||
platform_device_del(dwc3);
|
||||
put_psupply:
|
||||
power_supply_unregister(&msm->usb_psy);
|
||||
put_pdev:
|
||||
platform_device_put(dwc3);
|
||||
disable_hs_ldo:
|
||||
dwc3_hsusb_ldo_enable(0);
|
||||
free_hs_ldo_init:
|
||||
@@ -2613,6 +2634,7 @@ static int __devexit dwc3_msm_remove(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
pm_runtime_disable(msm->dev);
|
||||
platform_device_unregister(msm->dwc3);
|
||||
wake_lock_destroy(&msm->wlock);
|
||||
|
||||
dwc3_hsusb_ldo_enable(0);
|
||||
|
||||
Reference in New Issue
Block a user