|
@@ -980,10 +980,37 @@ static int twl4030_bci_probe(struct platform_device *pdev)
|
|
|
|
|
|
platform_set_drvdata(pdev, bci);
|
|
|
|
|
|
+ INIT_WORK(&bci->work, twl4030_bci_usb_work);
|
|
|
+ INIT_DELAYED_WORK(&bci->current_worker, twl4030_current_worker);
|
|
|
+
|
|
|
bci->channel_vac = devm_iio_channel_get(&pdev->dev, "vac");
|
|
|
if (IS_ERR(bci->channel_vac)) {
|
|
|
+ ret = PTR_ERR(bci->channel_vac);
|
|
|
+ if (ret == -EPROBE_DEFER)
|
|
|
+ return ret; /* iio not ready */
|
|
|
+ dev_warn(&pdev->dev, "could not request vac iio channel (%d)",
|
|
|
+ ret);
|
|
|
bci->channel_vac = NULL;
|
|
|
- dev_warn(&pdev->dev, "could not request vac iio channel");
|
|
|
+ }
|
|
|
+
|
|
|
+ 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->usb_nb.notifier_call = twl4030_bci_usb_ncb;
|
|
|
+ bci->transceiver = devm_usb_get_phy_by_node(
|
|
|
+ bci->dev, phynode, &bci->usb_nb);
|
|
|
+ if (IS_ERR(bci->transceiver)) {
|
|
|
+ ret = PTR_ERR(bci->transceiver);
|
|
|
+ if (ret == -EPROBE_DEFER)
|
|
|
+ return ret; /* phy not ready */
|
|
|
+ dev_warn(&pdev->dev, "could not request transceiver (%d)",
|
|
|
+ ret);
|
|
|
+ bci->transceiver = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
bci->ac = devm_power_supply_register(&pdev->dev, &twl4030_bci_ac_desc,
|
|
@@ -1019,20 +1046,6 @@ static int twl4030_bci_probe(struct platform_device *pdev)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- INIT_WORK(&bci->work, twl4030_bci_usb_work);
|
|
|
- INIT_DELAYED_WORK(&bci->current_worker, twl4030_current_worker);
|
|
|
-
|
|
|
- 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. */
|
|
|
reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_ICHGEOC | TWL4030_TBATOR2 |
|
|
|
TWL4030_TBATOR1 | TWL4030_BATSTS);
|