Loading drivers/net/wireless/cnss2/main.c +38 −20 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1288,7 +1288,7 @@ void cnss_schedule_recovery_work(void) } EXPORT_SYMBOL(cnss_schedule_recovery_work); static int cnss_register_subsys(struct cnss_plat_data *plat_priv) int cnss_register_subsys(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_subsys_info *subsys_info; Loading Loading @@ -1327,7 +1327,7 @@ out: return ret; } static void cnss_unregister_subsys(struct cnss_plat_data *plat_priv) void cnss_unregister_subsys(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info; Loading @@ -1353,7 +1353,7 @@ static int cnss_init_dump_entry(struct cnss_plat_data *plat_priv) return msm_dump_data_register(MSM_DUMP_TABLE_APPS, &dump_entry); } static int cnss_register_ramdump(struct cnss_plat_data *plat_priv) static int cnss_qca6174_register_ramdump(struct cnss_plat_data *plat_priv) { int ret = 0; struct device *dev; Loading Loading @@ -1404,7 +1404,7 @@ out: return ret; } static void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) static void cnss_qca6174_unregister_ramdump(struct cnss_plat_data *plat_priv) { struct device *dev; struct cnss_ramdump_info *ramdump_info; Loading @@ -1421,6 +1421,38 @@ static void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) ramdump_info->ramdump_pa); } int cnss_register_ramdump(struct cnss_plat_data *plat_priv) { int ret = 0; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_register_ramdump(plat_priv); break; case QCA6290_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; break; } return ret; } void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) { switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: cnss_qca6174_unregister_ramdump(plat_priv); break; case QCA6290_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); break; } } static int cnss_register_bus_scale(struct cnss_plat_data *plat_priv) { int ret = 0; Loading Loading @@ -1606,17 +1638,9 @@ static int cnss_probe(struct platform_device *plat_dev) if (ret) goto deinit_pci; ret = cnss_register_subsys(plat_priv); if (ret) goto unreg_esoc; ret = cnss_register_ramdump(plat_priv); if (ret) goto unreg_subsys; ret = cnss_register_bus_scale(plat_priv); if (ret) goto unreg_ramdump; goto unreg_esoc; ret = cnss_create_sysfs(plat_priv); if (ret) Loading @@ -1642,10 +1666,6 @@ remove_sysfs: cnss_remove_sysfs(plat_priv); unreg_bus_scale: cnss_unregister_bus_scale(plat_priv); unreg_ramdump: cnss_unregister_ramdump(plat_priv); unreg_subsys: cnss_unregister_subsys(plat_priv); unreg_esoc: cnss_unregister_esoc(plat_priv); deinit_pci: Loading @@ -1670,8 +1690,6 @@ static int cnss_remove(struct platform_device *plat_dev) cnss_event_work_deinit(plat_priv); cnss_remove_sysfs(plat_priv); cnss_unregister_bus_scale(plat_priv); cnss_unregister_ramdump(plat_priv); cnss_unregister_subsys(plat_priv); cnss_unregister_esoc(plat_priv); cnss_pci_deinit(plat_priv); cnss_put_resources(plat_priv); Loading drivers/net/wireless/cnss2/main.h +5 −1 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -150,5 +150,9 @@ int cnss_get_vreg(struct cnss_plat_data *plat_priv); int cnss_get_pinctrl(struct cnss_plat_data *plat_priv); int cnss_power_on_device(struct cnss_plat_data *plat_priv); void cnss_power_off_device(struct cnss_plat_data *plat_priv); int cnss_register_subsys(struct cnss_plat_data *plat_priv); void cnss_unregister_subsys(struct cnss_plat_data *plat_priv); int cnss_register_ramdump(struct cnss_plat_data *plat_priv); void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv); #endif /* _CNSS_MAIN_H */ drivers/net/wireless/cnss2/pci.c +16 −2 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1062,6 +1062,14 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, plat_priv->device_id = pci_dev->device; plat_priv->bus_priv = pci_priv; ret = cnss_register_subsys(plat_priv); if (ret) goto reset_ctx; ret = cnss_register_ramdump(plat_priv); if (ret) goto unregister_subsys; res = platform_get_resource_byname(plat_priv->plat_dev, IORESOURCE_MEM, "smmu_iova_base"); if (res) { Loading @@ -1074,7 +1082,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, ret = cnss_pci_init_smmu(pci_priv); if (ret) { cnss_pr_err("Failed to init SMMU, err = %d\n", ret); goto reset_ctx; goto unregister_ramdump; } } Loading Loading @@ -1124,6 +1132,10 @@ dereg_pci_event: deinit_smmu: if (pci_priv->smmu_mapping) cnss_pci_deinit_smmu(pci_priv); unregister_ramdump: cnss_unregister_ramdump(plat_priv); unregister_subsys: cnss_unregister_subsys(plat_priv); reset_ctx: plat_priv->bus_priv = NULL; out: Loading @@ -1144,6 +1156,8 @@ static void cnss_pci_remove(struct pci_dev *pci_dev) cnss_dereg_pci_event(pci_priv); if (pci_priv->smmu_mapping) cnss_pci_deinit_smmu(pci_priv); cnss_unregister_ramdump(plat_priv); cnss_unregister_subsys(plat_priv); plat_priv->bus_priv = NULL; } Loading Loading
drivers/net/wireless/cnss2/main.c +38 −20 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1288,7 +1288,7 @@ void cnss_schedule_recovery_work(void) } EXPORT_SYMBOL(cnss_schedule_recovery_work); static int cnss_register_subsys(struct cnss_plat_data *plat_priv) int cnss_register_subsys(struct cnss_plat_data *plat_priv) { int ret = 0; struct cnss_subsys_info *subsys_info; Loading Loading @@ -1327,7 +1327,7 @@ out: return ret; } static void cnss_unregister_subsys(struct cnss_plat_data *plat_priv) void cnss_unregister_subsys(struct cnss_plat_data *plat_priv) { struct cnss_subsys_info *subsys_info; Loading @@ -1353,7 +1353,7 @@ static int cnss_init_dump_entry(struct cnss_plat_data *plat_priv) return msm_dump_data_register(MSM_DUMP_TABLE_APPS, &dump_entry); } static int cnss_register_ramdump(struct cnss_plat_data *plat_priv) static int cnss_qca6174_register_ramdump(struct cnss_plat_data *plat_priv) { int ret = 0; struct device *dev; Loading Loading @@ -1404,7 +1404,7 @@ out: return ret; } static void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) static void cnss_qca6174_unregister_ramdump(struct cnss_plat_data *plat_priv) { struct device *dev; struct cnss_ramdump_info *ramdump_info; Loading @@ -1421,6 +1421,38 @@ static void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) ramdump_info->ramdump_pa); } int cnss_register_ramdump(struct cnss_plat_data *plat_priv) { int ret = 0; switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: ret = cnss_qca6174_register_ramdump(plat_priv); break; case QCA6290_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); ret = -ENODEV; break; } return ret; } void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv) { switch (plat_priv->device_id) { case QCA6174_DEVICE_ID: cnss_qca6174_unregister_ramdump(plat_priv); break; case QCA6290_DEVICE_ID: break; default: cnss_pr_err("Unknown device ID: 0x%lx\n", plat_priv->device_id); break; } } static int cnss_register_bus_scale(struct cnss_plat_data *plat_priv) { int ret = 0; Loading Loading @@ -1606,17 +1638,9 @@ static int cnss_probe(struct platform_device *plat_dev) if (ret) goto deinit_pci; ret = cnss_register_subsys(plat_priv); if (ret) goto unreg_esoc; ret = cnss_register_ramdump(plat_priv); if (ret) goto unreg_subsys; ret = cnss_register_bus_scale(plat_priv); if (ret) goto unreg_ramdump; goto unreg_esoc; ret = cnss_create_sysfs(plat_priv); if (ret) Loading @@ -1642,10 +1666,6 @@ remove_sysfs: cnss_remove_sysfs(plat_priv); unreg_bus_scale: cnss_unregister_bus_scale(plat_priv); unreg_ramdump: cnss_unregister_ramdump(plat_priv); unreg_subsys: cnss_unregister_subsys(plat_priv); unreg_esoc: cnss_unregister_esoc(plat_priv); deinit_pci: Loading @@ -1670,8 +1690,6 @@ static int cnss_remove(struct platform_device *plat_dev) cnss_event_work_deinit(plat_priv); cnss_remove_sysfs(plat_priv); cnss_unregister_bus_scale(plat_priv); cnss_unregister_ramdump(plat_priv); cnss_unregister_subsys(plat_priv); cnss_unregister_esoc(plat_priv); cnss_pci_deinit(plat_priv); cnss_put_resources(plat_priv); Loading
drivers/net/wireless/cnss2/main.h +5 −1 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -150,5 +150,9 @@ int cnss_get_vreg(struct cnss_plat_data *plat_priv); int cnss_get_pinctrl(struct cnss_plat_data *plat_priv); int cnss_power_on_device(struct cnss_plat_data *plat_priv); void cnss_power_off_device(struct cnss_plat_data *plat_priv); int cnss_register_subsys(struct cnss_plat_data *plat_priv); void cnss_unregister_subsys(struct cnss_plat_data *plat_priv); int cnss_register_ramdump(struct cnss_plat_data *plat_priv); void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv); #endif /* _CNSS_MAIN_H */
drivers/net/wireless/cnss2/pci.c +16 −2 Original line number Diff line number Diff line /* Copyright (c) 2016, The Linux Foundation. All rights reserved. /* Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1062,6 +1062,14 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, plat_priv->device_id = pci_dev->device; plat_priv->bus_priv = pci_priv; ret = cnss_register_subsys(plat_priv); if (ret) goto reset_ctx; ret = cnss_register_ramdump(plat_priv); if (ret) goto unregister_subsys; res = platform_get_resource_byname(plat_priv->plat_dev, IORESOURCE_MEM, "smmu_iova_base"); if (res) { Loading @@ -1074,7 +1082,7 @@ static int cnss_pci_probe(struct pci_dev *pci_dev, ret = cnss_pci_init_smmu(pci_priv); if (ret) { cnss_pr_err("Failed to init SMMU, err = %d\n", ret); goto reset_ctx; goto unregister_ramdump; } } Loading Loading @@ -1124,6 +1132,10 @@ dereg_pci_event: deinit_smmu: if (pci_priv->smmu_mapping) cnss_pci_deinit_smmu(pci_priv); unregister_ramdump: cnss_unregister_ramdump(plat_priv); unregister_subsys: cnss_unregister_subsys(plat_priv); reset_ctx: plat_priv->bus_priv = NULL; out: Loading @@ -1144,6 +1156,8 @@ static void cnss_pci_remove(struct pci_dev *pci_dev) cnss_dereg_pci_event(pci_priv); if (pci_priv->smmu_mapping) cnss_pci_deinit_smmu(pci_priv); cnss_unregister_ramdump(plat_priv); cnss_unregister_subsys(plat_priv); plat_priv->bus_priv = NULL; } Loading