|
|
@@ -638,10 +638,15 @@ static int __init twl4030_bci_probe(struct platform_device *pdev)
|
|
|
|
|
|
INIT_WORK(&bci->work, twl4030_bci_usb_work);
|
|
|
|
|
|
- bci->transceiver = usb_get_phy(USB_PHY_TYPE_USB2);
|
|
|
- if (!IS_ERR_OR_NULL(bci->transceiver)) {
|
|
|
- bci->usb_nb.notifier_call = twl4030_bci_usb_ncb;
|
|
|
- usb_register_notifier(bci->transceiver, &bci->usb_nb);
|
|
|
+ bci->usb_nb.notifier_call = twl4030_bci_usb_ncb;
|
|
|
+ if (bci->dev->of_node) {
|
|
|
+ struct device_node *phynode;
|
|
|
+
|
|
|
+ phynode = of_find_compatible_node(bci->dev->of_node->parent,
|
|
|
+ NULL, "ti,twl4030-usb");
|
|
|
+ if (phynode)
|
|
|
+ bci->transceiver = devm_usb_get_phy_by_node(
|
|
|
+ bci->dev, phynode, &bci->usb_nb);
|
|
|
}
|
|
|
|
|
|
/* Enable interrupts now. */
|
|
|
@@ -671,10 +676,6 @@ static int __init twl4030_bci_probe(struct platform_device *pdev)
|
|
|
return 0;
|
|
|
|
|
|
fail_unmask_interrupts:
|
|
|
- if (!IS_ERR_OR_NULL(bci->transceiver)) {
|
|
|
- usb_unregister_notifier(bci->transceiver, &bci->usb_nb);
|
|
|
- usb_put_phy(bci->transceiver);
|
|
|
- }
|
|
|
free_irq(bci->irq_bci, bci);
|
|
|
fail_bci_irq:
|
|
|
free_irq(bci->irq_chg, bci);
|
|
|
@@ -703,10 +704,6 @@ static int __exit twl4030_bci_remove(struct platform_device *pdev)
|
|
|
twl_i2c_write_u8(TWL4030_MODULE_INTERRUPTS, 0xff,
|
|
|
TWL4030_INTERRUPTS_BCIIMR2A);
|
|
|
|
|
|
- if (!IS_ERR_OR_NULL(bci->transceiver)) {
|
|
|
- usb_unregister_notifier(bci->transceiver, &bci->usb_nb);
|
|
|
- usb_put_phy(bci->transceiver);
|
|
|
- }
|
|
|
free_irq(bci->irq_bci, bci);
|
|
|
free_irq(bci->irq_chg, bci);
|
|
|
power_supply_unregister(bci->usb);
|