usb: phy: phy-msm-usb: Remove redundant extcon register/unregister
authorBaolin Wang <baolin.wang@linaro.org>
Fri, 5 May 2017 06:12:26 +0000 (14:12 +0800)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Wed, 17 May 2017 11:15:38 +0000 (14:15 +0300)
Since usb phy core has added common code to register or unregister
extcon device, then phy-msm-usb driver does not need its own
code to register/unregister extcon device, then remove them.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/phy/phy-msm-usb.c

index 93d9aaad2994333e63033cc432a10e26a9017ca6..8fb86a5f458e01275186dc83ff86e38b38fff35b 100644 (file)
@@ -145,17 +145,6 @@ struct msm_otg_platform_data {
        void (*setup_gpio)(enum usb_otg_state state);
 };
 
-/**
- * struct msm_usb_cable - structure for exteternal connector cable
- *                       state tracking
- * @nb: hold event notification callback
- * @conn: used for notification registration
- */
-struct msm_usb_cable {
-       struct notifier_block           nb;
-       struct extcon_dev               *extcon;
-};
-
 /**
  * struct msm_otg: OTG driver data. Shared by HCD and DCD.
  * @otg: USB OTG Transceiver structure.
@@ -215,9 +204,6 @@ struct msm_otg {
 
        bool manual_pullup;
 
-       struct msm_usb_cable vbus;
-       struct msm_usb_cable id;
-
        struct gpio_desc *switch_gpio;
        struct notifier_block reboot;
 };
@@ -1612,8 +1598,8 @@ MODULE_DEVICE_TABLE(of, msm_otg_dt_match);
 static int msm_otg_vbus_notifier(struct notifier_block *nb, unsigned long event,
                                void *ptr)
 {
-       struct msm_usb_cable *vbus = container_of(nb, struct msm_usb_cable, nb);
-       struct msm_otg *motg = container_of(vbus, struct msm_otg, vbus);
+       struct usb_phy *usb_phy = container_of(nb, struct usb_phy, vbus_nb);
+       struct msm_otg *motg = container_of(usb_phy, struct msm_otg, phy);
 
        if (event)
                set_bit(B_SESS_VLD, &motg->inputs);
@@ -1636,8 +1622,8 @@ static int msm_otg_vbus_notifier(struct notifier_block *nb, unsigned long event,
 static int msm_otg_id_notifier(struct notifier_block *nb, unsigned long event,
                                void *ptr)
 {
-       struct msm_usb_cable *id = container_of(nb, struct msm_usb_cable, nb);
-       struct msm_otg *motg = container_of(id, struct msm_otg, id);
+       struct usb_phy *usb_phy = container_of(nb, struct usb_phy, id_nb);
+       struct msm_otg *motg = container_of(usb_phy, struct msm_otg, phy);
 
        if (event)
                clear_bit(ID, &motg->inputs);
@@ -1652,7 +1638,6 @@ static int msm_otg_id_notifier(struct notifier_block *nb, unsigned long event,
 static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
 {
        struct msm_otg_platform_data *pdata;
-       struct extcon_dev *ext_id, *ext_vbus;
        struct device_node *node = pdev->dev.of_node;
        struct property *prop;
        int len, ret, words;
@@ -1708,54 +1693,6 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
        if (IS_ERR(motg->switch_gpio))
                return PTR_ERR(motg->switch_gpio);
 
-       ext_id = ERR_PTR(-ENODEV);
-       ext_vbus = ERR_PTR(-ENODEV);
-       if (of_property_read_bool(node, "extcon")) {
-
-               /* Each one of them is not mandatory */
-               ext_vbus = extcon_get_edev_by_phandle(&pdev->dev, 0);
-               if (IS_ERR(ext_vbus) && PTR_ERR(ext_vbus) != -ENODEV)
-                       return PTR_ERR(ext_vbus);
-
-               ext_id = extcon_get_edev_by_phandle(&pdev->dev, 1);
-               if (IS_ERR(ext_id) && PTR_ERR(ext_id) != -ENODEV)
-                       return PTR_ERR(ext_id);
-       }
-
-       if (!IS_ERR(ext_vbus)) {
-               motg->vbus.extcon = ext_vbus;
-               motg->vbus.nb.notifier_call = msm_otg_vbus_notifier;
-               ret = devm_extcon_register_notifier(&pdev->dev, ext_vbus,
-                                               EXTCON_USB, &motg->vbus.nb);
-               if (ret < 0) {
-                       dev_err(&pdev->dev, "register VBUS notifier failed\n");
-                       return ret;
-               }
-
-               ret = extcon_get_state(ext_vbus, EXTCON_USB);
-               if (ret)
-                       set_bit(B_SESS_VLD, &motg->inputs);
-               else
-                       clear_bit(B_SESS_VLD, &motg->inputs);
-       }
-
-       if (!IS_ERR(ext_id)) {
-               motg->id.extcon = ext_id;
-               motg->id.nb.notifier_call = msm_otg_id_notifier;
-               ret = devm_extcon_register_notifier(&pdev->dev, ext_id,
-                                               EXTCON_USB_HOST, &motg->id.nb);
-               if (ret < 0) {
-                       dev_err(&pdev->dev, "register ID notifier failed\n");
-                       return ret;
-               }
-
-               ret = extcon_get_state(ext_id, EXTCON_USB_HOST);
-               if (ret)
-                       clear_bit(ID, &motg->inputs);
-               else
-                       set_bit(ID, &motg->inputs);
-       }
-
        prop = of_find_property(node, "qcom,phy-init-sequence", &len);
        if (!prop || !len)
                return 0;
@@ -1932,6 +1869,8 @@ static int msm_otg_probe(struct platform_device *pdev)
        phy->init = msm_phy_init;
        phy->notify_disconnect = msm_phy_notify_disconnect;
        phy->type = USB_PHY_TYPE_USB2;
+       phy->vbus_nb.notifier_call = msm_otg_vbus_notifier;
+       phy->id_nb.notifier_call = msm_otg_id_notifier;
 
        phy->io_ops = &msm_otg_io_ops;
 
@@ -1947,6 +1886,18 @@ static int msm_otg_probe(struct platform_device *pdev)
                goto disable_ldo;
        }
 
+       ret = extcon_get_state(phy->edev, EXTCON_USB);
+       if (ret)
+               set_bit(B_SESS_VLD, &motg->inputs);
+       else
+               clear_bit(B_SESS_VLD, &motg->inputs);
+
+       ret = extcon_get_state(phy->id_edev, EXTCON_USB_HOST);
+       if (ret)
+               clear_bit(ID, &motg->inputs);
+       else
+               set_bit(ID, &motg->inputs);
+
        platform_set_drvdata(pdev, motg);
        device_init_wakeup(&pdev->dev, 1);