rk312x: usb: cleanup ohci-rockchip.c and make it support rk312x
authorlyz <lyz@rock-chips.com>
Tue, 9 Dec 2014 14:25:41 +0000 (22:25 +0800)
committerlyz <lyz@rock-chips.com>
Tue, 9 Dec 2014 14:25:41 +0000 (22:25 +0800)
drivers/usb/dwc_otg_310/usbdev_rk.h
drivers/usb/dwc_otg_310/usbdev_rk3126.c
drivers/usb/host/ohci-rockchip.c

index 71ada705596952a3fb9db36287f66c52d9105ccd..682d8a627fd1461a92dd574a2704643ab76627b5 100755 (executable)
@@ -69,7 +69,7 @@ extern struct dwc_otg_platform_data usb20host_pdata_rk3036;
 /* rk3126 platform data */
 extern struct dwc_otg_platform_data usb20otg_pdata_rk3126;
 extern struct dwc_otg_platform_data usb20host_pdata_rk3126;
-
+extern struct dwc_otg_platform_data usb20ohci_pdata_rk3126;
 
 struct dwc_otg_platform_data {
        void *privdata;
index 5b7ba89aea94cb46504d9115d8f5d6c552adda79..628bd69749541997b71fe14c456ba6542748bd5a 100755 (executable)
@@ -382,6 +382,8 @@ struct dwc_otg_platform_data usb20host_pdata_rk3126 = {
 };
 #endif
 
+struct dwc_otg_platform_data usb20ohci_pdata_rk3126;
+
 #ifdef CONFIG_OF
 static const struct of_device_id rk_usb_control_id_table[] = {
        {
index 1eb84b232f40cc16601004271d6cdb0b9fcc6dad..1bc76597882364081d88340550c283a00a7da158 100755 (executable)
 #include <linux/of_platform.h>
 #include "../dwc_otg_310/usbdev_rk.h"
 
-static struct rkehci_pdata_id rkohci_pdata[] = {
-       {
-        .name = "rk3188-reserved",
-        .pdata = NULL,
-        },
-       {
-        .name = "rk3288-ohci",
-        .pdata = &rkohci_pdata_rk3288,
-        },
-       {},
-};
-
 static int ohci_rk_init(struct usb_hcd *hcd)
 {
        dev_dbg(hcd->self.controller, "starting OHCI controller\n");
@@ -102,8 +90,8 @@ static const struct hc_driver ohci_rk_hc_driver = {
 
 static struct of_device_id rk_ohci_of_match[] = {
        {
-        .compatible = "rockchip,rk3288_rk_ohci_host",
-        .data = &rkohci_pdata[RK3288_USB_CTLR],
+        .compatible = "rockchip,rk3126_ohci",
+        .data = &usb20ohci_pdata_rk3126,
         },
        {},
 };
@@ -123,32 +111,24 @@ static int ohci_hcd_rk_probe(struct platform_device *pdev)
        struct resource *res;
        int ret = -ENODEV;
        int irq;
-       struct rkehci_platform_data *pldata;
-       struct device_node *node = pdev->dev.of_node;
-       struct rkehci_pdata_id *p;
-       const struct of_device_id *match =
-           of_match_device(of_match_ptr(rk_ohci_of_match), &pdev->dev);
+       struct dwc_otg_platform_data *pldata;
+       const struct of_device_id *match;
 
        dev_dbg(&pdev->dev, "ohci_hcd_rk_probe\n");
 
        if (usb_disabled())
                return -ENODEV;
 
+       match = of_match_device(of_match_ptr(rk_ohci_of_match), &pdev->dev);
        if (match) {
-               p = (struct rkehci_pdata_id *)match->data;
+               pldata = (struct dwc_otg_platform_data *)match->data;
        } else {
                dev_err(dev, "ohci_rk match failed\n");
                return -EINVAL;
        }
 
-       dev->platform_data = p->pdata;
-       pldata = dev->platform_data;
        pldata->dev = dev;
-
-       if (!node) {
-               dev_err(dev, "device node not found\n");
-               return -EINVAL;
-       }
+       dev->platform_data = pldata;
 
        if (pldata->hw_init)
                pldata->hw_init();
@@ -158,9 +138,6 @@ static int ohci_hcd_rk_probe(struct platform_device *pdev)
                pldata->clock_enable(pldata, 1);
        }
 
-       if (pldata->soft_reset)
-               pldata->soft_reset();
-
        irq = platform_get_irq(pdev, 0);
        if (irq < 0) {
                dev_err(dev, "OHCI irq failed\n");