msm: ipa: New APIs for PINE+PINE dual wifi support

Add per instance APIs to support dual wifi attach.

Change-Id: I9330382fde5e5c727dd5a619b863adbed9f0c661
Signed-off-by: Sivakanth Vaka <svaka@codeaurora.org>
Signed-off-by: Piyush Dhyani <<quic_pdhyani@quicinc.com>
This commit is contained in:
Sivakanth Vaka 2021-09-30 17:10:59 +05:30 committed by Gerrit - the friendly Code Review server
parent 7e157ef8f6
commit 5148a422d8
3 changed files with 468 additions and 4 deletions

View File

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include <linux/ipa_fmwk.h>
@ -319,6 +320,35 @@ struct ipa_fmwk_contex {
bool (*ipa_wdi_is_tx1_used)(void);
int (*ipa_wdi_get_capabilities)(struct ipa_wdi_capabilities_out_params *out);
int (*ipa_wdi_init_per_inst)(struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out);
int (*ipa_wdi_cleanup_per_inst)(u32 hdl);
int (*ipa_wdi_reg_intf_per_inst)(
struct ipa_wdi_reg_intf_in_params *in);
int (*ipa_wdi_dereg_intf_per_inst)(const char *netdev_name, u32 hdl);
int (*ipa_wdi_conn_pipes_per_inst)(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out);
int (*ipa_wdi_disconn_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_enable_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_disable_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_set_perf_profile_per_inst)(u32 hdl, struct ipa_wdi_perf_profile *profile);
int (*ipa_wdi_create_smmu_mapping_per_inst)(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info);
int (*ipa_wdi_release_smmu_mapping_per_inst)(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info);
/* ipa_gsb APIs*/
int (*ipa_bridge_init)(struct ipa_bridge_init_params *params, u32 *hdl);
@ -1256,9 +1286,21 @@ int ipa_fmwk_register_ipa_wdi3(const struct ipa_wdi3_data *in)
|| ipa_fmwk_ctx->ipa_wdi_create_smmu_mapping
|| ipa_fmwk_ctx->ipa_wdi_release_smmu_mapping
|| ipa_fmwk_ctx->ipa_wdi_get_stats
|| ipa_fmwk_ctx->ipa_wdi_sw_stats
|| ipa_fmwk_ctx->ipa_get_wdi_version
|| ipa_fmwk_ctx->ipa_wdi_is_tx1_used) {
|| ipa_fmwk_ctx->ipa_wdi_sw_stats
|| ipa_fmwk_ctx->ipa_wdi_is_tx1_used
|| ipa_fmwk_ctx->ipa_wdi_get_capabilities
|| ipa_fmwk_ctx->ipa_wdi_init_per_inst
|| ipa_fmwk_ctx->ipa_wdi_cleanup_per_inst
|| ipa_fmwk_ctx->ipa_wdi_reg_intf_per_inst
|| ipa_fmwk_ctx->ipa_wdi_dereg_intf_per_inst
|| ipa_fmwk_ctx->ipa_wdi_conn_pipes_per_inst
|| ipa_fmwk_ctx->ipa_wdi_disconn_pipes_per_inst
|| ipa_fmwk_ctx->ipa_wdi_enable_pipes_per_inst
|| ipa_fmwk_ctx->ipa_wdi_disable_pipes_per_inst
|| ipa_fmwk_ctx->ipa_wdi_set_perf_profile_per_inst
|| ipa_fmwk_ctx->ipa_wdi_create_smmu_mapping_per_inst
|| ipa_fmwk_ctx->ipa_wdi_release_smmu_mapping_per_inst) {
pr_err("ipa_wdi3 APIs were already initialized\n");
return -EPERM;
}
@ -1281,7 +1323,26 @@ int ipa_fmwk_register_ipa_wdi3(const struct ipa_wdi3_data *in)
ipa_fmwk_ctx->ipa_wdi_sw_stats = in->ipa_wdi_sw_stats;
ipa_fmwk_ctx->ipa_get_wdi_version = in->ipa_get_wdi_version;
ipa_fmwk_ctx->ipa_wdi_is_tx1_used = in->ipa_wdi_is_tx1_used;
ipa_fmwk_ctx->ipa_wdi_get_capabilities = in->ipa_wdi_get_capabilities;
ipa_fmwk_ctx->ipa_wdi_init_per_inst = in->ipa_wdi_init_per_inst;
ipa_fmwk_ctx->ipa_wdi_cleanup_per_inst = in->ipa_wdi_cleanup_per_inst;
ipa_fmwk_ctx->ipa_wdi_reg_intf_per_inst = in->ipa_wdi_reg_intf_per_inst;
ipa_fmwk_ctx->ipa_wdi_dereg_intf_per_inst =
in->ipa_wdi_dereg_intf_per_inst;
ipa_fmwk_ctx->ipa_wdi_conn_pipes_per_inst =
in->ipa_wdi_conn_pipes_per_inst;
ipa_fmwk_ctx->ipa_wdi_disconn_pipes_per_inst =
in->ipa_wdi_disconn_pipes_per_inst;
ipa_fmwk_ctx->ipa_wdi_enable_pipes_per_inst =
in->ipa_wdi_enable_pipes_per_inst;
ipa_fmwk_ctx->ipa_wdi_disable_pipes_per_inst =
in->ipa_wdi_disable_pipes_per_inst;
ipa_fmwk_ctx->ipa_wdi_set_perf_profile_per_inst =
in->ipa_wdi_set_perf_profile_per_inst;
ipa_fmwk_ctx->ipa_wdi_create_smmu_mapping_per_inst =
in->ipa_wdi_create_smmu_mapping_per_inst;
ipa_fmwk_ctx->ipa_wdi_release_smmu_mapping_per_inst =
in->ipa_wdi_release_smmu_mapping_per_inst;
pr_info("ipa_wdi3 registered successfully\n");
return 0;
@ -1431,6 +1492,139 @@ int ipa_wdi_release_smmu_mapping(u32 num_buffers,
}
EXPORT_SYMBOL(ipa_wdi_release_smmu_mapping);
int ipa_wdi_get_capabilities(struct ipa_wdi_capabilities_out_params *out)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_get_capabilities, out);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_get_capabilities);
int ipa_wdi_init_per_inst(struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_init_per_inst,
in, out);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_init_per_inst);
int ipa_wdi_cleanup_per_inst(u32 hdl)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_cleanup_per_inst, hdl);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_cleanup_per_inst);
int ipa_wdi_reg_intf_per_inst(
struct ipa_wdi_reg_intf_in_params *in)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_reg_intf_per_inst,
in);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_reg_intf_per_inst);
int ipa_wdi_dereg_intf_per_inst(const char *netdev_name, u32 hdl)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_dereg_intf_per_inst,
netdev_name, hdl);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_dereg_intf_per_inst);
int ipa_wdi_conn_pipes_per_inst(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_conn_pipes_per_inst,
in, out);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_conn_pipes_per_inst);
int ipa_wdi_disconn_pipes_per_inst(u32 hdl)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_disconn_pipes_per_inst, hdl);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_disconn_pipes_per_inst);
int ipa_wdi_enable_pipes_per_inst(u32 hdl)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_enable_pipes_per_inst, hdl);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_enable_pipes_per_inst);
int ipa_wdi_disable_pipes_per_inst(u32 hdl)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_disable_pipes_per_inst, hdl);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_disable_pipes_per_inst);
int ipa_wdi_set_perf_profile_per_inst(u32 hdl,
struct ipa_wdi_perf_profile *profile)
{
int ret;
IPA_FMWK_DISPATCH_RETURN(ipa_wdi_set_perf_profile_per_inst,
hdl, profile);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_set_perf_profile_per_inst);
int ipa_wdi_create_smmu_mapping_per_inst(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
int ret;
IPA_FMWK_DISPATCH_RETURN_DP(ipa_wdi_create_smmu_mapping_per_inst,
hdl, num_buffers, info);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_create_smmu_mapping_per_inst);
int ipa_wdi_release_smmu_mapping_per_inst(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
int ret;
IPA_FMWK_DISPATCH_RETURN_DP(ipa_wdi_release_smmu_mapping_per_inst,
hdl, num_buffers, info);
return ret;
}
EXPORT_SYMBOL(ipa_wdi_release_smmu_mapping_per_inst);
int ipa_wdi_get_stats(struct IpaHwStatsWDIInfoData_t *stats)
{
int ret;

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2018 - 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _IPA_FMWK_H_
@ -206,6 +207,35 @@ struct ipa_wdi3_data {
int (*ipa_get_wdi_version)(void);
bool (*ipa_wdi_is_tx1_used)(void);
int (*ipa_wdi_get_capabilities)(struct ipa_wdi_capabilities_out_params *out);
int (*ipa_wdi_init_per_inst)(struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out);
int (*ipa_wdi_cleanup_per_inst)(u32 hdl);
int (*ipa_wdi_reg_intf_per_inst)(
struct ipa_wdi_reg_intf_in_params *in);
int (*ipa_wdi_dereg_intf_per_inst)(const char *netdev_name, u32 hdl);
int (*ipa_wdi_conn_pipes_per_inst)(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out);
int (*ipa_wdi_disconn_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_enable_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_disable_pipes_per_inst)(u32 hdl);
int (*ipa_wdi_set_perf_profile_per_inst)(u32 hdl, struct ipa_wdi_perf_profile *profile);
int (*ipa_wdi_create_smmu_mapping_per_inst)(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info);
int (*ipa_wdi_release_smmu_mapping_per_inst)(u32 hdl, u32 num_buffers,
struct ipa_wdi_buffer_info *info);
};
struct ipa_qdss_data {

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2018 - 2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _IPA_WDI3_H_
@ -19,15 +20,19 @@
#define IPA_WDI_MAX_SUPPORTED_SYS_PIPE 3
typedef u32 ipa_wdi_hdl_t;
enum ipa_wdi_version {
IPA_WDI_1,
IPA_WDI_2,
IPA_WDI_3
IPA_WDI_3,
IPA_WDI_VER_MAX
};
#define IPA_WDI3_TX_DIR 1
#define IPA_WDI3_TX1_DIR 2
#define IPA_WDI3_RX_DIR 3
#define IPA_WDI_INST_MAX (2)
/**
* struct ipa_wdi_init_in_params - wdi init input parameters
@ -43,6 +48,7 @@ struct ipa_wdi_init_in_params {
#ifdef IPA_WAN_MSG_IPv6_ADDR_GW_LEN
ipa_wdi_meter_notifier_cb wdi_notify;
#endif
int inst_id;
};
/**
@ -57,6 +63,7 @@ struct ipa_wdi_init_out_params {
bool is_uC_ready;
bool is_smmu_enabled;
bool is_over_gsi;
ipa_wdi_hdl_t hdl;
};
/**
@ -93,6 +100,7 @@ struct ipa_wdi_reg_intf_in_params {
u32 meta_data;
u32 meta_data_mask;
u8 is_tx1_used;
ipa_wdi_hdl_t hdl;
};
/**
@ -208,6 +216,7 @@ struct ipa_wdi_conn_in_params {
struct ipa_wdi_pipe_setup_info tx;
struct ipa_wdi_pipe_setup_info_smmu tx_smmu;
} u_tx1;
ipa_wdi_hdl_t hdl;
};
/**
@ -236,8 +245,30 @@ struct ipa_wdi_perf_profile {
u32 max_supported_bw_mbps;
};
/**
* struct ipa_wdi_capabilities - wdi capability parameters
*
* @num_of_instances: Number of WLAN instances supported.
*/
struct ipa_wdi_capabilities_out_params {
u8 num_of_instances;
};
#if IS_ENABLED(CONFIG_IPA3)
/**
* ipa_wdi_get_capabilities - Client should call this function to
* know the WDI capabilities
*
* Note: Should not be called from atomic context and only
* after checking IPA readiness using ipa_register_ipa_ready_cb()
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_get_capabilities(
struct ipa_wdi_capabilities_out_params *out);
/**
* ipa_wdi_init - Client should call this function to
* init WDI IPA offload data path
@ -262,6 +293,18 @@ int ipa_get_wdi_version(void);
*/
bool ipa_wdi_is_tx1_used(void);
/**
* ipa_wdi_init_per_inst - Client should call this function to
* init WDI IPA offload data path
*
* Note: Should not be called from atomic context and only
* after checking IPA readiness using ipa_register_ipa_ready_cb()
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_init_per_inst(struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out);
/**
* ipa_wdi_cleanup - Client should call this function to
* clean up WDI IPA offload data path
@ -270,6 +313,17 @@ bool ipa_wdi_is_tx1_used(void);
*/
int ipa_wdi_cleanup(void);
/**
* ipa_wdi_cleanup_per_inst - Client should call this function to
* clean up WDI IPA offload data path
*
* @hdl: hdl to wdi client
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_cleanup_per_inst(ipa_wdi_hdl_t hdl);
/**
* ipa_wdi_reg_intf - Client should call this function to
* register interface
@ -281,6 +335,17 @@ int ipa_wdi_cleanup(void);
int ipa_wdi_reg_intf(
struct ipa_wdi_reg_intf_in_params *in);
/**
* ipa_wdi_reg_intf_per_inst - Client should call this function to
* register interface
*
* Note: Should not be called from atomic context
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_reg_intf_per_inst(
struct ipa_wdi_reg_intf_in_params *in);
/**
* ipa_wdi_dereg_intf - Client Driver should call this
* function to deregister before unload and after disconnect
@ -289,6 +354,14 @@ int ipa_wdi_reg_intf(
*/
int ipa_wdi_dereg_intf(const char *netdev_name);
/**
* ipa_wdi_dereg_intf_per_inst - Client Driver should call this
* function to deregister before unload and after disconnect
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_dereg_intf_per_inst(const char *netdev_name, ipa_wdi_hdl_t hdl);
/**
* ipa_wdi_conn_pipes - Client should call this
* function to connect pipes
@ -303,6 +376,20 @@ int ipa_wdi_dereg_intf(const char *netdev_name);
int ipa_wdi_conn_pipes(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out);
/**
* ipa_wdi_conn_pipes_per_inst - Client should call this
* function to connect pipes
*
* @in: [in] input parameters from client
* @out: [out] output params to client
*
* Note: Should not be called from atomic context
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_conn_pipes_per_inst(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out);
/**
* ipa_wdi_disconn_pipes() - Client should call this
* function to disconnect pipes
@ -313,6 +400,17 @@ int ipa_wdi_conn_pipes(struct ipa_wdi_conn_in_params *in,
*/
int ipa_wdi_disconn_pipes(void);
/**
* ipa_wdi_disconn_pipes_per_inst() - Client should call this
* function to disconnect pipes
*
* @hdl: hdl to wdi client
* Note: Should not be called from atomic context
*
* Returns: 0 on success, negative on failure
*/
int ipa_wdi_disconn_pipes_per_inst(ipa_wdi_hdl_t hdl);
/**
* ipa_wdi_enable_pipes() - Client should call this
* function to enable IPA offload data path
@ -323,6 +421,17 @@ int ipa_wdi_disconn_pipes(void);
*/
int ipa_wdi_enable_pipes(void);
/**
* ipa_wdi_enable_pipes_per_inst() - Client should call this
* function to enable IPA offload data path
*
* @hdl: hdl to wdi client
* Note: Should not be called from atomic context
*
* Returns: 0 on success, negative on failure
*/
int ipa_wdi_enable_pipes_per_inst(ipa_wdi_hdl_t hdl);
/**
* ipa_wdi_disable_pipes() - Client should call this
* function to disable IPA offload data path
@ -333,6 +442,17 @@ int ipa_wdi_enable_pipes(void);
*/
int ipa_wdi_disable_pipes(void);
/**
* ipa_wdi_disable_pipes_per_inst() - Client should call this
* function to disable IPA offload data path
*
* @hdl: hdl to wdi client
* Note: Should not be called from atomic context
*
* Returns: 0 on success, negative on failure
*/
int ipa_wdi_disable_pipes_per_inst(ipa_wdi_hdl_t hdl);
/**
* ipa_wdi_set_perf_profile() - Client should call this function to
* set IPA clock bandwidth based on data rates
@ -343,6 +463,18 @@ int ipa_wdi_disable_pipes(void);
*/
int ipa_wdi_set_perf_profile(struct ipa_wdi_perf_profile *profile);
/**
* ipa_wdi_set_perf_profile_per_inst() - Client should call this function to
* set IPA clock bandwidth based on data rates
*
* @hdl: hdl to wdi client
* @profile: [in] BandWidth profile to use
*
* Returns: 0 on success, negative on failure
*/
int ipa_wdi_set_perf_profile_per_inst(ipa_wdi_hdl_t hdl,
struct ipa_wdi_perf_profile *profile);
/**
* ipa_wdi_create_smmu_mapping() - Create smmu mapping
*
@ -353,6 +485,17 @@ int ipa_wdi_set_perf_profile(struct ipa_wdi_perf_profile *profile);
int ipa_wdi_create_smmu_mapping(u32 num_buffers,
struct ipa_wdi_buffer_info *info);
/**
* ipa_wdi_create_smmu_mapping_per_inst() - Create smmu mapping
*
* @hdl: hdl to wdi client
* @num_buffers: number of buffers
* @info: wdi buffer info
*/
int ipa_wdi_create_smmu_mapping_per_inst(ipa_wdi_hdl_t hdl,
u32 num_buffers,
struct ipa_wdi_buffer_info *info);
/**
* ipa_wdi_release_smmu_mapping() - Release smmu mapping
*
@ -363,6 +506,18 @@ int ipa_wdi_create_smmu_mapping(u32 num_buffers,
int ipa_wdi_release_smmu_mapping(u32 num_buffers,
struct ipa_wdi_buffer_info *info);
/**
* ipa_wdi_release_smmu_mapping_per_inst() - Release smmu mapping
*
* @hdl: hdl to wdi client
* @num_buffers: number of buffers
*
* @info: wdi buffer info
*/
int ipa_wdi_release_smmu_mapping_per_inst(ipa_wdi_hdl_t hdl,
u32 num_buffers,
struct ipa_wdi_buffer_info *info);
/**
* ipa_wdi_get_stats() - Query WDI statistics
* @stats: [inout] stats blob from client populated by driver
@ -399,12 +554,34 @@ int ipa_wdi_sw_stats(struct ipa_wdi_tx_info *info);
#else /* IS_ENABLED(CONFIG_IPA3) */
/**
* ipa_wdi_get_capabilities - Client should call this function to
* know the WDI capabilities
*
* Note: Should not be called from atomic context and only
* after checking IPA readiness using ipa_register_ipa_ready_cb()
*
* @Return 0 on success, negative on failure
*/
int ipa_wdi_get_capabilities(
struct ipa_wdi_capabilities_out_params *out)
{
return -EPERM;
}
static inline int ipa_wdi_init(struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out)
{
return -EPERM;
}
static inline int ipa_wdi_init_per_inst(
struct ipa_wdi_init_in_params *in,
struct ipa_wdi_init_out_params *out)
{
return -EPERM;
}
static inline int ipa_get_wdi_version(void)
{
return -EPERM;
@ -420,56 +597,119 @@ static inline int ipa_wdi_cleanup(void)
return -EPERM;
}
static inline int ipa_wdi_cleanup_per_inst(ipa_wdi_hdl_t hdl)
{
return -EPERM;
}
static inline int ipa_wdi_reg_intf(
struct ipa_wdi_reg_intf_in_params *in)
{
return -EPERM;
}
static inline int ipa_wdi_reg_intf_per_inst(
struct ipa_wdi_reg_intf_in_params *in)
{
return -EPERM;
}
static inline int ipa_wdi_dereg_intf(const char *netdev_name)
{
return -EPERM;
}
static inline int ipa_wdi_dereg_intf_per_inst(const char *netdev_name,
ipa_wdi_hdl_t hdl)
{
return -EPERM;
}
static inline int ipa_wdi_conn_pipes(struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out)
{
return -EPERM;
}
static inline int ipa_wdi_conn_pipes_per_inst(
struct ipa_wdi_conn_in_params *in,
struct ipa_wdi_conn_out_params *out)
{
return -EPERM;
}
static inline int ipa_wdi_disconn_pipes(void)
{
return -EPERM;
}
static inline int ipa_wdi_disconn_pipes_per_inst(ipa_wdi_hdl_t hdl)
{
return -EPERM;
}
static inline int ipa_wdi_enable_pipes(void)
{
return -EPERM;
}
static inline int ipa_wdi_enable_pipes_per_inst(ipa_wdi_hdl_t hdl)
{
return -EPERM;
}
static inline int ipa_wdi_disable_pipes(void)
{
return -EPERM;
}
static inline int ipa_wdi_disable_pipes_per_inst(ipa_wdi_hdl_t hdl)
{
return -EPERM;
}
static inline int ipa_wdi_set_perf_profile(
struct ipa_wdi_perf_profile *profile)
{
return -EPERM;
}
static inline int ipa_wdi_set_perf_profile_per_inst(
ipa_wdi_hdl_t hdl,
struct ipa_wdi_perf_profile *profile)
{
return -EPERM;
}
static inline int ipa_wdi_create_smmu_mapping(u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
return -EPERM;
}
static inline int ipa_wdi_create_smmu_mapping_per_inst(
ipa_wdi_hdl_t hdl,
u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
return -EPERM;
}
static inline int ipa_wdi_release_smmu_mapping(u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
return -EPERM;
}
static inline int ipa_wdi_release_smmu_mapping_per_inst(
ipa_wdi_hdl_t hdl,
u32 num_buffers,
struct ipa_wdi_buffer_info *info)
{
return -EPERM;
}
static inline int ipa_wdi_get_stats(struct IpaHwStatsWDIInfoData_t *stats)
{
return -EPERM;