Commit d94e64cb authored by Baolin Wang's avatar Baolin Wang Committed by Felipe Balbi

usb: phy: phy-msm-usb: Remove redundant extcon register/unregister

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: default avatarBaolin Wang <baolin.wang@linaro.org>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 78a467d8
...@@ -145,17 +145,6 @@ struct msm_otg_platform_data { ...@@ -145,17 +145,6 @@ struct msm_otg_platform_data {
void (*setup_gpio)(enum usb_otg_state state); 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. * struct msm_otg: OTG driver data. Shared by HCD and DCD.
* @otg: USB OTG Transceiver structure. * @otg: USB OTG Transceiver structure.
...@@ -215,9 +204,6 @@ struct msm_otg { ...@@ -215,9 +204,6 @@ struct msm_otg {
bool manual_pullup; bool manual_pullup;
struct msm_usb_cable vbus;
struct msm_usb_cable id;
struct gpio_desc *switch_gpio; struct gpio_desc *switch_gpio;
struct notifier_block reboot; struct notifier_block reboot;
}; };
...@@ -1612,8 +1598,8 @@ MODULE_DEVICE_TABLE(of, msm_otg_dt_match); ...@@ -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, static int msm_otg_vbus_notifier(struct notifier_block *nb, unsigned long event,
void *ptr) void *ptr)
{ {
struct msm_usb_cable *vbus = container_of(nb, struct msm_usb_cable, nb); struct usb_phy *usb_phy = container_of(nb, struct usb_phy, vbus_nb);
struct msm_otg *motg = container_of(vbus, struct msm_otg, vbus); struct msm_otg *motg = container_of(usb_phy, struct msm_otg, phy);
if (event) if (event)
set_bit(B_SESS_VLD, &motg->inputs); set_bit(B_SESS_VLD, &motg->inputs);
...@@ -1636,8 +1622,8 @@ static int msm_otg_vbus_notifier(struct notifier_block *nb, unsigned long event, ...@@ -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, static int msm_otg_id_notifier(struct notifier_block *nb, unsigned long event,
void *ptr) void *ptr)
{ {
struct msm_usb_cable *id = container_of(nb, struct msm_usb_cable, nb); struct usb_phy *usb_phy = container_of(nb, struct usb_phy, id_nb);
struct msm_otg *motg = container_of(id, struct msm_otg, id); struct msm_otg *motg = container_of(usb_phy, struct msm_otg, phy);
if (event) if (event)
clear_bit(ID, &motg->inputs); clear_bit(ID, &motg->inputs);
...@@ -1652,7 +1638,6 @@ static int msm_otg_id_notifier(struct notifier_block *nb, unsigned long event, ...@@ -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) static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
{ {
struct msm_otg_platform_data *pdata; struct msm_otg_platform_data *pdata;
struct extcon_dev *ext_id, *ext_vbus;
struct device_node *node = pdev->dev.of_node; struct device_node *node = pdev->dev.of_node;
struct property *prop; struct property *prop;
int len, ret, words; int len, ret, words;
...@@ -1708,54 +1693,6 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg) ...@@ -1708,54 +1693,6 @@ static int msm_otg_read_dt(struct platform_device *pdev, struct msm_otg *motg)
if (IS_ERR(motg->switch_gpio)) if (IS_ERR(motg->switch_gpio))
return PTR_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); prop = of_find_property(node, "qcom,phy-init-sequence", &len);
if (!prop || !len) if (!prop || !len)
return 0; return 0;
...@@ -1932,6 +1869,8 @@ static int msm_otg_probe(struct platform_device *pdev) ...@@ -1932,6 +1869,8 @@ static int msm_otg_probe(struct platform_device *pdev)
phy->init = msm_phy_init; phy->init = msm_phy_init;
phy->notify_disconnect = msm_phy_notify_disconnect; phy->notify_disconnect = msm_phy_notify_disconnect;
phy->type = USB_PHY_TYPE_USB2; 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; phy->io_ops = &msm_otg_io_ops;
...@@ -1947,6 +1886,18 @@ static int msm_otg_probe(struct platform_device *pdev) ...@@ -1947,6 +1886,18 @@ static int msm_otg_probe(struct platform_device *pdev)
goto disable_ldo; 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); platform_set_drvdata(pdev, motg);
device_init_wakeup(&pdev->dev, 1); device_init_wakeup(&pdev->dev, 1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment