Commit 7a80aa23 authored by Ajay Singh's avatar Ajay Singh Committed by Greg Kroah-Hartman

staging: wilc1000: return zero on success and non-zero on function failure

Some of the HIF layer API's return zero for failure and non-zero for
success condition. Now, modified the functions to return zero for success
and non-zero for failure as its recommended approach suggested in [1].

1. https://lore.kernel.org/driverdev-devel/20191113183322.a54mh2w6dulklgsd@kili.mountain/Signed-off-by: default avatarAjay Singh <ajay.kathat@microchip.com>
Link: https://lore.kernel.org/r/20200123182129.4053-1-ajay.kathat@microchip.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0443b3f4
...@@ -183,7 +183,7 @@ static int wilc_wlan_get_firmware(struct net_device *dev) ...@@ -183,7 +183,7 @@ static int wilc_wlan_get_firmware(struct net_device *dev)
{ {
struct wilc_vif *vif = netdev_priv(dev); struct wilc_vif *vif = netdev_priv(dev);
struct wilc *wilc = vif->wilc; struct wilc *wilc = vif->wilc;
int chip_id, ret = 0; int chip_id;
const struct firmware *wilc_firmware; const struct firmware *wilc_firmware;
char *firmware; char *firmware;
...@@ -198,14 +198,11 @@ static int wilc_wlan_get_firmware(struct net_device *dev) ...@@ -198,14 +198,11 @@ static int wilc_wlan_get_firmware(struct net_device *dev)
if (request_firmware(&wilc_firmware, firmware, wilc->dev) != 0) { if (request_firmware(&wilc_firmware, firmware, wilc->dev) != 0) {
netdev_err(dev, "%s - firmware not available\n", firmware); netdev_err(dev, "%s - firmware not available\n", firmware);
ret = -1; return -EINVAL;
goto fail;
} }
wilc->firmware = wilc_firmware; wilc->firmware = wilc_firmware;
fail: return 0;
return ret;
} }
static int wilc_start_firmware(struct net_device *dev) static int wilc_start_firmware(struct net_device *dev)
...@@ -215,7 +212,7 @@ static int wilc_start_firmware(struct net_device *dev) ...@@ -215,7 +212,7 @@ static int wilc_start_firmware(struct net_device *dev)
int ret = 0; int ret = 0;
ret = wilc_wlan_start(wilc); ret = wilc_wlan_start(wilc);
if (ret < 0) if (ret)
return ret; return ret;
if (!wait_for_completion_timeout(&wilc->sync_event, if (!wait_for_completion_timeout(&wilc->sync_event,
...@@ -238,7 +235,7 @@ static int wilc1000_firmware_download(struct net_device *dev) ...@@ -238,7 +235,7 @@ static int wilc1000_firmware_download(struct net_device *dev)
ret = wilc_wlan_firmware_download(wilc, wilc->firmware->data, ret = wilc_wlan_firmware_download(wilc, wilc->firmware->data,
wilc->firmware->size); wilc->firmware->size);
if (ret < 0) if (ret)
return ret; return ret;
release_firmware(wilc->firmware); release_firmware(wilc->firmware);
...@@ -417,7 +414,7 @@ static int wilc_init_fw_config(struct net_device *dev, struct wilc_vif *vif) ...@@ -417,7 +414,7 @@ static int wilc_init_fw_config(struct net_device *dev, struct wilc_vif *vif)
return 0; return 0;
fail: fail:
return -1; return -EINVAL;
} }
static void wlan_deinitialize_threads(struct net_device *dev) static void wlan_deinitialize_threads(struct net_device *dev)
...@@ -497,14 +494,12 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif) ...@@ -497,14 +494,12 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif)
wl->close = 0; wl->close = 0;
ret = wilc_wlan_init(dev); ret = wilc_wlan_init(dev);
if (ret < 0) if (ret)
return -EIO; return ret;
ret = wlan_initialize_threads(dev); ret = wlan_initialize_threads(dev);
if (ret < 0) { if (ret)
ret = -EIO;
goto fail_wilc_wlan; goto fail_wilc_wlan;
}
if (wl->gpio_irq && init_irq(dev)) { if (wl->gpio_irq && init_irq(dev)) {
ret = -EIO; ret = -EIO;
...@@ -518,22 +513,17 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif) ...@@ -518,22 +513,17 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif)
goto fail_irq_init; goto fail_irq_init;
} }
if (wilc_wlan_get_firmware(dev)) { ret = wilc_wlan_get_firmware(dev);
ret = -EIO; if (ret)
goto fail_irq_enable; goto fail_irq_enable;
}
ret = wilc1000_firmware_download(dev); ret = wilc1000_firmware_download(dev);
if (ret < 0) { if (ret)
ret = -EIO;
goto fail_irq_enable; goto fail_irq_enable;
}
ret = wilc_start_firmware(dev); ret = wilc_start_firmware(dev);
if (ret < 0) { if (ret)
ret = -EIO;
goto fail_irq_enable; goto fail_irq_enable;
}
if (wilc_wlan_cfg_get(vif, 1, WID_FIRMWARE_VERSION, 1, 0)) { if (wilc_wlan_cfg_get(vif, 1, WID_FIRMWARE_VERSION, 1, 0)) {
int size; int size;
...@@ -545,11 +535,10 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif) ...@@ -545,11 +535,10 @@ static int wilc_wlan_initialize(struct net_device *dev, struct wilc_vif *vif)
firmware_ver[size] = '\0'; firmware_ver[size] = '\0';
netdev_dbg(dev, "Firmware Ver = %s\n", firmware_ver); netdev_dbg(dev, "Firmware Ver = %s\n", firmware_ver);
} }
ret = wilc_init_fw_config(dev, vif);
if (ret < 0) { ret = wilc_init_fw_config(dev, vif);
if (ret) {
netdev_err(dev, "Failed to configure firmware\n"); netdev_err(dev, "Failed to configure firmware\n");
ret = -EIO;
goto fail_fw_start; goto fail_fw_start;
} }
wl->initialized = true; wl->initialized = true;
...@@ -600,11 +589,11 @@ static int wilc_mac_open(struct net_device *ndev) ...@@ -600,11 +589,11 @@ static int wilc_mac_open(struct net_device *ndev)
netdev_dbg(ndev, "MAC OPEN[%p]\n", ndev); netdev_dbg(ndev, "MAC OPEN[%p]\n", ndev);
ret = wilc_init_host_int(ndev); ret = wilc_init_host_int(ndev);
if (ret < 0) if (ret)
return ret; return ret;
ret = wilc_wlan_initialize(ndev, vif); ret = wilc_wlan_initialize(ndev, vif);
if (ret < 0) { if (ret) {
wilc_deinit_host_int(ndev); wilc_deinit_host_int(ndev);
return ret; return ret;
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -534,7 +534,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count) ...@@ -534,7 +534,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count)
func = wilc->hif_func; func = wilc->hif_func;
do { do {
ret = func->hif_read_reg(wilc, WILC_HOST_TX_CTRL, &reg); ret = func->hif_read_reg(wilc, WILC_HOST_TX_CTRL, &reg);
if (!ret) if (ret)
break; break;
if ((reg & 0x1) == 0) if ((reg & 0x1) == 0)
...@@ -548,7 +548,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count) ...@@ -548,7 +548,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count)
} }
} while (!wilc->quit); } while (!wilc->quit);
if (!ret) if (ret)
goto out_release_bus; goto out_release_bus;
timeout = 200; timeout = 200;
...@@ -557,16 +557,16 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count) ...@@ -557,16 +557,16 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count)
WILC_VMM_TBL_RX_SHADOW_BASE, WILC_VMM_TBL_RX_SHADOW_BASE,
(u8 *)vmm_table, (u8 *)vmm_table,
((i + 1) * 4)); ((i + 1) * 4));
if (!ret) if (ret)
break; break;
ret = func->hif_write_reg(wilc, WILC_HOST_VMM_CTL, 0x2); ret = func->hif_write_reg(wilc, WILC_HOST_VMM_CTL, 0x2);
if (!ret) if (ret)
break; break;
do { do {
ret = func->hif_read_reg(wilc, WILC_HOST_VMM_CTL, &reg); ret = func->hif_read_reg(wilc, WILC_HOST_VMM_CTL, &reg);
if (!ret) if (ret)
break; break;
if ((reg >> 2) & 0x1) { if ((reg >> 2) & 0x1) {
entries = ((reg >> 3) & 0x3f); entries = ((reg >> 3) & 0x3f);
...@@ -579,19 +579,19 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count) ...@@ -579,19 +579,19 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count)
break; break;
} }
if (!ret) if (ret)
break; break;
if (entries == 0) { if (entries == 0) {
ret = func->hif_read_reg(wilc, WILC_HOST_TX_CTRL, &reg); ret = func->hif_read_reg(wilc, WILC_HOST_TX_CTRL, &reg);
if (!ret) if (ret)
break; break;
reg &= ~BIT(0); reg &= ~BIT(0);
ret = func->hif_write_reg(wilc, WILC_HOST_TX_CTRL, reg); ret = func->hif_write_reg(wilc, WILC_HOST_TX_CTRL, reg);
} }
} while (0); } while (0);
if (!ret) if (ret)
goto out_release_bus; goto out_release_bus;
if (entries == 0) { if (entries == 0) {
...@@ -654,7 +654,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count) ...@@ -654,7 +654,7 @@ int wilc_wlan_handle_txq(struct wilc *wilc, u32 *txq_count)
acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP); acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP);
ret = func->hif_clear_int_ext(wilc, ENABLE_TX_VMM); ret = func->hif_clear_int_ext(wilc, ENABLE_TX_VMM);
if (!ret) if (ret)
goto out_release_bus; goto out_release_bus;
ret = func->hif_block_tx_ext(wilc, 0, txb, offset); ret = func->hif_block_tx_ext(wilc, 0, txb, offset);
...@@ -771,7 +771,7 @@ static void wilc_wlan_handle_isr_ext(struct wilc *wilc, u32 int_status) ...@@ -771,7 +771,7 @@ static void wilc_wlan_handle_isr_ext(struct wilc *wilc, u32 int_status)
wilc->hif_func->hif_clear_int_ext(wilc, DATA_INT_CLR | ENABLE_RX_VMM); wilc->hif_func->hif_clear_int_ext(wilc, DATA_INT_CLR | ENABLE_RX_VMM);
ret = wilc->hif_func->hif_block_rx_ext(wilc, 0, buffer, size); ret = wilc->hif_func->hif_block_rx_ext(wilc, 0, buffer, size);
if (!ret) if (ret)
return; return;
offset += size; offset += size;
...@@ -832,7 +832,7 @@ int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer, ...@@ -832,7 +832,7 @@ int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer,
memcpy(dma_buffer, &buffer[offset], size2); memcpy(dma_buffer, &buffer[offset], size2);
ret = wilc->hif_func->hif_block_tx(wilc, addr, ret = wilc->hif_func->hif_block_tx(wilc, addr,
dma_buffer, size2); dma_buffer, size2);
if (!ret) if (ret)
break; break;
addr += size2; addr += size2;
...@@ -841,17 +841,15 @@ int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer, ...@@ -841,17 +841,15 @@ int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer,
} }
release_bus(wilc, WILC_BUS_RELEASE_ONLY); release_bus(wilc, WILC_BUS_RELEASE_ONLY);
if (!ret) { if (ret)
ret = -EIO;
goto fail; goto fail;
}
} while (offset < buffer_size); } while (offset < buffer_size);
fail: fail:
kfree(dma_buffer); kfree(dma_buffer);
return (ret < 0) ? ret : 0; return ret;
} }
int wilc_wlan_start(struct wilc *wilc) int wilc_wlan_start(struct wilc *wilc)
...@@ -868,26 +866,26 @@ int wilc_wlan_start(struct wilc *wilc) ...@@ -868,26 +866,26 @@ int wilc_wlan_start(struct wilc *wilc)
} }
acquire_bus(wilc, WILC_BUS_ACQUIRE_ONLY); acquire_bus(wilc, WILC_BUS_ACQUIRE_ONLY);
ret = wilc->hif_func->hif_write_reg(wilc, WILC_VMM_CORE_CFG, reg); ret = wilc->hif_func->hif_write_reg(wilc, WILC_VMM_CORE_CFG, reg);
if (!ret) { if (ret) {
release_bus(wilc, WILC_BUS_RELEASE_ONLY); release_bus(wilc, WILC_BUS_RELEASE_ONLY);
return -EIO; return ret;
} }
reg = 0; reg = 0;
if (wilc->io_type == WILC_HIF_SDIO && wilc->dev_irq_num) if (wilc->io_type == WILC_HIF_SDIO && wilc->dev_irq_num)
reg |= WILC_HAVE_SDIO_IRQ_GPIO; reg |= WILC_HAVE_SDIO_IRQ_GPIO;
ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_1, reg); ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_1, reg);
if (!ret) { if (ret) {
release_bus(wilc, WILC_BUS_RELEASE_ONLY); release_bus(wilc, WILC_BUS_RELEASE_ONLY);
return -EIO; return ret;
} }
wilc->hif_func->hif_sync_ext(wilc, NUM_INT_EXT); wilc->hif_func->hif_sync_ext(wilc, NUM_INT_EXT);
ret = wilc->hif_func->hif_read_reg(wilc, 0x1000, &chipid); ret = wilc->hif_func->hif_read_reg(wilc, 0x1000, &chipid);
if (!ret) { if (ret) {
release_bus(wilc, WILC_BUS_RELEASE_ONLY); release_bus(wilc, WILC_BUS_RELEASE_ONLY);
return -EIO; return ret;
} }
wilc->hif_func->hif_read_reg(wilc, WILC_GLB_RESET_0, &reg); wilc->hif_func->hif_read_reg(wilc, WILC_GLB_RESET_0, &reg);
...@@ -902,7 +900,7 @@ int wilc_wlan_start(struct wilc *wilc) ...@@ -902,7 +900,7 @@ int wilc_wlan_start(struct wilc *wilc)
wilc->hif_func->hif_read_reg(wilc, WILC_GLB_RESET_0, &reg); wilc->hif_func->hif_read_reg(wilc, WILC_GLB_RESET_0, &reg);
release_bus(wilc, WILC_BUS_RELEASE_ONLY); release_bus(wilc, WILC_BUS_RELEASE_ONLY);
return (ret < 0) ? ret : 0; return ret;
} }
int wilc_wlan_stop(struct wilc *wilc, struct wilc_vif *vif) int wilc_wlan_stop(struct wilc *wilc, struct wilc_vif *vif)
...@@ -913,33 +911,33 @@ int wilc_wlan_stop(struct wilc *wilc, struct wilc_vif *vif) ...@@ -913,33 +911,33 @@ int wilc_wlan_stop(struct wilc *wilc, struct wilc_vif *vif)
acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP); acquire_bus(wilc, WILC_BUS_ACQUIRE_AND_WAKEUP);
ret = wilc->hif_func->hif_read_reg(wilc, WILC_GP_REG_0, &reg); ret = wilc->hif_func->hif_read_reg(wilc, WILC_GP_REG_0, &reg);
if (!ret) { if (ret) {
netdev_err(vif->ndev, "Error while reading reg\n"); netdev_err(vif->ndev, "Error while reading reg\n");
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return -EIO; return ret;
} }
ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_0, ret = wilc->hif_func->hif_write_reg(wilc, WILC_GP_REG_0,
(reg | WILC_ABORT_REQ_BIT)); (reg | WILC_ABORT_REQ_BIT));
if (!ret) { if (ret) {
netdev_err(vif->ndev, "Error while writing reg\n"); netdev_err(vif->ndev, "Error while writing reg\n");
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return -EIO; return ret;
} }
ret = wilc->hif_func->hif_read_reg(wilc, WILC_FW_HOST_COMM, &reg); ret = wilc->hif_func->hif_read_reg(wilc, WILC_FW_HOST_COMM, &reg);
if (!ret) { if (ret) {
netdev_err(vif->ndev, "Error while reading reg\n"); netdev_err(vif->ndev, "Error while reading reg\n");
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return -EIO; return ret;
} }
reg = BIT(0); reg = BIT(0);
ret = wilc->hif_func->hif_write_reg(wilc, WILC_FW_HOST_COMM, reg); ret = wilc->hif_func->hif_write_reg(wilc, WILC_FW_HOST_COMM, reg);
if (!ret) { if (ret) {
netdev_err(vif->ndev, "Error while writing reg\n"); netdev_err(vif->ndev, "Error while writing reg\n");
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
return -EIO; return ret;
} }
release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP); release_bus(wilc, WILC_BUS_RELEASE_ALLOW_SLEEP);
...@@ -1112,10 +1110,11 @@ int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids, ...@@ -1112,10 +1110,11 @@ int wilc_send_config_pkt(struct wilc_vif *vif, u8 mode, struct wid *wids,
return ret; return ret;
} }
static u32 init_chip(struct net_device *dev) static int init_chip(struct net_device *dev)
{ {
u32 chipid; u32 chipid;
u32 reg, ret = 0; u32 reg;
int ret = 0;
struct wilc_vif *vif = netdev_priv(dev); struct wilc_vif *vif = netdev_priv(dev);
struct wilc *wilc = vif->wilc; struct wilc *wilc = vif->wilc;
...@@ -1125,18 +1124,18 @@ static u32 init_chip(struct net_device *dev) ...@@ -1125,18 +1124,18 @@ static u32 init_chip(struct net_device *dev)
if ((chipid & 0xfff) != 0xa0) { if ((chipid & 0xfff) != 0xa0) {
ret = wilc->hif_func->hif_read_reg(wilc, 0x1118, &reg); ret = wilc->hif_func->hif_read_reg(wilc, 0x1118, &reg);
if (!ret) { if (ret) {
netdev_err(dev, "fail read reg 0x1118\n"); netdev_err(dev, "fail read reg 0x1118\n");
goto release; goto release;
} }
reg |= BIT(0); reg |= BIT(0);
ret = wilc->hif_func->hif_write_reg(wilc, 0x1118, reg); ret = wilc->hif_func->hif_write_reg(wilc, 0x1118, reg);
if (!ret) { if (ret) {
netdev_err(dev, "fail write reg 0x1118\n"); netdev_err(dev, "fail write reg 0x1118\n");
goto release; goto release;
} }
ret = wilc->hif_func->hif_write_reg(wilc, 0xc0000, 0x71); ret = wilc->hif_func->hif_write_reg(wilc, 0xc0000, 0x71);
if (!ret) { if (ret) {
netdev_err(dev, "fail write reg 0xc0000\n"); netdev_err(dev, "fail write reg 0xc0000\n");
goto release; goto release;
} }
...@@ -1186,7 +1185,7 @@ int wilc_wlan_init(struct net_device *dev) ...@@ -1186,7 +1185,7 @@ int wilc_wlan_init(struct net_device *dev)
wilc->quit = 0; wilc->quit = 0;
if (!wilc->hif_func->hif_init(wilc, false)) { if (wilc->hif_func->hif_init(wilc, false)) {
ret = -EIO; ret = -EIO;
goto fail; goto fail;
} }
...@@ -1207,12 +1206,12 @@ int wilc_wlan_init(struct net_device *dev) ...@@ -1207,12 +1206,12 @@ int wilc_wlan_init(struct net_device *dev)
goto fail; goto fail;
} }
if (!init_chip(dev)) { if (init_chip(dev)) {
ret = -EIO; ret = -EIO;
goto fail; goto fail;
} }
return 1; return 0;
fail: fail:
......
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