projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Bluetooth: hci_bcm: Simplify clk_get error handling
[linux-2.6-block.git]
/
drivers
/
bluetooth
/
hci_bcm.c
diff --git
a/drivers/bluetooth/hci_bcm.c
b/drivers/bluetooth/hci_bcm.c
index ddbd8c6a0cebd5cc7ef5d079533a31383518e5f4..ff73ecb8215f8bfe5cb1dcfc1f1df78ccca2fa17 100644
(file)
--- a/
drivers/bluetooth/hci_bcm.c
+++ b/
drivers/bluetooth/hci_bcm.c
@@
-214,7
+214,7
@@
static int bcm_gpio_set_power(struct bcm_device *dev, bool powered)
{
int err;
{
int err;
- if (powered && !
IS_ERR(dev->clk) && !
dev->clk_enabled) {
+ if (powered && !dev->clk_enabled) {
err = clk_prepare_enable(dev->clk);
if (err)
return err;
err = clk_prepare_enable(dev->clk);
if (err)
return err;
@@
-228,7
+228,7
@@
static int bcm_gpio_set_power(struct bcm_device *dev, bool powered)
if (err)
goto err_revert_shutdown;
if (err)
goto err_revert_shutdown;
- if (!powered &&
!IS_ERR(dev->clk) &&
dev->clk_enabled)
+ if (!powered && dev->clk_enabled)
clk_disable_unprepare(dev->clk);
dev->clk_enabled = powered;
clk_disable_unprepare(dev->clk);
dev->clk_enabled = powered;
@@
-238,7
+238,7
@@
static int bcm_gpio_set_power(struct bcm_device *dev, bool powered)
err_revert_shutdown:
dev->set_shutdown(dev, !powered);
err_clk_disable:
err_revert_shutdown:
dev->set_shutdown(dev, !powered);
err_clk_disable:
- if (powered && !
IS_ERR(dev->clk) && !
dev->clk_enabled)
+ if (powered && !dev->clk_enabled)
clk_disable_unprepare(dev->clk);
return err;
}
clk_disable_unprepare(dev->clk);
return err;
}
@@
-907,6
+907,14
@@
static int bcm_get_resources(struct bcm_device *dev)
dev->clk = devm_clk_get(dev->dev, NULL);
dev->clk = devm_clk_get(dev->dev, NULL);
+ /* Handle deferred probing */
+ if (dev->clk == ERR_PTR(-EPROBE_DEFER))
+ return PTR_ERR(dev->clk);
+
+ /* Ignore all other errors as before */
+ if (IS_ERR(dev->clk))
+ dev->clk = NULL;
+
dev->device_wakeup = devm_gpiod_get_optional(dev->dev, "device-wakeup",
GPIOD_OUT_LOW);
if (IS_ERR(dev->device_wakeup))
dev->device_wakeup = devm_gpiod_get_optional(dev->dev, "device-wakeup",
GPIOD_OUT_LOW);
if (IS_ERR(dev->device_wakeup))