qcacmn: Update HIF to use non-inline OS abstraction

Use non-inline OS-abstraction APIs to avoid direct usage
of kernel API's.

Change-Id: I873f8eac38f11cdd2264db16b2dff0757186eb7a
This commit is contained in:
Debasis Das
2020-07-31 16:42:07 +05:30
committed by snandini
parent 77a23e8f71
commit aebe51208d
10 changed files with 78 additions and 57 deletions

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -302,8 +302,8 @@ bool hif_ce_service_should_yield(struct hif_softc *scn,
{ {
bool yield, time_limit_reached, rxpkt_thresh_reached = 0; bool yield, time_limit_reached, rxpkt_thresh_reached = 0;
time_limit_reached = time_limit_reached = qdf_time_sched_clock() >
sched_clock() > ce_state->ce_service_yield_time ? 1 : 0; ce_state->ce_service_yield_time ? 1 : 0;
if (!time_limit_reached) if (!time_limit_reached)
rxpkt_thresh_reached = hif_max_num_receives_reached rxpkt_thresh_reached = hif_max_num_receives_reached
@@ -1148,7 +1148,7 @@ int ce_per_engine_service(struct hif_softc *scn, unsigned int CE_id)
/* Clear force_break flag and re-initialize receive_count to 0 */ /* Clear force_break flag and re-initialize receive_count to 0 */
CE_state->receive_count = 0; CE_state->receive_count = 0;
CE_state->force_break = 0; CE_state->force_break = 0;
CE_state->ce_service_start_time = sched_clock(); CE_state->ce_service_start_time = qdf_time_sched_clock();
CE_state->ce_service_yield_time = CE_state->ce_service_yield_time =
CE_state->ce_service_start_time + CE_state->ce_service_start_time +
hif_get_ce_service_max_yield_time( hif_get_ce_service_max_yield_time(

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -44,7 +44,7 @@
struct tasklet_work { struct tasklet_work {
enum ce_id_type id; enum ce_id_type id;
void *data; void *data;
struct work_struct work; qdf_work_t reg_work;
}; };
@@ -56,8 +56,10 @@ struct tasklet_work {
*/ */
static void reschedule_ce_tasklet_work_handler(struct work_struct *work) static void reschedule_ce_tasklet_work_handler(struct work_struct *work)
{ {
struct tasklet_work *ce_work = container_of(work, struct tasklet_work, qdf_work_t *reg_work = qdf_container_of(work, qdf_work_t, work);
work); struct tasklet_work *ce_work = qdf_container_of(reg_work,
struct tasklet_work,
reg_work);
struct hif_softc *scn = ce_work->data; struct hif_softc *scn = ce_work->data;
struct HIF_CE_state *hif_ce_state; struct HIF_CE_state *hif_ce_state;
@@ -102,7 +104,7 @@ void init_tasklet_worker_by_ceid(struct hif_opaque_softc *scn, int ce_id)
tasklet_workers[ce_id].id = ce_id; tasklet_workers[ce_id].id = ce_id;
tasklet_workers[ce_id].data = scn; tasklet_workers[ce_id].data = scn;
init_tasklet_work(&tasklet_workers[ce_id].work, init_tasklet_work(&tasklet_workers[ce_id].reg_work.work,
reschedule_ce_tasklet_work_handler); reschedule_ce_tasklet_work_handler);
} }
@@ -117,7 +119,7 @@ void deinit_tasklet_workers(struct hif_opaque_softc *scn)
u32 id; u32 id;
for (id = 0; id < CE_ID_MAX; id++) for (id = 0; id < CE_ID_MAX; id++)
cancel_work_sync(&tasklet_workers[id].work); qdf_cancel_work(&tasklet_workers[id].reg_work);
} }
/** /**
@@ -432,7 +434,7 @@ void ce_tasklet_kill(struct hif_softc *scn)
* completes. Even if tasklet_schedule() happens * completes. Even if tasklet_schedule() happens
* tasklet_disable() will take care of that. * tasklet_disable() will take care of that.
*/ */
cancel_work_sync(&tasklet_workers[i].work); qdf_cancel_work(&tasklet_workers[i].reg_work);
tasklet_kill(&hif_ce_state->tasklets[i].intr_tq); tasklet_kill(&hif_ce_state->tasklets[i].intr_tq);
} }
} }

