qcacmn: Add QDF abstraction for IPA enums

Add QDF abstraction for Linux kernel IPA driver enums.

Change-Id: I9b61917768a109d12aefdc19a7822287337c9c18
CRs-Fixed: 2194166
This commit is contained in:
Sravan Kumar Kairam
2018-03-06 21:52:48 +05:30
committed by nshrivas
parent f83b87ed16
commit 4af5290d97
5 changed files with 174 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -17,6 +17,8 @@
#ifndef _I_QDF_IPA_H
#define _I_QDF_IPA_H
#ifdef IPA_OFFLOAD
#include <linux/ipa.h>
/**
@@ -482,6 +484,23 @@ typedef struct ipa_ioc_rx_intf_prop __qdf_ipa_ioc_rx_intf_prop_t;
typedef struct ipa_wlan_hdr_attrib_val __qdf_ipa_wlan_hdr_attrib_val_t;
#define __QDF_IPA_SET_META_MSG_TYPE(meta, msg_type) \
__qdf_ipa_set_meta_msg_type(meta, msg_type)
#define __QDF_IPA_RM_RESOURCE_GRANTED IPA_RM_RESOURCE_GRANTED
#define __QDF_IPA_RM_RESOURCE_RELEASED IPA_RM_RESOURCE_RELEASED
#define __QDF_IPA_RM_RESOURCE_WLAN_PROD IPA_RM_RESOURCE_WLAN_PROD
#define __QDF_IPA_RM_RESOURCE_WLAN_CONS IPA_RM_RESOURCE_WLAN_CONS
#define __QDF_IPA_RM_RESOURCE_APPS_CONS IPA_RM_RESOURCE_APPS_CONS
#define __QDF_IPA_VOLTAGE_LEVEL IPA_VOLTAGE_SVS
#define __QDF_IPA_CLIENT_WLAN1_PROD IPA_CLIENT_WLAN1_PROD
#define __QDF_IPA_CLIENT_WLAN2_CONS IPA_CLIENT_WLAN2_CONS
#define __QDF_IPA_CLIENT_WLAN3_CONS IPA_CLIENT_WLAN3_CONS
#define __QDF_IPA_CLIENT_WLAN4_CONS IPA_CLIENT_WLAN4_CONS
/*
* Resume / Suspend
*/
@@ -886,4 +905,14 @@ static inline int __qdf_ipa_register_ipa_ready_cb(
return ipa_register_ipa_ready_cb(ipa_ready_cb, user_data);
}
#ifdef FEATURE_METERING
static inline int __qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index,
uint64_t quota_bytes)
{
return ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes);
}
#endif
void __qdf_ipa_set_meta_msg_type(__qdf_ipa_msg_meta_t *meta, int type);
#endif /* IPA_OFFLOAD */
#endif /* _I_QDF_IPA_H */

View File

@@ -22,6 +22,8 @@
#ifndef I_QDF_IPA_WDI_H
#define I_QDF_IPA_WDI_H
#ifdef IPA_OFFLOAD
#include <qdf_status.h> /* QDF_STATUS */
#include <linux/ipa_wdi3.h>
@@ -552,4 +554,5 @@ static inline int __qdf_ipa_wdi3_set_perf_profile(
#endif /* CONFIG_IPA_WDI_UNIFIED_API */
#endif
#endif /* IPA_OFFLOAD */
#endif /* I_QDF_IPA_WDI_H */

78
qdf/linux/src/qdf_ipa.c Normal file
View File

@@ -0,0 +1,78 @@
/*
* Copyright (c) 2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: qdf_ipa.c
*
* This source file contains linux specific definitions for QDF IPA APIs
*/
/* Include Files */
#include <qdf_ipa.h>
static enum ipa_wlan_event __qdf_to_ipa_wlan_event(int qdf_ipa_event)
{
enum ipa_wlan_event ipa_event;
switch (qdf_ipa_event) {
case QDF_IPA_CLIENT_CONNECT:
ipa_event = WLAN_CLIENT_CONNECT;
break;
case QDF_IPA_CLIENT_DISCONNECT:
ipa_event = WLAN_CLIENT_DISCONNECT;
break;
case QDF_IPA_AP_CONNECT:
ipa_event = WLAN_AP_CONNECT;
break;
case QDF_IPA_AP_DISCONNECT:
ipa_event = WLAN_AP_DISCONNECT;
break;
case QDF_IPA_STA_CONNECT:
ipa_event = WLAN_STA_CONNECT;
break;
case QDF_IPA_STA_DISCONNECT:
ipa_event = WLAN_STA_DISCONNECT;
break;
case QDF_IPA_CLIENT_CONNECT_EX:
ipa_event = WLAN_CLIENT_CONNECT_EX;
break;
case QDF_SWITCH_TO_SCC:
ipa_event = WLAN_SWITCH_TO_SCC;
break;
case QDF_SWITCH_TO_MCC:
ipa_event = WLAN_SWITCH_TO_MCC;
break;
case QDF_WDI_ENABLE:
ipa_event = WLAN_WDI_ENABLE;
break;
case QDF_WDI_DISABLE:
ipa_event = WLAN_WDI_DISABLE;
break;
case QDF_IPA_WLAN_EVENT_MAX:
default:
ipa_event = IPA_WLAN_EVENT_MAX;
break;
}
return ipa_event;
}
void __qdf_ipa_set_meta_msg_type(__qdf_ipa_msg_meta_t *meta, int type)
{
meta->msg_type = __qdf_to_ipa_wlan_event(type);
}