Skip to content
This repository has been archived by the owner on Jul 7, 2021. It is now read-only.

Commit

Permalink
Merge tag 'LA.UM.8.1.r1-15100-sm8150.0' into neutrino-msm-hotdogb-4.14
Browse files Browse the repository at this point in the history
"LA.UM.8.1.r1-15100-sm8150.0"

* tag 'LA.UM.8.1.r1-15100-sm8150.0':
  msm: kgsl: Do not enable adreno core features by default
  msm:ipa:mhi: send qmi endp_desc notification to Q6
  msm: ipa4: fix the IPA_CLIENT_IS_MHI macro
  mhi: core: improve bandwidth switch events processing
  msm:ipa:change IPA client mapping for mhi protocol
  msm: camera: isp: Change state of all CID resource to RESERVE on deinit
  msm: camera: isp: Fix IRQ delay handling logic
  UPSTREAM: ath10k: re-enable TXQs for all devices
  UPSTREAM: ath10k: use 64-bit crash dump timestamps
  UPSTREAM: ath10k: move spectral scan support under a separate config symbol
  msm: mhi_dev: Remove MHI hardware channel to IPA GSI mapping
  msm: mhi_dev: Fix maximum number of HW channels
  mhi: core: Fix out of bound channel id handling
  mhi: core: Read transfer length from an event properly
  ipa3:msm: Added debugfs support for drop packet stats
  msm: ADSPRPC: Fix to avoid race condition and use after free
  msm: camera: isp: variable should be accessed only if match is found
  usb: gadget: increase write buffer size
  mhi: core: update debugfs entries to include new entries
  mhi: core: Check for pm error state before asserting dev wake
  USB: gadget: qti: Add qti_usb gadget
  Revert "msm: camera: Update CSIPHY/CSID v3.5 registers"
  ARM: dts: msm: Add qcom_gadget node for sdxprairie
  ARM: dts: msm: Add property iommu-geometry for CNSS
  defconfig: msm: Enable QTI composite gadget for sdxprairie

[@0ctobot: Reapply 6d738f8 ("clk: qcom: mdss: Omit support for unused PLLs"),
partially reverted via LA.UM.8.9.r1-09300-SM6xx.0 merge]
Signed-off-by: Adam W. Willis <return.of.octobot@gmail.com>

Conflicts:
	drivers/gpu/msm/adreno.c
	drivers/media/platform/msm/camera/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.c
	drivers/media/platform/msm/camera/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_core.h
	drivers/net/wireless/ath/ath10k/debug.c
  • Loading branch information
0ctobot committed Jun 7, 2020
2 parents f6d6a67 + 2fcb59b commit c99bd3c
Show file tree
Hide file tree
Showing 29 changed files with 962 additions and 91 deletions.
3 changes: 3 additions & 0 deletions Documentation/devicetree/bindings/cnss/cnss-wlan.txt
Expand Up @@ -79,6 +79,9 @@ Optional properties:
- qcom,set-wlaon-pwr-ctrl: Boolean property to indicate if set
WLAON_QFPROM_PWR_CTRL_REG register during power on
and off sequences.
- qcom,iommu-geometry: Boolean property to indicate if need to enable
DOMAIN_ATTR_GEOMETRY domain attribute. Only used
when DOMAIN_ATTR_FAST set.

List of chip specific sub nodes:
- chip_cfg@X: represent chip specific configurations
Expand Down
22 changes: 22 additions & 0 deletions Documentation/devicetree/bindings/usb/qcom,usb-gadget.txt
@@ -0,0 +1,22 @@
Qualcomm Technologies, Inc's USB Gadget

Required properties:
- compatible: Should be "qcom,usb-gadget".
- qcom,composition: List of configurations where each is separated by '|'.
And each configuration has comma separated list of functions
specified as: <f1_name>.<f1_instance_name>,<f2_name>....
- qcom,vid: VendorId to be used by composite device.
- qcom,pid: ProductId to be used by composite device.

Optional properties:
- qcom,class: Class of composite device.
- qcom,subclass: SubClass of composite device.
- qcom,protocol: Protocol of composite device.

Examples:
usb_gadget {
compatible = "qcom,usb-gadget";
qcom,composition = "rndis.rndis|ecm.ecm";
qcom,vid = <0x05c6>;
qcom,pid = <0x9057>;
};
1 change: 1 addition & 0 deletions arch/arm/configs/vendor/sdxprairie-perf_defconfig
Expand Up @@ -327,6 +327,7 @@ CONFIG_USB_CONFIGFS_F_DIAG=y
CONFIG_USB_CONFIGFS_F_CDEV=y
CONFIG_USB_CONFIGFS_F_GSI=y
CONFIG_USB_CONFIGFS_F_QDSS=y
CONFIG_USB_G_QTI=y
CONFIG_USB_PD_POLICY=y
CONFIG_QPNP_USB_PDPHY=y
CONFIG_MMC=y
Expand Down
1 change: 1 addition & 0 deletions arch/arm/configs/vendor/sdxprairie_defconfig
Expand Up @@ -331,6 +331,7 @@ CONFIG_USB_CONFIGFS_F_DIAG=y
CONFIG_USB_CONFIGFS_F_CDEV=y
CONFIG_USB_CONFIGFS_F_GSI=y
CONFIG_USB_CONFIGFS_F_QDSS=y
CONFIG_USB_G_QTI=y
CONFIG_USB_PD_POLICY=y
CONFIG_QPNP_USB_PDPHY=y
CONFIG_MMC=y
Expand Down
70 changes: 69 additions & 1 deletion arch/arm64/boot/dts/qcom/sdxprairie-usb.dtsi
@@ -1,4 +1,4 @@
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
Expand Down Expand Up @@ -286,3 +286,71 @@
reset-names = "phy_reset", "phy_phy_reset";
};
};

/ {
qcom_gadget {
compatible = "qcom,usb-gadget";
qcom,vid = <0x05c6>;

composition1 {
qcom,pid = <0x901c>;
qcom,composition = "diag.diag,uac2.0";
};

composition2 {
qcom,pid = <0x9021>;
qcom,composition = "diag.diag,gsi.rmnet";
};

composition3 {
qcom,pid = <0x904a>;
qcom,composition = "diag.diag,qdss.qdss";
};

composition4 {
qcom,pid = <0x9057>;
qcom,composition = "gsi.rndis|gsi.ecm";
};

composition5 {
qcom,pid = <0x905b>;
qcom,composition = "gsi.mbim";
qcom,bmAttributes = <0xa0>;
};

composition6 {
qcom,pid = <0x9063>;
qcom,composition = "gsi.rndis|gsi.ecm|gsi.mbim";
qcom,bmAttributes = <0xa0>;
};

composition7 {
qcom,pid = <0x9067>;
qcom,composition = "mass_storage.0,gsi.rmnet|mass_storage.1,gsi.mbim";
qcom,bmAttributes = <0xa0>;
};

composition8 {
qcom,pid = <0x90b1>;
qcom,composition = "gsi.ecm";
qcom,bmAttributes = <0xa0>;
};

composition9 {
qcom,pid = <0x90d6>;
qcom,composition = "diag.diag,gsi.mbim,gsi.gps,cser.dun.0";
qcom,bmAttributes = <0xa0>;
};

composition10 {
qcom,pid = <0x90e2>;
qcom,composition = "gsi.mbim,gsi.gps";
qcom,bmAttributes = <0xa0>;
};

composition11 {
qcom,pid = <0xf000>;
qcom,composition = "mass_storage.0";
};
};
};
1 change: 1 addition & 0 deletions arch/arm64/boot/dts/qcom/sdxprairie.dtsi
Expand Up @@ -1067,6 +1067,7 @@
qcom,wlan-ramdump-dynamic = <0x400000>;
qcom,smmu-s1-enable;
qcom,set-wlaon-pwr-ctrl;
qcom,iommu-geometry;

mhi,max-channels = <30>;
mhi,buffer-len = <0x8000>;
Expand Down
73 changes: 36 additions & 37 deletions drivers/bus/mhi/core/mhi_main.c
Expand Up @@ -1078,7 +1078,9 @@ static int parse_rsc_event(struct mhi_controller *mhi_cntrl,

result.transaction_status = (ev_code == MHI_EV_CC_OVERFLOW) ?
-EOVERFLOW : 0;
result.bytes_xferd = xfer_len;

/* truncate to buf len if xfer_len is larger */
result.bytes_xferd = min_t(u16, xfer_len, buf_info->len);
result.buf_addr = buf_info->cb_buf;
result.dir = mhi_chan->dir;

Expand Down Expand Up @@ -1314,7 +1316,7 @@ int mhi_process_data_event_ring(struct mhi_controller *mhi_cntrl,
chan = MHI_TRE_GET_EV_CHID(local_rp);
if (chan >= mhi_cntrl->max_chan) {
MHI_ERR("invalid channel id %u\n", chan);
continue;
goto next_er_element;
}
mhi_chan = &mhi_cntrl->mhi_chan[chan];

Expand All @@ -1326,6 +1328,7 @@ int mhi_process_data_event_ring(struct mhi_controller *mhi_cntrl,
event_quota--;
}

next_er_element:
mhi_recycle_ev_ring_element(mhi_cntrl, ev_ring);
local_rp = ev_ring->rp;
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
Expand Down Expand Up @@ -1437,36 +1440,26 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl,
struct mhi_link_info link_info, *cur_info = &mhi_cntrl->mhi_link_info;
int result, ret = 0;

if (unlikely(MHI_EVENT_ACCESS_INVALID(mhi_cntrl->pm_state))) {
MHI_LOG("No EV access, PM_STATE:%s\n",
to_mhi_pm_state_str(mhi_cntrl->pm_state));
ret = -EIO;
goto exit_no_lock;
}

ret = __mhi_device_get_sync(mhi_cntrl);
if (ret)
goto exit_no_lock;

mutex_lock(&mhi_cntrl->pm_mutex);

spin_lock_bh(&mhi_event->lock);
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);

if (ev_ring->rp == dev_rp) {
spin_unlock_bh(&mhi_event->lock);
read_lock_bh(&mhi_cntrl->pm_lock);
mhi_cntrl->wake_put(mhi_cntrl, false);
read_unlock_bh(&mhi_cntrl->pm_lock);
MHI_VERB("no pending event found\n");
goto exit_bw_process;
goto exit_bw_scale_process;
}

/* if rp points to base, we need to wrap it around */
if (dev_rp == ev_ring->base)
dev_rp = ev_ring->base + ev_ring->len;
dev_rp--;

/* fast forward to currently processed element and recycle er */
ev_ring->rp = dev_rp;
ev_ring->wp = dev_rp - 1;
if (ev_ring->wp < ev_ring->base)
ev_ring->wp = ev_ring->base + ev_ring->len - ev_ring->el_size;
mhi_recycle_fwd_ev_ring_element(mhi_cntrl, ev_ring);

MHI_ASSERT(MHI_TRE_GET_EV_TYPE(dev_rp) != MHI_PKT_TYPE_BW_REQ_EVENT,
"!BW SCALE REQ event");

Expand All @@ -1479,19 +1472,22 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl,
link_info.target_link_speed,
link_info.target_link_width);

/* fast forward to currently processed element and recycle er */
ev_ring->rp = dev_rp;
ev_ring->wp = dev_rp - 1;
if (ev_ring->wp < ev_ring->base)
ev_ring->wp = ev_ring->base + ev_ring->len - ev_ring->el_size;
mhi_recycle_fwd_ev_ring_element(mhi_cntrl, ev_ring);

read_lock_bh(&mhi_cntrl->pm_lock);
if (likely(MHI_DB_ACCESS_VALID(mhi_cntrl)))
mhi_ring_er_db(mhi_event);
read_unlock_bh(&mhi_cntrl->pm_lock);
spin_unlock_bh(&mhi_event->lock);

atomic_inc(&mhi_cntrl->pending_pkts);
ret = mhi_device_get_sync(mhi_cntrl->mhi_dev,
MHI_VOTE_DEVICE | MHI_VOTE_BUS);
if (ret) {
atomic_dec(&mhi_cntrl->pending_pkts);
goto exit_bw_scale_process;
}

mutex_lock(&mhi_cntrl->pm_mutex);

