mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
Merge f875c2c680 on remote branch
Change-Id: Ia2471b9b941ff3676fcc298da3707f54bdc33c80
This commit is contained in:
commit
c6e5a9590d
4 changed files with 56 additions and 22 deletions
|
|
@ -598,8 +598,7 @@ static void gsi_process_evt_re(struct gsi_evt_ctx *ctx,
|
|||
/* RMB before reading event ring shared b/w IPA h/w & driver
|
||||
* ordering between IPA h/w store and CPU load
|
||||
*/
|
||||
if (callback)
|
||||
dma_rmb();
|
||||
dma_rmb();
|
||||
evt = (struct gsi_xfer_compl_evt *)(ctx->ring.base_va +
|
||||
ctx->ring.rp_local - ctx->ring.base);
|
||||
gsi_process_chan(evt, notify, callback);
|
||||
|
|
|
|||
|
|
@ -482,20 +482,44 @@ static void gsi_dbg_update_ch_dp_stats(struct gsi_chan_ctx *ctx)
|
|||
int ee = gsi_ctx->per.ee;
|
||||
uint16_t used_hw;
|
||||
|
||||
rp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(ctx->props.ch_id, ee));
|
||||
rp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(ctx->props.ch_id, ee)))
|
||||
<< 32;
|
||||
if ( ctx->props.prot == GSI_CHAN_PROT_WDI2) {
|
||||
rp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(ctx->props.ch_id, gsi_ctx->per.ee)) &
|
||||
0x0000ffff;
|
||||
|
||||
wp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(ctx->props.ch_id, ee));
|
||||
wp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(ctx->props.ch_id, ee)))
|
||||
<< 32;
|
||||
wp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(ctx->props.ch_id,
|
||||
gsi_ctx->per.ee));
|
||||
|
||||
start_hw = gsi_find_idx_from_addr(&ctx->ring, rp_hw);
|
||||
end_hw = gsi_find_idx_from_addr(&ctx->ring, wp_hw);
|
||||
start_hw = rp_hw / ctx->ring.elem_sz;
|
||||
end_hw = wp_hw / ctx->ring.elem_sz;
|
||||
} else if ( ctx->props.prot == GSI_CHAN_PROT_WDI3) {
|
||||
rp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(ctx->props.ch_id, gsi_ctx->per.ee)) &
|
||||
0x000fffff;
|
||||
|
||||
wp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_RE_FETCH_WRITE_PTR_OFFS(ctx->props.ch_id,
|
||||
gsi_ctx->per.ee));
|
||||
|
||||
start_hw = rp_hw / ctx->ring.elem_sz;
|
||||
end_hw = wp_hw / ctx->ring.elem_sz;
|
||||
} else {
|
||||
rp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_4_OFFS(ctx->props.ch_id, ee));
|
||||
rp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_5_OFFS(ctx->props.ch_id, ee)))
|
||||
<< 32;
|
||||
|
||||
wp_hw = gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_6_OFFS(ctx->props.ch_id, ee));
|
||||
wp_hw |= ((uint64_t)gsi_readl(gsi_ctx->base +
|
||||
GSI_EE_n_GSI_CH_k_CNTXT_7_OFFS(ctx->props.ch_id, ee)))
|
||||
<< 32;
|
||||
|
||||
start_hw = gsi_find_idx_from_addr(&ctx->ring, rp_hw);
|
||||
end_hw = gsi_find_idx_from_addr(&ctx->ring, wp_hw);
|
||||
}
|
||||
|
||||
if (end_hw >= start_hw)
|
||||
used_hw = end_hw - start_hw;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <asm/barrier.h>
|
||||
|
|
@ -62,11 +62,19 @@ int ipa3_enable_data_path(u32 clnt_hdl)
|
|||
* on other end from IPA hw.
|
||||
*/
|
||||
if ((ep->client == IPA_CLIENT_USB_DPL_CONS) ||
|
||||
(ep->client == IPA_CLIENT_MHI_DPL_CONS))
|
||||
(ep->client == IPA_CLIENT_MHI_DPL_CONS)) {
|
||||
holb_cfg.tmr_val = 0;
|
||||
holb_cfg.en = IPA_HOLB_TMR_EN;
|
||||
else
|
||||
} else if (ipa3_ctx->ipa_hw_type == IPA_HW_v4_11 &&
|
||||
(ep->client == IPA_CLIENT_WLAN1_CONS ||
|
||||
ep->client == IPA_CLIENT_USB_CONS)) {
|
||||
holb_cfg.en = IPA_HOLB_TMR_EN;
|
||||
holb_cfg.tmr_val = IPA_HOLB_TMR_VAL_4_5;
|
||||
}
|
||||
else {
|
||||
holb_cfg.en = IPA_HOLB_TMR_DIS;
|
||||
holb_cfg.tmr_val = 0;
|
||||
holb_cfg.tmr_val = 0;
|
||||
}
|
||||
res = ipa3_cfg_ep_holb(clnt_hdl, &holb_cfg);
|
||||
}
|
||||
|
||||
|
|
@ -1560,8 +1568,6 @@ int ipa3_xdci_disconnect(u32 clnt_hdl, bool should_force_clear, u32 qmi_req_id)
|
|||
if (!ep->keep_ipa_awake)
|
||||
IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(clnt_hdl));
|
||||
|
||||
ipa3_disable_data_path(clnt_hdl);
|
||||
|
||||
if (!IPA_CLIENT_IS_CONS(ep->client)) {
|
||||
IPADBG("Stopping PROD channel - hdl=%d clnt=%d\n",
|
||||
clnt_hdl, ep->client);
|
||||
|
|
@ -1585,6 +1591,7 @@ int ipa3_xdci_disconnect(u32 clnt_hdl, bool should_force_clear, u32 qmi_req_id)
|
|||
goto stop_chan_fail;
|
||||
}
|
||||
}
|
||||
ipa3_disable_data_path(clnt_hdl);
|
||||
IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl));
|
||||
|
||||
IPADBG("exit\n");
|
||||
|
|
|
|||
|
|
@ -2095,6 +2095,8 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
/* Get MTU */
|
||||
case RMNET_IOCTL_GET_MTU:
|
||||
mux_channel = rmnet_ipa3_ctx->mux_channel;
|
||||
ext_ioctl_data.u.mtu_params.if_name
|
||||
[IFNAMSIZ-1] = '\0';
|
||||
rmnet_index =
|
||||
find_vchannel_name_index(ext_ioctl_data.u.mtu_params.if_name);
|
||||
|
||||
|
|
@ -2115,6 +2117,8 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
/* Set MTU */
|
||||
case RMNET_IOCTL_SET_MTU:
|
||||
mux_channel = rmnet_ipa3_ctx->mux_channel;
|
||||
ext_ioctl_data.u.mtu_params.if_name
|
||||
[IFNAMSIZ-1] = '\0';
|
||||
rmnet_index =
|
||||
find_vchannel_name_index(ext_ioctl_data.u.mtu_params.if_name);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue