qcom: dataipa: Replace gsi_chan_dir with ipa_usb_gsi_chan_dir from upstream

Change-Id: If0dd8a0af504f1e0526b7d8274c70192f8f8eadc
Signed-off-by: chandu078 <chandudyavanapelli03@gmail.com>
This commit is contained in:
dianlujitao
2025-03-29 16:29:06 +05:30
committed by chandu078
parent 329bc36b6f
commit 241a0b570a
13 changed files with 36 additions and 40 deletions

View File

@@ -701,7 +701,7 @@ static void gsi_process_chan(struct gsi_xfer_compl_evt *evt,
* Increment RP local only in polling context to avoid
* sys len mismatch.
*/
if (!callback || (ch_ctx->props.dir == GSI_CHAN_DIR_TO_GSI &&
if (!callback || (ch_ctx->props.dir == CHAN_DIR_TO_GSI &&
!ch_ctx->props.tx_poll))
/* the element at RP is also processed */
gsi_incr_ring_rp(&ch_ctx->ring);
@@ -724,7 +724,7 @@ static void gsi_process_chan(struct gsi_xfer_compl_evt *evt,
* channel will receive the IEOB interrupt and xfer pointer will be
* overwritten. To avoid this process all data in polling context.
*/
if (!callback || (ch_ctx->props.dir == GSI_CHAN_DIR_TO_GSI &&
if (!callback || (ch_ctx->props.dir == CHAN_DIR_TO_GSI &&
!ch_ctx->props.tx_poll)) {
ch_ctx->stats.completed++;
ch_ctx->user_data[rp_idx].valid = false;
@@ -757,7 +757,7 @@ static void gsi_process_evt_re(struct gsi_evt_ctx *ctx,
* sys len mismatch.
*/
ch_ctx = &gsi_ctx->chan[evt->chid];
if (callback && (ch_ctx->props.dir == GSI_CHAN_DIR_FROM_GSI ||
if (callback && (ch_ctx->props.dir == CHAN_DIR_FROM_GSI ||
ch_ctx->props.tx_poll))
return;
gsi_incr_ring_rp(&ctx->ring);
@@ -794,7 +794,7 @@ static void gsi_ring_chan_doorbell(struct gsi_chan_ctx *ctx)
* for TO_GSI channels the event ring doorbell is rang as part of
* interrupt handling.
*/
if (ctx->evtr && ctx->props.dir == GSI_CHAN_DIR_FROM_GSI)
if (ctx->evtr && ctx->props.dir == CHAN_DIR_FROM_GSI)
gsi_ring_evt_doorbell(ctx->evtr);
ctx->ring.wp = ctx->ring.wp_local;
@@ -3815,7 +3815,7 @@ revrfy_chnlstate:
reset_done = true;
/* workaround: reset GSI producers again */
if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI && !reset_done) {
if (ctx->props.dir == CHAN_DIR_FROM_GSI && !reset_done) {
usleep_range(GSI_RESET_WA_MIN_SLEEP, GSI_RESET_WA_MAX_SLEEP);
reset_done = true;
goto reset;
@@ -4068,7 +4068,7 @@ int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty)
spin_lock_irqsave(slock, flags);
if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI && ctx->evtr) {
if (ctx->props.dir == CHAN_DIR_FROM_GSI && ctx->evtr) {
ev_ctx = &gsi_ctx->evtr[ctx->evtr->id];
/* Read the event ring rp from DDR to avoid mismatch */
rp = ev_ctx->props.gsi_read_event_ring_rp(&ev_ctx->props,
@@ -4097,14 +4097,14 @@ int gsi_is_channel_empty(unsigned long chan_hdl, bool *is_empty)
rp_local = ctx->ring.rp_local;
}
if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI)
if (ctx->props.dir == CHAN_DIR_FROM_GSI)
*is_empty = (rp_local == rp) ? true : false;
else
*is_empty = (wp == rp) ? true : false;
spin_unlock_irqrestore(slock, flags);
if (ctx->props.dir == GSI_CHAN_DIR_FROM_GSI && ctx->evtr)
if (ctx->props.dir == CHAN_DIR_FROM_GSI && ctx->evtr)
GSIDBG("ch=%ld ev=%d RP=0x%llx WP=0x%llx RP_LOCAL=0x%llx\n",
chan_hdl, ctx->evtr->id, rp, wp, rp_local);
else

View File

@@ -18,6 +18,7 @@
#include <linux/ipc_logging.h>
#include <linux/iommu.h>
#include <linux/msi.h>
#include <linux/ipa_usb.h>
/*
* The following for adding code (ie. for EMULATION) not found on x86.
@@ -541,7 +542,7 @@ enum gsi_chan_use_db_eng {
*/
struct gsi_chan_props {
enum gsi_chan_prot prot;
enum gsi_chan_dir dir;
enum ipa_usb_gsi_chan_dir dir;
uint8_t ch_id;
unsigned long evt_ring_hdl;
enum gsi_chan_ring_elem_size re_size;

View File

@@ -8,11 +8,6 @@
#include <linux/types.h>
#include <linux/interrupt.h>
enum gsi_chan_dir {
GSI_CHAN_DIR_FROM_GSI = 0x0,
GSI_CHAN_DIR_TO_GSI = 0x1
};
/**
* @GSI_USE_PREFETCH_BUFS: Channel will use normal prefetch buffers if possible
* @GSI_ESCAPE_BUF_ONLY: Channel will always use escape buffers only

View File

@@ -1145,7 +1145,7 @@ static int ipa3_usb_request_xdci_channel(
memset(&chan_params, 0, sizeof(struct ipa_request_gsi_channel_params));
chan_params.ipa_ep_cfg.mode.mode = IPA_BASIC;
if (params->dir == GSI_CHAN_DIR_TO_GSI)
if (params->dir == CHAN_DIR_TO_GSI)
chan_params.client = IPA_CLIENT_USB_PROD;
else
chan_params.client = (params->teth_prot == IPA_USB_DIAG) ?
@@ -1153,7 +1153,7 @@ static int ipa3_usb_request_xdci_channel(
switch (params->teth_prot) {
case IPA_USB_RNDIS:
chan_params.priv = rndis_ptr->private;
if (params->dir == GSI_CHAN_DIR_FROM_GSI)
if (params->dir == CHAN_DIR_FROM_GSI)
chan_params.notify = rndis_ptr->ipa_tx_notify;
else
chan_params.notify = rndis_ptr->ipa_rx_notify;
@@ -1161,7 +1161,7 @@ static int ipa3_usb_request_xdci_channel(
break;
case IPA_USB_ECM:
chan_params.priv = ecm_ptr->private;
if (params->dir == GSI_CHAN_DIR_FROM_GSI)
if (params->dir == CHAN_DIR_FROM_GSI)
chan_params.notify = ecm_ptr->ecm_ipa_tx_dp_notify;
else
chan_params.notify = ecm_ptr->ecm_ipa_rx_dp_notify;
@@ -1243,7 +1243,7 @@ static int ipa3_usb_request_xdci_channel(
chan_params.evt_scratch.xdci.gevntcount_hi_addr =
params->gevntcount_hi_addr;
chan_params.chan_params.prot = GSI_CHAN_PROT_XDCI;
chan_params.chan_params.dir = (enum gsi_chan_dir)(params->dir);
chan_params.chan_params.dir = params->dir;
/* chan_id is set in ipa3_request_gsi_channel() */
chan_params.chan_params.re_size = GSI_CHAN_RE_SIZE_16B;
chan_params.chan_params.ring_len = params->xfer_ring_len;
@@ -1256,7 +1256,7 @@ static int ipa3_usb_request_xdci_channel(
chan_params.chan_params.use_db_eng = GSI_CHAN_DB_MODE;
chan_params.chan_params.db_in_bytes = 1;
chan_params.chan_params.max_prefetch = GSI_ONE_PREFETCH_SEG;
if (params->dir == GSI_CHAN_DIR_FROM_GSI)
if (params->dir == CHAN_DIR_FROM_GSI)
chan_params.chan_params.low_weight =
IPA_USB_DL_CHAN_LOW_WEIGHT;
else

View File

@@ -1,4 +1,4 @@
// SPDX-License-Identifier: GPL-2.0-only
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
@@ -1085,7 +1085,7 @@ int connect_ipa_to_apps(struct test_endpoint_sys *rx_ep,
memset(&rx_ep->gsi_channel_props, 0,
sizeof(rx_ep->gsi_channel_props));
rx_ep->gsi_channel_props.prot = GSI_CHAN_PROT_GPI;
rx_ep->gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
rx_ep->gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
gsi_ep_config = ipa_get_gsi_ep_info(client);
if (!gsi_ep_config) {
IPATEST_ERR("invalid gsi_ep_config\n");
@@ -1190,7 +1190,7 @@ int connect_apps_to_ipa(struct test_endpoint_sys *tx_ep,
memset(&tx_ep->gsi_channel_props, 0, sizeof(tx_ep->gsi_channel_props));
tx_ep->gsi_channel_props.prot = GSI_CHAN_PROT_GPI;
tx_ep->gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
tx_ep->gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_config = ipa_get_gsi_ep_info(client);
if (!gsi_ep_config) {
IPATEST_ERR("invalid gsi_ep_config\n");

View File

@@ -6906,7 +6906,7 @@ static int ipa_gsi_setup_transfer_ring(struct ipa3_ep_context *ep,
else
gsi_channel_props.prot = GSI_CHAN_PROT_GPI;
if (IPA_CLIENT_IS_PROD(ep->client)) {
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
if(ep->client == IPA_CLIENT_APPS_WAN_PROD ||
ep->client == IPA_CLIENT_APPS_LAN_PROD ||
ep->client == IPA_CLIENT_APPS_WAN_LOW_LAT_DATA_PROD)
@@ -6914,7 +6914,7 @@ static int ipa_gsi_setup_transfer_ring(struct ipa3_ep_context *ep,
else
gsi_channel_props.tx_poll = false;
} else {
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
if (ep->sys)
gsi_channel_props.max_re_expected = ep->sys->rx_pool_sz;
}
@@ -7370,7 +7370,7 @@ int ipa_gsi_ch20_wa(void)
memset(&gsi_channel_props, 0, sizeof(gsi_channel_props));
gsi_channel_props.prot = GSI_CHAN_PROT_GPI;
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_channel_props.evt_ring_hdl = ~0;
gsi_channel_props.re_size = GSI_CHAN_RE_SIZE_16B;
gsi_channel_props.ring_len = 4 * gsi_channel_props.re_size;

View File

@@ -358,9 +358,9 @@ static int ipa_eth_setup_rtk_gsi_channel(
memset(&gsi_channel_props, 0, sizeof(gsi_channel_props));
gsi_channel_props.prot = GSI_CHAN_PROT_RTK;
if (pipe->dir == IPA_ETH_PIPE_DIR_TX)
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
else
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_info = ipa_get_gsi_ep_info(ep->client);
if (!gsi_ep_info) {
IPAERR("Failed getting GSI EP info for client=%d\n",
@@ -648,9 +648,9 @@ static int ipa_eth_setup_aqc_gsi_channel(
memset(&gsi_channel_props, 0, sizeof(gsi_channel_props));
gsi_channel_props.prot = GSI_CHAN_PROT_AQC;
if (pipe->dir == IPA_ETH_PIPE_DIR_TX)
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
else
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_info = ipa_get_gsi_ep_info(ep->client);
if (!gsi_ep_info) {
IPAERR("Failed getting GSI EP info for client=%d\n",
@@ -779,9 +779,9 @@ static int ipa_eth_setup_ntn_gsi_channel(
memset(&gsi_channel_props, 0, sizeof(gsi_channel_props));
gsi_channel_props.prot = GSI_CHAN_PROT_NTN;
if (pipe->dir == IPA_ETH_PIPE_DIR_TX)
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
else
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_info = ipa_get_gsi_ep_info(ep->client);
if (!gsi_ep_info) {
IPAERR("Failed getting GSI EP info for client=%d\n",

View File

@@ -282,7 +282,7 @@ static int ipa_mhi_start_gsi_channel(enum ipa_client_type client,
memset(&ch_props, 0, sizeof(ch_props));
ch_props.prot = GSI_CHAN_PROT_MHI;
ch_props.dir = IPA_CLIENT_IS_PROD(client) ?
GSI_CHAN_DIR_TO_GSI : GSI_CHAN_DIR_FROM_GSI;
CHAN_DIR_TO_GSI : CHAN_DIR_FROM_GSI;
ch_props.ch_id = ep_cfg->ipa_gsi_chan_num;
ch_props.evt_ring_hdl = *params->cached_gsi_evt_ring_hdl;
ch_props.re_size = GSI_CHAN_RE_SIZE_16B;

View File

@@ -1128,7 +1128,7 @@ static int ipa_mpm_connect_mhip_gsi_pipe(enum ipa_client_type mhip_client,
/* Channel Params */
gsi_params.chan_params.prot = GSI_CHAN_PROT_MHIP;
gsi_params.chan_params.dir = IPA_CLIENT_IS_PROD(mhip_client) ?
GSI_CHAN_DIR_TO_GSI : GSI_CHAN_DIR_FROM_GSI;
CHAN_DIR_TO_GSI : CHAN_DIR_FROM_GSI;
/* chan_id is set in ipa3_request_gsi_channel() */
gsi_params.chan_params.re_size = GSI_CHAN_RE_SIZE_16B;
gsi_params.chan_params.ring_len =

View File

@@ -109,7 +109,7 @@ int ipa_qdss_conn_pipes(struct ipa_qdss_conn_in_params *in,
/* setup channel ring */
memset(&gsi_channel_props, 0, sizeof(gsi_channel_props));
gsi_channel_props.prot = GSI_CHAN_PROT_QDSS;
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_info = ipa_get_gsi_ep_info(ep_rx->client);
if (!gsi_ep_info) {

View File

@@ -1172,11 +1172,11 @@ static int ipa3_wdi2_gsi_alloc_channel_ring(
if (IPA_CLIENT_IS_PROD(client)) {
IPAERR("Client is PROD\n");
channel_props->dir = GSI_CHAN_DIR_TO_GSI;
channel_props->dir = CHAN_DIR_TO_GSI;
channel_props->re_size = GSI_CHAN_RE_SIZE_16B;
} else {
IPAERR("Client is CONS");
channel_props->dir = GSI_CHAN_DIR_FROM_GSI;
channel_props->dir = CHAN_DIR_FROM_GSI;
channel_props->re_size = GSI_CHAN_RE_SIZE_8B;
}

View File

@@ -184,9 +184,9 @@ static int ipa3_setup_wdi3_gsi_channel(u8 is_smmu_enabled,
/* setup channel ring */
if ((dir == IPA_WDI3_TX_DIR) || (dir == IPA_WDI3_TX1_DIR) ||
(dir == IPA_WDI3_TX2_DIR))
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
gsi_channel_props.dir = CHAN_DIR_FROM_GSI;
else
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
gsi_channel_props.dir = CHAN_DIR_TO_GSI;
gsi_ep_info = ipa_get_gsi_ep_info(ep->client);
if (!gsi_ep_info) {

View File

@@ -687,9 +687,9 @@ static int ipa3_wigig_config_gsi(bool Rx,
memset(&gsi_scratch, 0, sizeof(gsi_scratch));
if (Rx)
channel_props.dir = GSI_CHAN_DIR_TO_GSI;
channel_props.dir = CHAN_DIR_TO_GSI;
else
channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
channel_props.dir = CHAN_DIR_FROM_GSI;
channel_props.re_size = GSI_CHAN_RE_SIZE_16B;
channel_props.prot = GSI_CHAN_PROT_11AD;