forked from Minki/linux
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: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
78a467d8ff
commit
d94e64cb24
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user