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:
parent
7e157ef8f6
commit
5148a422d8
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user