Commit dc087d1e authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-v4.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply

Pull power supply fixes from  Reichel:
 "I have two more fixes for the power-supply subsystem:

   - two fixes for twl4030-charger"

* tag 'for-v4.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
  power: supply: twl4030-charger: add deferred probing for phy and iio
  power: supply: twl4030-charger: move irq allocation to just before irqs are enabled
parents 311ac00d 7bb5a650
...@@ -980,10 +980,37 @@ static int twl4030_bci_probe(struct platform_device *pdev) ...@@ -980,10 +980,37 @@ static int twl4030_bci_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, bci); 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"); bci->channel_vac = devm_iio_channel_get(&pdev->dev, "vac");
if (IS_ERR(bci->channel_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; 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, 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) ...@@ -1019,20 +1046,6 @@ static int twl4030_bci_probe(struct platform_device *pdev)
return ret; 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. */ /* Enable interrupts now. */
reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_ICHGEOC | TWL4030_TBATOR2 | reg = ~(u32)(TWL4030_ICHGLOW | TWL4030_ICHGEOC | TWL4030_TBATOR2 |
TWL4030_TBATOR1 | TWL4030_BATSTS); TWL4030_TBATOR1 | TWL4030_BATSTS);
......
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