ret = mhi_cntrl->bw_scale(mhi_cntrl, &link_info);
if (!ret)
*cur_info = link_info;
Expand All @@ -1501,17 +1497,17 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl,
read_lock_bh(&mhi_cntrl->pm_lock);
if (likely(MHI_DB_ACCESS_VALID(mhi_cntrl)))
mhi_cntrl->write_reg(mhi_cntrl, mhi_cntrl->bw_scale_db, 0,
MHI_BW_SCALE_RESULT(result,
link_info.sequence_num));

mhi_cntrl->wake_put(mhi_cntrl, false);
MHI_BW_SCALE_RESULT(result,
link_info.sequence_num));
read_unlock_bh(&mhi_cntrl->pm_lock);

exit_bw_process:
mhi_device_put(mhi_cntrl->mhi_dev, MHI_VOTE_DEVICE | MHI_VOTE_BUS);
atomic_dec(&mhi_cntrl->pending_pkts);

mutex_unlock(&mhi_cntrl->pm_mutex);

exit_no_lock:
MHI_VERB("exit er_index:%u\n", mhi_event->er_index);
exit_bw_scale_process:
MHI_VERB("exit er_index:%u ret:%d\n", mhi_event->er_index, ret);

return ret;
}
Expand Down Expand Up @@ -2086,9 +2082,10 @@ static void __mhi_unprepare_channel(struct mhi_controller *mhi_cntrl,
int mhi_debugfs_mhi_states_show(struct seq_file *m, void *d)
{
struct mhi_controller *mhi_cntrl = m->private;
struct mhi_link_info *cur_info = &mhi_cntrl->mhi_link_info;

seq_printf(m,
"[%llu ns]: pm_state:%s dev_state:%s EE:%s M0:%u M2:%u M3:%u M3_Fast:%u wake:%d dev_wake:%u alloc_size:%u pending_pkts:%u\n",
"[%llu ns]: pm_state:%s dev_state:%s EE:%s M0:%u M2:%u M3:%u M3_Fast:%u wake:%d dev_wake:%u alloc_size:%u pending_pkts:%u last_requested_bw:GEN%dx%d\n",
sched_clock(),
to_mhi_pm_state_str(mhi_cntrl->pm_state),
TO_MHI_STATE_STR(mhi_cntrl->dev_state),
Expand All @@ -2097,7 +2094,9 @@ int mhi_debugfs_mhi_states_show(struct seq_file *m, void *d)
mhi_cntrl->M3_FAST, mhi_cntrl->wake_set,
atomic_read(&mhi_cntrl->dev_wake),
atomic_read(&mhi_cntrl->alloc_size),
atomic_read(&mhi_cntrl->pending_pkts));
atomic_read(&mhi_cntrl->pending_pkts),
cur_info->target_link_speed,
cur_info->target_link_width);
return 0;
}

Expand Down Expand Up @@ -2213,7 +2212,7 @@ int mhi_debugfs_mhi_vote_show(struct seq_file *m, void *d)

mhi_dev = mhi_cntrl->mhi_dev;

seq_printf(m, "At %llu ns:\n", sched_clock());
seq_printf(m, "[%llu ns]:\n", sched_clock());
seq_printf(m, "%s: device:%u, bus:%u\n", mhi_dev->chan_name,
atomic_read(&mhi_dev->dev_vote),
atomic_read(&mhi_dev->bus_vote));
Expand Down
5 changes: 5 additions & 0 deletions drivers/bus/mhi/core/mhi_pm.c
Expand Up @@ -1484,6 +1484,11 @@ int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl)
int ret;

read_lock_bh(&mhi_cntrl->pm_lock);
if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) {
read_unlock_bh(&mhi_cntrl->pm_lock);
return -EIO;
}

mhi_cntrl->wake_get(mhi_cntrl, true);
if (MHI_PM_IN_SUSPEND_STATE(mhi_cntrl->pm_state))
mhi_trigger_resume(mhi_cntrl);
Expand Down
19 changes: 14 additions & 5 deletions drivers/char/adsprpc.c
Expand Up @@ -2649,7 +2649,7 @@ static int fastrpc_internal_munmap(struct fastrpc_file *fl,
pr_err("adsprpc: ERROR: %s: user application %s trying to unmap without initialization\n",
__func__, current->comm);
err = -EBADR;
goto bail;
return err;
}
mutex_lock(&fl->internal_map_mutex);

