diff options
| author | Service qcabuildsw <qcabuildsw@localhost> | 2016-07-21 15:30:32 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-07-21 15:30:32 -0700 |
| commit | 9f6c463da11106b36a7698363ceeb203057c4cb9 (patch) | |
| tree | 5d74176909693ff153897173e63d059fe29e1ff4 | |
| parent | 9fdc66f29e2f2d3103b41a2b1abe706c953f3da3 (diff) | |
| parent | a1679b62b9173bae6889c05a4781fcc7b6b4b3b4 (diff) | |
Merge "qcacld-3.0: Return correct failure code" into wlan-cld3.driver.lnx.1.1-dev
| -rw-r--r-- | core/pld/src/pld_common.c | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/core/pld/src/pld_common.c b/core/pld/src/pld_common.c index 92b73cad63a8..7b0fc45c8f3b 100644 --- a/core/pld/src/pld_common.c +++ b/core/pld/src/pld_common.c @@ -48,7 +48,6 @@ #define PLD_PCIE_REGISTERED BIT(0) #define PLD_SNOC_REGISTERED BIT(1) #define PLD_SDIO_REGISTERED BIT(2) -#define PLD_BUS_MASK 0x7 static struct pld_context *pld_ctx; @@ -210,7 +209,7 @@ enum pld_bus_type pld_get_bus_type(struct device *dev) * device is online. * * Return: 0 for success - * pld_driver_state for errors + * Non zero failure code for errors */ int pld_register_driver(struct pld_driver_ops *ops) { @@ -240,19 +239,36 @@ int pld_register_driver(struct pld_driver_ops *ops) pld_context->ops = ops; - if (0 == pld_pcie_register_driver()) - pld_context->pld_driver_state |= PLD_PCIE_REGISTERED; - if (0 == pld_snoc_register_driver()) - pld_context->pld_driver_state |= PLD_SNOC_REGISTERED; - if (0 == pld_sdio_register_driver()) - pld_context->pld_driver_state |= PLD_SDIO_REGISTERED; - - if ((PLD_BUS_MASK & pld_context->pld_driver_state) != PLD_BUS_MASK) { - pr_err("driver falied to register, state %x\n", - pld_context->pld_driver_state); - ret = pld_context->pld_driver_state; + ret = pld_pcie_register_driver(); + if (ret) { + pr_err("Fail to register pcie driver\n"); + goto fail_pcie; + } + pld_context->pld_driver_state |= PLD_PCIE_REGISTERED; + + ret = pld_snoc_register_driver(); + if (ret) { + pr_err("Fail to register snoc driver\n"); + goto fail_snoc; } + pld_context->pld_driver_state |= PLD_SNOC_REGISTERED; + ret = pld_sdio_register_driver(); + if (ret) { + pr_err("Fail to register sdio driver\n"); + goto fail_sdio; + } + pld_context->pld_driver_state |= PLD_SDIO_REGISTERED; + + return ret; + +fail_sdio: + pld_snoc_unregister_driver(); +fail_snoc: + pld_pcie_unregister_driver(); +fail_pcie: + pld_context->pld_driver_state = 0; + pld_context->ops = NULL; out: return ret; } |
