Loading drivers/net/wireless/cnss/cnss_pci.c +17 −14 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2019, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1526,15 +1526,22 @@ struct pci_saved_state *cnss_pci_store_saved_state(struct pci_dev *dev) return pci_store_saved_state(dev); return pci_store_saved_state(dev); } } #ifndef CONFIG_GHS_VMM int cnss_msm_pcie_pm_control( int cnss_msm_pcie_pm_control( enum msm_pcie_pm_opt pm_opt, u32 bus_num, enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) struct pci_dev *pdev, u32 options) { { return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); } } #ifndef CONFIG_GHS_VMM static int cnss_msm_pcie_suspend_resume( enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) { return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); } #else #else int cnss_msm_pcie_pm_control( static inline int cnss_msm_pcie_suspend_resume( enum msm_pcie_pm_opt pm_opt, u32 bus_num, enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) struct pci_dev *pdev, u32 options) { { Loading Loading @@ -1669,7 +1676,7 @@ static int cnss_wlan_pci_probe(struct pci_dev *pdev, pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); ret = cnss_msm_pcie_pm_control( ret = cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); if (ret) { if (ret) { Loading Loading @@ -2354,7 +2361,7 @@ again: pr_err("%s: PCIe event register failed! %d\n", __func__, ret); pr_err("%s: PCIe event register failed! %d\n", __func__, ret); if (!penv->pcie_link_state && !penv->pcie_link_down_ind) { if (!penv->pcie_link_state && !penv->pcie_link_down_ind) { ret = cnss_msm_pcie_pm_control( ret = cnss_msm_pcie_suspend_resume( MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); if (ret) { if (ret) { Loading @@ -2363,11 +2370,9 @@ again: } } penv->pcie_link_state = PCIE_LINK_UP; penv->pcie_link_state = PCIE_LINK_UP; } else if (!penv->pcie_link_state && penv->pcie_link_down_ind) { } else if (!penv->pcie_link_state && penv->pcie_link_down_ind) { ret = cnss_msm_pcie_suspend_resume( ret = cnss_msm_pcie_pm_control( MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS_RESUME_LINK_DOWN); pdev, PM_OPTIONS_RESUME_LINK_DOWN); if (ret) { if (ret) { pr_err("PCIe link bring-up failed (link down option)\n"); pr_err("PCIe link bring-up failed (link down option)\n"); goto err_pcie_link_up; goto err_pcie_link_up; Loading Loading @@ -2404,7 +2409,7 @@ again: pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_pm_control( cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); Loading @@ -2429,7 +2434,7 @@ err_wlan_probe: err_pcie_link_up: err_pcie_link_up: cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_deregister_event(&penv->event_reg); if (penv->pcie_link_state) { if (penv->pcie_link_state) { cnss_msm_pcie_pm_control( cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); penv->pcie_link_state = PCIE_LINK_DOWN; penv->pcie_link_state = PCIE_LINK_DOWN; Loading Loading @@ -2492,8 +2497,7 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver) if (penv->pcie_link_state && !penv->pcie_link_down_ind) { if (penv->pcie_link_state && !penv->pcie_link_down_ind) { pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); if (cnss_msm_pcie_suspend_resume( if (cnss_msm_pcie_pm_control( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS)) { pdev, PM_OPTIONS)) { pr_err("Failed to shutdown PCIe link\n"); pr_err("Failed to shutdown PCIe link\n"); Loading @@ -2501,8 +2505,7 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver) } } } else if (penv->pcie_link_state && penv->pcie_link_down_ind) { } else if (penv->pcie_link_state && penv->pcie_link_down_ind) { penv->saved_state = NULL; penv->saved_state = NULL; if (cnss_msm_pcie_suspend_resume( if (cnss_msm_pcie_pm_control( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS_SUSPEND_LINK_DOWN)) { pdev, PM_OPTIONS_SUSPEND_LINK_DOWN)) { pr_err("Failed to shutdown PCIe link (with linkdown option)\n"); pr_err("Failed to shutdown PCIe link (with linkdown option)\n"); Loading Loading
drivers/net/wireless/cnss/cnss_pci.c +17 −14 Original line number Original line Diff line number Diff line /* Copyright (c) 2013-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2019, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1526,15 +1526,22 @@ struct pci_saved_state *cnss_pci_store_saved_state(struct pci_dev *dev) return pci_store_saved_state(dev); return pci_store_saved_state(dev); } } #ifndef CONFIG_GHS_VMM int cnss_msm_pcie_pm_control( int cnss_msm_pcie_pm_control( enum msm_pcie_pm_opt pm_opt, u32 bus_num, enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) struct pci_dev *pdev, u32 options) { { return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); } } #ifndef CONFIG_GHS_VMM static int cnss_msm_pcie_suspend_resume( enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) { return msm_pcie_pm_control(pm_opt, bus_num, pdev, NULL, options); } #else #else int cnss_msm_pcie_pm_control( static inline int cnss_msm_pcie_suspend_resume( enum msm_pcie_pm_opt pm_opt, u32 bus_num, enum msm_pcie_pm_opt pm_opt, u32 bus_num, struct pci_dev *pdev, u32 options) struct pci_dev *pdev, u32 options) { { Loading Loading @@ -1669,7 +1676,7 @@ static int cnss_wlan_pci_probe(struct pci_dev *pdev, pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); ret = cnss_msm_pcie_pm_control( ret = cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); if (ret) { if (ret) { Loading Loading @@ -2354,7 +2361,7 @@ again: pr_err("%s: PCIe event register failed! %d\n", __func__, ret); pr_err("%s: PCIe event register failed! %d\n", __func__, ret); if (!penv->pcie_link_state && !penv->pcie_link_down_ind) { if (!penv->pcie_link_state && !penv->pcie_link_down_ind) { ret = cnss_msm_pcie_pm_control( ret = cnss_msm_pcie_suspend_resume( MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); if (ret) { if (ret) { Loading @@ -2363,11 +2370,9 @@ again: } } penv->pcie_link_state = PCIE_LINK_UP; penv->pcie_link_state = PCIE_LINK_UP; } else if (!penv->pcie_link_state && penv->pcie_link_down_ind) { } else if (!penv->pcie_link_state && penv->pcie_link_down_ind) { ret = cnss_msm_pcie_suspend_resume( ret = cnss_msm_pcie_pm_control( MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_RESUME, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS_RESUME_LINK_DOWN); pdev, PM_OPTIONS_RESUME_LINK_DOWN); if (ret) { if (ret) { pr_err("PCIe link bring-up failed (link down option)\n"); pr_err("PCIe link bring-up failed (link down option)\n"); goto err_pcie_link_up; goto err_pcie_link_up; Loading Loading @@ -2404,7 +2409,7 @@ again: pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_pm_control( cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); Loading @@ -2429,7 +2434,7 @@ err_wlan_probe: err_pcie_link_up: err_pcie_link_up: cnss_msm_pcie_deregister_event(&penv->event_reg); cnss_msm_pcie_deregister_event(&penv->event_reg); if (penv->pcie_link_state) { if (penv->pcie_link_state) { cnss_msm_pcie_pm_control( cnss_msm_pcie_suspend_resume( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS); pdev, PM_OPTIONS); penv->pcie_link_state = PCIE_LINK_DOWN; penv->pcie_link_state = PCIE_LINK_DOWN; Loading Loading @@ -2492,8 +2497,7 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver) if (penv->pcie_link_state && !penv->pcie_link_down_ind) { if (penv->pcie_link_state && !penv->pcie_link_down_ind) { pci_save_state(pdev); pci_save_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); penv->saved_state = cnss_pci_store_saved_state(pdev); if (cnss_msm_pcie_suspend_resume( if (cnss_msm_pcie_pm_control( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS)) { pdev, PM_OPTIONS)) { pr_err("Failed to shutdown PCIe link\n"); pr_err("Failed to shutdown PCIe link\n"); Loading @@ -2501,8 +2505,7 @@ void cnss_wlan_unregister_driver(struct cnss_wlan_driver *driver) } } } else if (penv->pcie_link_state && penv->pcie_link_down_ind) { } else if (penv->pcie_link_state && penv->pcie_link_down_ind) { penv->saved_state = NULL; penv->saved_state = NULL; if (cnss_msm_pcie_suspend_resume( if (cnss_msm_pcie_pm_control( MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), MSM_PCIE_SUSPEND, cnss_get_pci_dev_bus_number(pdev), pdev, PM_OPTIONS_SUSPEND_LINK_DOWN)) { pdev, PM_OPTIONS_SUSPEND_LINK_DOWN)) { pr_err("Failed to shutdown PCIe link (with linkdown option)\n"); pr_err("Failed to shutdown PCIe link (with linkdown option)\n"); Loading