Expand Down Expand Up @@ -2697,6 +2697,11 @@ static int fastrpc_internal_munmap(struct fastrpc_file *fl,
return err;
}

/*
* fastrpc_internal_munmap_fd can only be used for buffers
* mapped with persist attributes. This can only be called
* once for any persist buffer
*/
static int fastrpc_internal_munmap_fd(struct fastrpc_file *fl,
struct fastrpc_ioctl_munmap_fd *ud)
{
Expand All @@ -2705,14 +2710,15 @@ static int fastrpc_internal_munmap_fd(struct fastrpc_file *fl,

VERIFY(err, (fl && ud));
if (err)
goto bail;
return err;
VERIFY(err, fl->dsp_proc_init == 1);
if (err) {
pr_err("adsprpc: ERROR: %s: user application %s trying to unmap without initialization\n",
__func__, current->comm);
err = -EBADR;
goto bail;
return err;
}
mutex_lock(&fl->internal_map_mutex);
mutex_lock(&fl->map_mutex);
if (fastrpc_mmap_find(fl, ud->fd, ud->va, ud->len, 0, 0, &map)) {
pr_err("adsprpc: mapping not found to unmap fd 0x%x, va 0x%llx, len 0x%x\n",
Expand All @@ -2722,10 +2728,13 @@ static int fastrpc_internal_munmap_fd(struct fastrpc_file *fl,
mutex_unlock(&fl->map_mutex);
goto bail;
}
if (map)
if (map && (map->attr & FASTRPC_ATTR_KEEP_MAP)) {
map->attr = map->attr & (~FASTRPC_ATTR_KEEP_MAP);
fastrpc_mmap_free(map, 0);
}
mutex_unlock(&fl->map_mutex);
bail:
mutex_unlock(&fl->internal_map_mutex);
return err;
}

Expand All @@ -2744,7 +2753,7 @@ static int fastrpc_internal_mmap(struct fastrpc_file *fl,
pr_err("adsprpc: ERROR: %s: user application %s trying to map without initialization\n",
__func__, current->comm);
err = -EBADR;
goto bail;
return err;
}
mutex_lock(&fl->internal_map_mutex);
if (ud->flags == ADSP_MMAP_ADD_PAGES) {
Expand Down
5 changes: 0 additions & 5 deletions drivers/clk/qcom/mdss/mdss-pll.c
Expand Up @@ -400,11 +400,6 @@ static int mdss_pll_remove(struct platform_device *pdev)
static const struct of_device_id mdss_pll_dt_match[] = {
{.compatible = "qcom,mdss_dsi_pll_7nm"},
{.compatible = "qcom,mdss_dsi_pll_7nm_v2"},
{.compatible = "qcom,mdss_dp_pll_7nm"},
{.compatible = "qcom,mdss_dsi_pll_28lpm"},
{.compatible = "qcom,mdss_dsi_pll_14nm"},
{.compatible = "qcom,mdss_dp_pll_14nm"},
{.compatible = "qcom,mdss_hdmi_pll_28lpm"},
{}
};

Expand Down
4 changes: 1 addition & 3 deletions drivers/gpu/msm/adreno.c
Expand Up @@ -101,9 +101,7 @@ static struct adreno_device device_3d0 = {
.ft_policy = KGSL_FT_DEFAULT_POLICY,
.ft_pf_policy = KGSL_FT_PAGEFAULT_DEFAULT_POLICY,
.long_ib_detect = 1,
.pwrctrl_flag = BIT(ADRENO_SPTP_PC_CTRL) | BIT(ADRENO_PPD_CTRL) |
BIT(ADRENO_LM_CTRL) | BIT(ADRENO_HWCG_CTRL) |
BIT(ADRENO_THROTTLING_CTRL),
.pwrctrl_flag = BIT(ADRENO_HWCG_CTRL) | BIT(ADRENO_THROTTLING_CTRL),
.profile.enabled = false,
.active_list = LIST_HEAD_INIT(device_3d0.active_list),
.active_list_lock = __SPIN_LOCK_UNLOCKED(device_3d0.active_list_lock),
Expand Down

0 comments on commit c99bd3c

Please sign in to comment.