Loading drivers/net/wireless/cnss2/main.c +66 −57 Original line number Diff line number Diff line Loading @@ -1187,34 +1187,38 @@ static void cnss_qca6290_crash_shutdown(struct cnss_plat_data *plat_priv) cnss_pci_collect_dump_info(pci_priv); } static int cnss_powerup(const struct subsys_desc *subsys_desc) static int cnss_powerup(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_plat_data *plat_priv; int ret; if (!subsys_desc->dev) { cnss_pr_err("dev from subsys_desc is NULL\n"); return -ENODEV; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_powerup(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_powerup(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; } plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL!\n"); return -ENODEV; return ret; } if (!plat_priv->driver_state) { cnss_pr_dbg("Powerup is ignored.\n"); return 0; } static int cnss_shutdown(struct cnss_plat_data *plat_priv) { int ret; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_powerup(plat_priv); ret = cnss_qca6174_shutdown(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_powerup(plat_priv); ret = cnss_qca6290_shutdown(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", Loading @@ -1225,9 +1229,8 @@ static int cnss_powerup(const struct subsys_desc *subsys_desc) return ret; } static int cnss_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) static int cnss_subsys_powerup(const struct subsys_desc *subsys_desc) { int ret = 0; struct cnss_plat_data *plat_priv; if (!subsys_desc->dev) { Loading @@ -1237,25 +1240,40 @@ static int cnss_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL!\n"); cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_shutdown(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_shutdown(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; if (!plat_priv->driver_state) { cnss_pr_dbg("Powerup is ignored\n"); return 0; } return ret; return cnss_powerup(plat_priv); } static int cnss_subsys_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) { struct cnss_plat_data *plat_priv; if (!subsys_desc->dev) { cnss_pr_err("dev from subsys_desc is NULL\n"); return -ENODEV; } plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } if (!plat_priv->driver_state) { cnss_pr_dbg("shutdown is ignored\n"); return 0; } return cnss_shutdown(plat_priv); } static int cnss_qca6290_ramdump(struct cnss_plat_data *plat_priv) Loading Loading @@ -1313,7 +1331,8 @@ static int cnss_qca6174_ramdump(struct cnss_plat_data *plat_priv) return ret; } static int cnss_ramdump(int enable, const struct subsys_desc *subsys_desc) static int cnss_subsys_ramdump(int enable, const struct subsys_desc *subsys_desc) { int ret = 0; struct cnss_plat_data *plat_priv = dev_get_drvdata(subsys_desc->dev); Loading Loading @@ -1375,7 +1394,7 @@ void cnss_device_crashed(struct device *dev) } EXPORT_SYMBOL(cnss_device_crashed); static void cnss_crash_shutdown(const struct subsys_desc *subsys_desc) static void cnss_subsys_crash_shutdown(const struct subsys_desc *subsys_desc) { struct cnss_plat_data *plat_priv = dev_get_drvdata(subsys_desc->dev); Loading Loading @@ -1464,8 +1483,8 @@ static int cnss_do_recovery(struct cnss_plat_data *plat_priv, return 0; self_recovery: cnss_shutdown(&subsys_info->subsys_desc, false); cnss_powerup(&subsys_info->subsys_desc); cnss_shutdown(plat_priv); cnss_powerup(plat_priv); return 0; } Loading Loading @@ -1614,12 +1633,11 @@ static int cnss_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data) { int ret = 0; struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state); plat_priv->driver_ops = data; ret = cnss_powerup(&subsys_info->subsys_desc); ret = cnss_powerup(plat_priv); if (ret) { clear_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state); plat_priv->driver_ops = NULL; Loading @@ -1630,10 +1648,8 @@ static int cnss_register_driver_hdlr(struct cnss_plat_data *plat_priv, static int cnss_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_DRIVER_UNLOADING, &plat_priv->driver_state); cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); plat_priv->driver_ops = NULL; return 0; Loading @@ -1642,10 +1658,9 @@ static int cnss_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); ret = cnss_powerup(&subsys_info->subsys_desc); ret = cnss_powerup(plat_priv); if (ret) clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); Loading @@ -1654,10 +1669,8 @@ static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01); cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); return 0; Loading @@ -1665,16 +1678,12 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) static int cnss_power_up_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; return cnss_powerup(&subsys_info->subsys_desc); return cnss_powerup(plat_priv); } static int cnss_power_down_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); return 0; } Loading Loading @@ -1799,10 +1808,10 @@ int cnss_register_subsys(struct cnss_plat_data *plat_priv) } subsys_info->subsys_desc.owner = THIS_MODULE; subsys_info->subsys_desc.powerup = cnss_powerup; subsys_info->subsys_desc.shutdown = cnss_shutdown; subsys_info->subsys_desc.ramdump = cnss_ramdump; subsys_info->subsys_desc.crash_shutdown = cnss_crash_shutdown; subsys_info->subsys_desc.powerup = cnss_subsys_powerup; subsys_info->subsys_desc.shutdown = cnss_subsys_shutdown; subsys_info->subsys_desc.ramdump = cnss_subsys_ramdump; subsys_info->subsys_desc.crash_shutdown = cnss_subsys_crash_shutdown; subsys_info->subsys_desc.dev = &plat_priv->plat_dev->dev; subsys_info->subsys_device = subsys_register(&subsys_info->subsys_desc); Loading Loading
drivers/net/wireless/cnss2/main.c +66 −57 Original line number Diff line number Diff line Loading @@ -1187,34 +1187,38 @@ static void cnss_qca6290_crash_shutdown(struct cnss_plat_data *plat_priv) cnss_pci_collect_dump_info(pci_priv); } static int cnss_powerup(const struct subsys_desc *subsys_desc) static int cnss_powerup(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_plat_data *plat_priv; int ret; if (!subsys_desc->dev) { cnss_pr_err("dev from subsys_desc is NULL\n"); return -ENODEV; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_powerup(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_powerup(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; } plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL!\n"); return -ENODEV; return ret; } if (!plat_priv->driver_state) { cnss_pr_dbg("Powerup is ignored.\n"); return 0; } static int cnss_shutdown(struct cnss_plat_data *plat_priv) { int ret; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_powerup(plat_priv); ret = cnss_qca6174_shutdown(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_powerup(plat_priv); ret = cnss_qca6290_shutdown(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", Loading @@ -1225,9 +1229,8 @@ static int cnss_powerup(const struct subsys_desc *subsys_desc) return ret; } static int cnss_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) static int cnss_subsys_powerup(const struct subsys_desc *subsys_desc) { int ret = 0; struct cnss_plat_data *plat_priv; if (!subsys_desc->dev) { Loading @@ -1237,25 +1240,40 @@ static int cnss_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL!\n"); cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_shutdown(plat_priv); break; case QCA6290_EMULATION_DEVICE_ID: case QCA6290_DEVICE_ID: ret = cnss_qca6290_shutdown(plat_priv); break; default: cnss_pr_err("Unknown device_id found: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; if (!plat_priv->driver_state) { cnss_pr_dbg("Powerup is ignored\n"); return 0; } return ret; return cnss_powerup(plat_priv); } static int cnss_subsys_shutdown(const struct subsys_desc *subsys_desc, bool force_stop) { struct cnss_plat_data *plat_priv; if (!subsys_desc->dev) { cnss_pr_err("dev from subsys_desc is NULL\n"); return -ENODEV; } plat_priv = dev_get_drvdata(subsys_desc->dev); if (!plat_priv) { cnss_pr_err("plat_priv is NULL\n"); return -ENODEV; } if (!plat_priv->driver_state) { cnss_pr_dbg("shutdown is ignored\n"); return 0; } return cnss_shutdown(plat_priv); } static int cnss_qca6290_ramdump(struct cnss_plat_data *plat_priv) Loading Loading @@ -1313,7 +1331,8 @@ static int cnss_qca6174_ramdump(struct cnss_plat_data *plat_priv) return ret; } static int cnss_ramdump(int enable, const struct subsys_desc *subsys_desc) static int cnss_subsys_ramdump(int enable, const struct subsys_desc *subsys_desc) { int ret = 0; struct cnss_plat_data *plat_priv = dev_get_drvdata(subsys_desc->dev); Loading Loading @@ -1375,7 +1394,7 @@ void cnss_device_crashed(struct device *dev) } EXPORT_SYMBOL(cnss_device_crashed); static void cnss_crash_shutdown(const struct subsys_desc *subsys_desc) static void cnss_subsys_crash_shutdown(const struct subsys_desc *subsys_desc) { struct cnss_plat_data *plat_priv = dev_get_drvdata(subsys_desc->dev); Loading Loading @@ -1464,8 +1483,8 @@ static int cnss_do_recovery(struct cnss_plat_data *plat_priv, return 0; self_recovery: cnss_shutdown(&subsys_info->subsys_desc, false); cnss_powerup(&subsys_info->subsys_desc); cnss_shutdown(plat_priv); cnss_powerup(plat_priv); return 0; } Loading Loading @@ -1614,12 +1633,11 @@ static int cnss_register_driver_hdlr(struct cnss_plat_data *plat_priv, void *data) { int ret = 0; struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state); plat_priv->driver_ops = data; ret = cnss_powerup(&subsys_info->subsys_desc); ret = cnss_powerup(plat_priv); if (ret) { clear_bit(CNSS_DRIVER_LOADING, &plat_priv->driver_state); plat_priv->driver_ops = NULL; Loading @@ -1630,10 +1648,8 @@ static int cnss_register_driver_hdlr(struct cnss_plat_data *plat_priv, static int cnss_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_DRIVER_UNLOADING, &plat_priv->driver_state); cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); plat_priv->driver_ops = NULL; return 0; Loading @@ -1642,10 +1658,9 @@ static int cnss_unregister_driver_hdlr(struct cnss_plat_data *plat_priv) static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; set_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); ret = cnss_powerup(&subsys_info->subsys_desc); ret = cnss_powerup(plat_priv); if (ret) clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); Loading @@ -1654,10 +1669,8 @@ static int cnss_cold_boot_cal_start_hdlr(struct cnss_plat_data *plat_priv) static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; cnss_wlfw_wlan_mode_send_sync(plat_priv, QMI_WLFW_OFF_V01); cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); clear_bit(CNSS_COLD_BOOT_CAL, &plat_priv->driver_state); return 0; Loading @@ -1665,16 +1678,12 @@ static int cnss_cold_boot_cal_done_hdlr(struct cnss_plat_data *plat_priv) static int cnss_power_up_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; return cnss_powerup(&subsys_info->subsys_desc); return cnss_powerup(plat_priv); } static int cnss_power_down_hdlr(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info = &plat_priv->subsys_info; cnss_shutdown(&subsys_info->subsys_desc, false); cnss_shutdown(plat_priv); return 0; } Loading Loading @@ -1799,10 +1808,10 @@ int cnss_register_subsys(struct cnss_plat_data *plat_priv) } subsys_info->subsys_desc.owner = THIS_MODULE; subsys_info->subsys_desc.powerup = cnss_powerup; subsys_info->subsys_desc.shutdown = cnss_shutdown; subsys_info->subsys_desc.ramdump = cnss_ramdump; subsys_info->subsys_desc.crash_shutdown = cnss_crash_shutdown; subsys_info->subsys_desc.powerup = cnss_subsys_powerup; subsys_info->subsys_desc.shutdown = cnss_subsys_shutdown; subsys_info->subsys_desc.ramdump = cnss_subsys_ramdump; subsys_info->subsys_desc.crash_shutdown = cnss_subsys_crash_shutdown; subsys_info->subsys_desc.dev = &plat_priv->plat_dev->dev; subsys_info->subsys_device = subsys_register(&subsys_info->subsys_desc); Loading