View File

@@ -318,7 +318,7 @@ void hif_exec_fill_poll_time_histogram(struct hif_exec_context *hif_ext_group)
uint32_t bucket; uint32_t bucket;
uint32_t cpu_id = qdf_get_cpu(); uint32_t cpu_id = qdf_get_cpu();
poll_time_ns = sched_clock() - hif_ext_group->poll_start_time; poll_time_ns = qdf_time_sched_clock() - hif_ext_group->poll_start_time;
poll_time_us = qdf_do_div(poll_time_ns, 1000); poll_time_us = qdf_do_div(poll_time_ns, 1000);
napi_stat = &hif_ext_group->stats[cpu_id]; napi_stat = &hif_ext_group->stats[cpu_id];
@@ -345,7 +345,7 @@ static bool hif_exec_poll_should_yield(struct hif_exec_context *hif_ext_group)
struct hif_softc *scn = HIF_GET_SOFTC(hif_ext_group->hif); struct hif_softc *scn = HIF_GET_SOFTC(hif_ext_group->hif);
struct hif_config_info *cfg = &scn->hif_config; struct hif_config_info *cfg = &scn->hif_config;
poll_time_ns = sched_clock() - hif_ext_group->poll_start_time; poll_time_ns = qdf_time_sched_clock() - hif_ext_group->poll_start_time;
time_limit_reached = time_limit_reached =
poll_time_ns > cfg->rx_softirq_max_yield_duration_ns ? 1 : 0; poll_time_ns > cfg->rx_softirq_max_yield_duration_ns ? 1 : 0;
@@ -388,7 +388,7 @@ bool hif_exec_should_yield(struct hif_opaque_softc *hif_ctx, uint grp_id)
static inline static inline
void hif_exec_update_service_start_time(struct hif_exec_context *hif_ext_group) void hif_exec_update_service_start_time(struct hif_exec_context *hif_ext_group)
{ {
hif_ext_group->poll_start_time = sched_clock(); hif_ext_group->poll_start_time = qdf_time_sched_clock();
} }
void hif_print_napi_stats(struct hif_opaque_softc *hif_ctx) void hif_print_napi_stats(struct hif_opaque_softc *hif_ctx)

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -31,12 +31,12 @@
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/topology.h> #include <linux/topology.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <hif_napi.h> #include <hif_napi.h>
#include <hif_irq_affinity.h> #include <hif_irq_affinity.h>
#include <hif_exec.h> #include <hif_exec.h>
#include <hif_main.h> #include <hif_main.h>
#include "qdf_irq.h"
#if defined(FEATURE_NAPI_DEBUG) && defined(HIF_IRQ_AFFINITY) #if defined(FEATURE_NAPI_DEBUG) && defined(HIF_IRQ_AFFINITY)
/* /*
@@ -245,6 +245,7 @@ static int hncm_exec_migrate_to(struct qca_napi_data *napid, uint8_t ctx_id,
int didx) int didx)
{ {
struct hif_exec_context *exec_ctx; struct hif_exec_context *exec_ctx;
struct qdf_cpu_mask *cpumask;
int rc = 0; int rc = 0;
int status = 0; int status = 0;
int ind; int ind;
@@ -259,10 +260,11 @@ static int hncm_exec_migrate_to(struct qca_napi_data *napid, uint8_t ctx_id,
for (ind = 0; ind < exec_ctx->numirq; ind++) { for (ind = 0; ind < exec_ctx->numirq; ind++) {
if (exec_ctx->os_irq[ind]) { if (exec_ctx->os_irq[ind]) {
irq_modify_status(exec_ctx->os_irq[ind], qdf_dev_modify_irq_status(exec_ctx->os_irq[ind],
IRQ_NO_BALANCING, 0); QDF_IRQ_NO_BALANCING, 0);
rc = irq_set_affinity_hint(exec_ctx->os_irq[ind], cpumask = (struct qdf_cpu_mask *)&exec_ctx->cpumask;
&exec_ctx->cpumask); rc = qdf_dev_set_irq_affinity(exec_ctx->os_irq[ind],
cpumask);
if (rc) if (rc)
status = rc; status = rc;
} }
@@ -449,12 +451,14 @@ static inline void hif_exec_bl_irq(struct qca_napi_data *napid, bool bl_flag)
if (bl_flag == true) if (bl_flag == true)
for (j = 0; j < exec_ctx->numirq; j++) for (j = 0; j < exec_ctx->numirq; j++)
irq_modify_status(exec_ctx->os_irq[j], qdf_dev_modify_irq_status(exec_ctx->os_irq[j],
0, IRQ_NO_BALANCING); 0,
QDF_IRQ_NO_BALANCING);
else else
for (j = 0; j < exec_ctx->numirq; j++) for (j = 0; j < exec_ctx->numirq; j++)
irq_modify_status(exec_ctx->os_irq[j], qdf_dev_modify_irq_status(exec_ctx->os_irq[j],
IRQ_NO_BALANCING, 0); QDF_IRQ_NO_BALANCING,
0);
hif_debug("bl_flag %d CE %d", bl_flag, i); hif_debug("bl_flag %d CE %d", bl_flag, i);
} }
} }

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -47,7 +47,7 @@ int hif_exec_event(struct hif_opaque_softc *hif,
*/ */
static inline void hif_irq_affinity_remove(int os_irq) static inline void hif_irq_affinity_remove(int os_irq)
{ {
irq_set_affinity_hint(os_irq, NULL); qdf_dev_set_irq_affinity(os_irq, NULL);
} }
#else #else
static inline void hif_irq_affinity_remove(int os_irq) static inline void hif_irq_affinity_remove(int os_irq)

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -30,7 +30,6 @@
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/topology.h> #include <linux/topology.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irq.h>
#ifdef CONFIG_SCHED_CORE_CTL #ifdef CONFIG_SCHED_CORE_CTL
#include <linux/sched/core_ctl.h> #include <linux/sched/core_ctl.h>
#endif #endif
@@ -48,6 +47,7 @@
#include "qdf_module.h" #include "qdf_module.h"
#include "qdf_net_if.h" #include "qdf_net_if.h"
#include "qdf_dev.h" #include "qdf_dev.h"
#include "qdf_irq.h"
enum napi_decision_vector { enum napi_decision_vector {
HIF_NAPI_NOEVENT = 0, HIF_NAPI_NOEVENT = 0,
@@ -79,7 +79,9 @@ static int hif_rxthread_napi_poll(struct napi_struct *napi, int budget)
*/ */
static void hif_init_rx_thread_napi(struct qca_napi_info *napii) static void hif_init_rx_thread_napi(struct qca_napi_info *napii)
{ {
init_dummy_netdev(&napii->rx_thread_netdev); struct qdf_net_if *nd = (struct qdf_net_if *)&napii->rx_thread_netdev;
qdf_net_if_create_dummy_if(nd);
netif_napi_add(&napii->rx_thread_netdev, &napii->rx_thread_napi, netif_napi_add(&napii->rx_thread_netdev, &napii->rx_thread_napi,
hif_rxthread_napi_poll, 64); hif_rxthread_napi_poll, 64);
napi_enable(&napii->rx_thread_napi); napi_enable(&napii->rx_thread_napi);
@@ -200,7 +202,7 @@ int hif_napi_create(struct hif_opaque_softc *hif_ctx,
if (napii->irq < 0) if (napii->irq < 0)
hif_warn("bad IRQ value for CE %d: %d", i, napii->irq); hif_warn("bad IRQ value for CE %d: %d", i, napii->irq);
init_dummy_netdev(&(napii->netdev)); qdf_net_if_create_dummy_if((struct qdf_net_if *)&napii->netdev);
NAPI_DEBUG("adding napi=%pK to netdev=%pK (poll=%pK, bdgt=%d)", NAPI_DEBUG("adding napi=%pK to netdev=%pK (poll=%pK, bdgt=%d)",
&(napii->napi), &(napii->netdev), poll, budget); &(napii->napi), &(napii->netdev), poll, budget);
@@ -816,12 +818,14 @@ bool hif_napi_correct_cpu(struct qca_napi_info *napi_info)
NAPI_DEBUG("interrupt on wrong CPU, correcting"); NAPI_DEBUG("interrupt on wrong CPU, correcting");
napi_info->cpumask.bits[0] = (0x01 << napi_info->cpu); napi_info->cpumask.bits[0] = (0x01 << napi_info->cpu);
irq_modify_status(napi_info->irq, IRQ_NO_BALANCING, 0); qdf_dev_modify_irq_status(napi_info->irq,
QDF_IRQ_NO_BALANCING, 0);
ret = qdf_dev_set_irq_affinity(napi_info->irq, ret = qdf_dev_set_irq_affinity(napi_info->irq,
(struct qdf_cpu_mask *) (struct qdf_cpu_mask *)
&napi_info->cpumask); &napi_info->cpumask);
rc = qdf_status_to_os_return(ret); rc = qdf_status_to_os_return(ret);
irq_modify_status(napi_info->irq, 0, IRQ_NO_BALANCING); qdf_dev_modify_irq_status(napi_info->irq, 0,
QDF_IRQ_NO_BALANCING);
if (rc) if (rc)
hif_err("Setting irq affinity hint: %d", rc); hif_err("Setting irq affinity hint: %d", rc);
@@ -989,7 +993,7 @@ void hif_update_napi_max_poll_time(struct CE_state *ce_state,
{ {
struct hif_softc *hif; struct hif_softc *hif;
struct qca_napi_info *napi_info; struct qca_napi_info *napi_info;
unsigned long long napi_poll_time = sched_clock() - unsigned long long napi_poll_time = qdf_time_sched_clock() -
ce_state->ce_service_start_time; ce_state->ce_service_start_time;
hif = ce_state->scn; hif = ce_state->scn;
@@ -1462,7 +1466,8 @@ static int hncm_migrate_to(struct qca_napi_data *napid,
napid->napis[napi_ce]->cpumask.bits[0] = (1 << didx); napid->napis[napi_ce]->cpumask.bits[0] = (1 << didx);
irq_modify_status(napid->napis[napi_ce]->irq, IRQ_NO_BALANCING, 0); qdf_dev_modify_irq_status(napid->napis[napi_ce]->irq,
QDF_IRQ_NO_BALANCING, 0);
status = qdf_dev_set_irq_affinity(napid->napis[napi_ce]->irq, status = qdf_dev_set_irq_affinity(napid->napis[napi_ce]->irq,
(struct qdf_cpu_mask *) (struct qdf_cpu_mask *)
&napid->napis[napi_ce]->cpumask); &napid->napis[napi_ce]->cpumask);
@@ -1653,11 +1658,11 @@ static inline void hif_napi_bl_irq(struct qca_napi_data *napid, bool bl_flag)
continue; continue;
if (bl_flag == true) if (bl_flag == true)
irq_modify_status(napii->irq, qdf_dev_modify_irq_status(napii->irq,
0, IRQ_NO_BALANCING); 0, QDF_IRQ_NO_BALANCING);
else else
irq_modify_status(napii->irq, qdf_dev_modify_irq_status(napii->irq,
IRQ_NO_BALANCING, 0); QDF_IRQ_NO_BALANCING, 0);
hif_debug("bl_flag %d CE %d", bl_flag, i); hif_debug("bl_flag %d CE %d", bl_flag, i);
} }
} }

View File

@@ -41,6 +41,9 @@
#include "targaddrs.h" #include "targaddrs.h"
#include "hif_exec.h" #include "hif_exec.h"
#define CNSS_RUNTIME_FILE "cnss_runtime_pm"
#define CNSS_RUNTIME_FILE_PERM QDF_FILE_USR_READ
#ifdef FEATURE_RUNTIME_PM #ifdef FEATURE_RUNTIME_PM
/** /**
* hif_pci_pm_runtime_enabled() - To check if Runtime PM is enabled * hif_pci_pm_runtime_enabled() - To check if Runtime PM is enabled
@@ -306,9 +309,11 @@ static void hif_runtime_pm_debugfs_create(struct hif_softc *scn)
{ {
struct hif_runtime_pm_ctx *rpm_ctx = hif_bus_get_rpm_ctx(scn); struct hif_runtime_pm_ctx *rpm_ctx = hif_bus_get_rpm_ctx(scn);
rpm_ctx->pm_dentry = debugfs_create_file("cnss_runtime_pm", rpm_ctx->pm_dentry = qdf_debugfs_create_entry(CNSS_RUNTIME_FILE,
0400, NULL, scn, CNSS_RUNTIME_FILE_PERM,
&hif_pci_runtime_pm_fops); NULL,
scn,
&hif_pci_runtime_pm_fops);
} }
/** /**
@@ -321,7 +326,7 @@ static void hif_runtime_pm_debugfs_remove(struct hif_softc *scn)
{ {
struct hif_runtime_pm_ctx *rpm_ctx = hif_bus_get_rpm_ctx(scn); struct hif_runtime_pm_ctx *rpm_ctx = hif_bus_get_rpm_ctx(scn);
debugfs_remove(rpm_ctx->pm_dentry); qdf_debugfs_remove_file(rpm_ctx->pm_dentry);
} }
/** /**

View File

@@ -57,6 +57,8 @@
#include "wlan_cfg.h" #include "wlan_cfg.h"
#include "qdf_hang_event_notifier.h" #include "qdf_hang_event_notifier.h"
#include "qdf_platform.h" #include "qdf_platform.h"
#include "qal_devnode.h"
#include "qdf_irq.h"
/* Maximum ms timeout for host to wake up target */ /* Maximum ms timeout for host to wake up target */
#define PCIE_WAKE_TIMEOUT 1000 #define PCIE_WAKE_TIMEOUT 1000
@@ -165,11 +167,7 @@ static inline int hif_get_pci_slot(struct hif_softc *scn)
*/ */
pcierp_node = mhi_node->parent; pcierp_node = mhi_node->parent;
pcie_node = pcierp_node->parent; pcie_node = pcierp_node->parent;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)) qal_devnode_fetch_pci_domain_id(pcie_node, &pci_id);
pci_id = 0;
#else
pci_id = of_get_pci_domain_nr(pcie_node);
#endif
if (pci_id < 0 || pci_id >= WLAN_CFG_MAX_PCIE_GROUPS) { if (pci_id < 0 || pci_id >= WLAN_CFG_MAX_PCIE_GROUPS) {
hif_err("pci_id: %d is invalid", pci_id); hif_err("pci_id: %d is invalid", pci_id);
QDF_ASSERT(0); QDF_ASSERT(0);
@@ -2093,8 +2091,11 @@ static void hif_pci_deconfigure_grp_irq(struct hif_softc *scn)
hif_ext_group->irq_requested = false; hif_ext_group->irq_requested = false;
for (j = 0; j < hif_ext_group->numirq; j++) { for (j = 0; j < hif_ext_group->numirq; j++) {
irq = hif_ext_group->os_irq[j]; irq = hif_ext_group->os_irq[j];
if (scn->irq_unlazy_disable) if (scn->irq_unlazy_disable) {
irq_clear_status_flags(irq, IRQ_DISABLE_UNLAZY); qdf_dev_clear_irq_status_flags(
irq,
QDF_IRQ_DISABLE_UNLAZY);
}
pfrm_free_irq(scn->qdf_dev->dev, pfrm_free_irq(scn->qdf_dev->dev,
irq, hif_ext_group); irq, hif_ext_group);
} }
@@ -3155,7 +3156,8 @@ int hif_pci_configure_grp_irq(struct hif_softc *scn,
for (j = 0; j < hif_ext_group->numirq; j++) { for (j = 0; j < hif_ext_group->numirq; j++) {
irq = hif_ext_group->irq[j]; irq = hif_ext_group->irq[j];
if (scn->irq_unlazy_disable) if (scn->irq_unlazy_disable)
irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY); qdf_dev_set_irq_status_flags(irq,
QDF_IRQ_DISABLE_UNLAZY);
hif_debug("request_irq = %d for grp %d", hif_debug("request_irq = %d for grp %d",
irq, hif_ext_group->grp_id); irq, hif_ext_group->grp_id);
ret = pfrm_request_irq( ret = pfrm_request_irq(

View File

@@ -36,6 +36,7 @@
#include "pci_api.h" #include "pci_api.h"
#include "hif_napi.h" #include "hif_napi.h"
#include "qal_vbus_dev.h" #include "qal_vbus_dev.h"
#include "qdf_irq.h"
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0) #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)
#define IRQF_DISABLED 0x00000020 #define IRQF_DISABLED 0x00000020
@@ -361,7 +362,7 @@ int hif_ahb_configure_grp_irq(struct hif_softc *scn,
for (j = 0; j < hif_ext_group->numirq; j++) { for (j = 0; j < hif_ext_group->numirq; j++) {
irq = hif_ext_group->os_irq[j]; irq = hif_ext_group->os_irq[j];
irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY); qdf_dev_set_irq_status_flags(irq, QDF_IRQ_DISABLE_UNLAZY);
ret = pfrm_request_irq(scn->qdf_dev->dev, ret = pfrm_request_irq(scn->qdf_dev->dev,
irq, hif_ext_group_interrupt_handler, irq, hif_ext_group_interrupt_handler,
IRQF_TRIGGER_RISING, IRQF_TRIGGER_RISING,
@@ -399,8 +400,9 @@ void hif_ahb_deconfigure_grp_irq(struct hif_softc *scn)
for (j = 0; j < hif_ext_group->numirq; j++) { for (j = 0; j < hif_ext_group->numirq; j++) {
irq = hif_ext_group->os_irq[j]; irq = hif_ext_group->os_irq[j];
hif_ext_group->irq_enabled = false; hif_ext_group->irq_enabled = false;
irq_clear_status_flags(irq, qdf_dev_clear_irq_status_flags(
IRQ_DISABLE_UNLAZY); irq,
QDF_IRQ_DISABLE_UNLAZY);
} }
qdf_spin_unlock_irqrestore(&hif_ext_group->irq_lock); qdf_spin_unlock_irqrestore(&hif_ext_group->irq_lock);

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -32,6 +32,7 @@
#include "ahb_api.h" #include "ahb_api.h"
#include "if_ahb.h" #include "if_ahb.h"
#include "qal_vbus_dev.h" #include "qal_vbus_dev.h"
#include "qal_devnode.h"
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/of_address.h> #include <linux/of_address.h>
@@ -132,17 +133,17 @@ int hif_ahb_enable_radio(struct hif_pci_softc *sc,
int ret = 0; int ret = 0;
struct qdf_vbus_rstctl *vrstctl = NULL; struct qdf_vbus_rstctl *vrstctl = NULL;
ret = of_property_read_u32(dev_node, "qca,msi_addr", &msi_addr); ret = qal_devnode_read_u32(dev_node, "qca,msi_addr", &msi_addr);
if (ret) { if (ret) {
hif_err("Unable to get msi_addr - error :%d", ret); hif_err("Unable to get msi_addr - error :%d", ret);
return -EIO; return -EIO;
} }
ret = of_property_read_u32(dev_node, "qca,msi_base", &msi_base); ret = qal_devnode_read_u32(dev_node, "qca,msi_base", &msi_base);
if (ret) { if (ret) {
hif_err("Unable to get msi_base - error: %d", ret); hif_err("Unable to get msi_base - error: %d", ret);
return -EIO; return -EIO;
} }
ret = of_property_read_u32(dev_node, "core-id", &wifi_core_id); ret = qal_devnode_read_u32(dev_node, "core-id", &wifi_core_id);
if (ret) { if (ret) {
hif_err("Unable to get core-id - error: %d", ret); hif_err("Unable to get core-id - error: %d", ret);
return -EIO; return -EIO;