Add snapshot of the clk-cpu-osm, gcc-sdm660,
gpucc-sdm660 and mmcc-sdm660 driver as of
msm-4.4 'commit c2f54771deefa34bf (" Merge "ion:
ion_system_heap: Fix variable initialization"").
Change-Id: Ida7f5b5a3a7aaf275ef9e2d96ee6c67033aad9ca
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Signed-off-by: Naitik Bharadiya <bharad@codeaurora.org>
Signed-off-by: Chetan C R <cchinnad@codeaurora.org>
The same QMI transaction data is synchronized using two mutex locks.
Remove ineffective transaction mutex lock because it is always
covered by QMI txn_lock with same purpose.
CRs-Fixed: 2470638
Change-Id: If53e006436c77d572b2d69507e1593e3d57e1cd4
Signed-off-by: Arun Kumar Neelakantam <aneela@codeaurora.org>
Add an api for clients to set the send timeout of the underlying qrtr
socket. QMI sets this timeout to 10 seconds by default but this is too
long for some clients in critical paths.
Change-Id: I4c892a2f034c87b6bf2f71664369140910e72383
Signed-off-by: Chris Lew <clew@codeaurora.org>
Add rpm smd clocks, PMIC and bus clocks which are required on
TRINKET for clients to vote on. Keep active only vote on XO
and 19.2MHz vote on cnoc and snoc clocks.
Change-Id: Ife815cd4f4a0a49cd0f60350fc42e7dfe86ff41b
Signed-off-by: Odelu Kukatla <okukatla@codeaurora.org>
Added cx ipeak and CDSP thermal limit management framework in
CDSRPM module for SM8150. NPU will notify CDSPRM module of clock
and activity changes.
CDSPRM module interacts with cx ipeak limit management driver on
CDSP and control compute subsystem (CDSP, NPU) clocks to limit
cx ipeak to the characterized levels. Also added CDSP subsystem
thermal mitigation support by registering cooling devices for CDSP
and HVX cores.
Change-Id: Ide61e2df09859fbf1669e4821cc1d2c7fbb684df
Acked-by: Sreekanth Gande <sgande@qti.qualcomm.com>
Signed-off-by: Tharun Kumar Merugu <mtharu@codeaurora.org>
Txn IDs created up to INT_MAX cause overflow while storing
the IDs in u16 type supported by QMI header.
Limit the txn IDs max value to U16_MAX to avoid overflow.
Change-Id: I77e2176df7ae6e91a52f470a4e9a83711ea784d5
Signed-off-by: Arun Kumar Neelakantam <aneela@codeaurora.org>
CDSPRM module consists of a rpmsg based driver to receive requests
from CDSP subsystem for CPU L3 clock frequency and QoS
requirements.
L3 frequency requests are forwarded to the devfreq governor.
QoS requests are handled within this driver by using pm qos APIs.
CDSP votes for L3 clock to improve IOcoherent bandwidth for better
performance and votes for QoS latency to reduce FastRPC overhead.
Change-Id: Ib6acb3f25e535592ea63388a019fca3c44342190
Acked-by: Sreekanth Gande <sgande@qti.qualcomm.com>
Signed-off-by: Tharun Kumar Merugu <mtharu@codeaurora.org>
Terminate SBU lines with high impedance when they are unused,
specifically at boot time and for non-DP use-cases. This is
required so that USB compliance test cases can be passed.
Change-Id: I42c6fedb784d0c2e113c5f4c69ac7ff100fc24e2
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
QPIC & CE clocks are required to be voted from the clients, so add the
relevant clock ids for the same.
Remove the clock ids and clock handles which are no longer required on this
target.
Change-Id: If2edbb4526230b3c1f6d929f6bf0dafa0b800e95
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Program the FSA4480 I2C device depending on the USB-C
orientation detected when the cable is plugged in. This
orientation based programming enables the DisplayPort driver
AUX communication.
Change-Id: Ic160c2bfac2251468d80972393462cc2f30e6609
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Add driver support for FSA4480 I2C device that
is used for switching orientation of USB-C analog
and for display.
Change-Id: Iac392c82a72fe5de469fda094059ef7691772ca8
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Update the service-notifier to use the upstream QMI interface.
Change-Id: I849aff658c7254ccb871b97ef854c69d2f56bb15
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Add the missing header dependencies for types used within this file.
Change-Id: Ie79cd3a65f19800a1fff2e320a999534b389b27c
Signed-off-by: Chris Lew <clew@codeaurora.org>
Drivers that needs to communicate with a remote QMI service all has to
perform the operations of discovering the service, encoding and decoding
the messages and operate the socket. This introduces an abstraction for
these common operations, reducing most of the duplication in such cases.
Change-Id: I937a35d631280843c0d9e13a7a4e103c35b3905b
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Patch-mainline: linux-arm-msm @ 15/11/2017 12:10
[clew@codeaurora.org: Bring downstream up to date by merging differences
between v1 and v3 patchsets from "soc: qcom: Introduce QMI helpers"]
Signed-off-by: Chris Lew <clew@codeaurora.org>
Add the helper library for encoding and decoding QMI encoded messages.
The implementation is taken from lib/qmi_encdec.c of the Qualcomm kernel
(msm-3.18).
Modifications has been made to the public API, source buffers has been
made const and the debug-logging part was omitted, for now.
Change-Id: I54a74978d2ae30e90b3ee67eba0912b9f51ca935
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Patch-mainline: linux-arm-msm @ 15/11/2017 12:10
[clew@codeaurora.org: Merge differences between v1 and v3 patchsets
from "soc: qcom: Introduce QMI encoder/decoder"]
Signed-off-by: Chris Lew <clew@codeaurora.org>
* remotes/msm-4.9/tmp-39dae59:
Linux 4.14-rc8
x86/module: Detect and skip invalid relocations
objtool: Prevent GCC from merging annotate_unreachable(), take 2
Revert "x86/mm: Stop calling leave_mm() in idle code"
Documentation: Add Frank Rowand to list of enforcement statement endorsers
doc: add Willy Tarreau to the list of enforcement statement endorsers
tools/headers: Synchronize kernel ABI headers
objtool: Resync objtool's instruction decoder source code copy with the kernel's latest version
Input: sparse-keymap - send sync event for KE_SW/KE_VSW
Input: ar1021_i2c - set INPUT_PROP_DIRECT
arch/tile: Implement ->set_state_oneshot_stopped()
Update MIPS email addresses
x86: CPU: Fix up "cpu MHz" in /proc/cpuinfo
mm, swap: fix race between swap count continuation operations
mm/huge_memory.c: deposit page table when copying a PMD migration entry
initramfs: fix initramfs rebuilds w/ compression after disabling
fs/hugetlbfs/inode.c: fix hwpoison reserve accounting
ocfs2: fstrim: Fix start offset of first cluster group during fstrim
mm, /proc/pid/pagemap: fix soft dirty marking for PMD migration entry
userfaultfd: hugetlbfs: prevent UFFDIO_COPY to fill beyond the end of i_size
Documentation: Add Tim Bird to list of enforcement statement endorsers
net: systemport: Correct IPG length settings
tcp: do not mangle skb->cb[] in tcp_make_synack()
fib: fib_dump_info can no longer use __in_dev_get_rtnl
stmmac: use of_property_read_u32 instead of read_u8
net_sched: hold netns refcnt for each action
net_sched: acquire RTNL in tc_action_net_exit()
powerpc/perf: Fix core-imc hotplug callback failure during imc initialization
Kbuild: don't pass "-C" to preprocessor when processing linker scripts
Revert "x86: do not use cpufreq_quick_get() for /proc/cpuinfo "cpu MHz""
arm64: ensure __dump_instr() checks addr_limit
KVM: x86: Update APICv on APIC reset
KVM: VMX: Do not fully reset PI descriptor on vCPU reset
kvm: Return -ENODEV from update_persistent_clock
futex: futex_wake_op, do not fail on invalid op
MIPS: Update email address for Marcin Nowakowski
License cleanup: add SPDX license identifier to uapi header files with a license
License cleanup: add SPDX license identifier to uapi header files with no license
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
KEYS: fix out-of-bounds read during ASN.1 parsing
KEYS: trusted: fix writing past end of buffer in trusted_read()
KEYS: return full count in keyring_read() if buffer is too small
net: vrf: correct FRA_L3MDEV encode type
tcp_nv: fix division by zero in tcpnv_acked()
drm/amdgpu: allow harvesting check for Polaris VCE
drm/amdgpu: return -ENOENT from uvd 6.0 early init for harvesting
ARM: add debug ".edata_real" symbol
MIPS: smp-cmp: Fix vpe_id build error
MAINTAINERS: Update Pistachio platform maintainers
MIPS: smp-cmp: Use right include for task_struct
signal: Fix name of SIGEMT in #if defined() check
MIPS: Update Goldfish RTC driver maintainer email address
MIPS: Update RINT emulation maintainer email address
MIPS: CPS: Fix use of current_cpu_data in preemptible code
x86/mcelog: Get rid of RCU remnants
watchdog/hardlockup/perf: Use atomics to track in-use cpu counter
watchdog/harclockup/perf: Revert a33d44843d ("watchdog/hardlockup/perf: Simplify deferred event destroy")
ARM: 8716/1: pass endianness info to sparse
drm/i915: Check incoming alignment for unfenced buffers (on i915gm)
x86/mm: fix use-after-free of vma during userfaultfd fault
ide:ide-cd: fix kernel panic resulting from missing scsi_req_init
mmc: dw_mmc: Fix the DTO timeout calculation
tcp: fix tcp_mtu_probe() vs highest_sack
ipv6: addrconf: increment ifp refcount before ipv6_del_addr()
tun/tap: sanitize TUNSETSNDBUF input
mlxsw: i2c: Fix buffer increment counter for write transaction
netfilter: nf_reject_ipv4: Fix use-after-free in send_reset
futex: Fix more put_pi_state() vs. exit_pi_state_list() races
powerpc/kprobes: Dereference function pointers only if the address does not belong to kernel text
Revert "powerpc64/elfv1: Only dereference function descriptor for non-text symbols"
mlxsw: reg: Add high and low temperature thresholds
MAINTAINERS: Remove Yotam from mlxfw
MAINTAINERS: Update Yotam's E-mail
net: hns: set correct return value
net: lapbether: fix double free
bpf: remove SK_REDIRECT from UAPI
net: phy: marvell: Only configure RGMII delays when using RGMII
MIPS: SMP: Fix deadlock & online race
MIPS: bpf: Fix a typo in build_one_insn()
MIPS: microMIPS: Fix incorrect mask in insn_table_MM
MIPS: Fix CM region target definitions
MIPS: generic: Fix compilation error from include asm/mips-cpc.h
MIPS: Fix exception entry when CONFIG_EVA enabled
irqchip/irq-mvebu-gicp: Add missing spin_lock init
drm/nouveau/kms/nv50: use the correct state for base channel notifier setup
MIPS: generic: Fix NI 169445 its build
Update MIPS email addresses
tile: pass machine size to sparse
selftests: lib.mk: print individual test results to console by default
RDMA/nldev: Enforce device index check for port callback
Revert "PM / QoS: Fix device resume latency PM QoS"
Revert "PM / QoS: Fix default runtime_pm device resume latency"
scsi: qla2xxx: Fix oops in qla2x00_probe_one error path
xfrm: Fix GSO for IPsec with GRE tunnel.
ALSA: seq: Fix nested rwsem annotation for lockdep splat
ALSA: timer: Add missing mutex lock for compat ioctls
tc-testing: fix arg to ip command: -s -> -n
net_sched: remove tcf_block_put_deferred()
l2tp: hold tunnel in pppol2tp_connect()
drm/i915: Hold rcu_read_lock when iterating over the radixtree (vma idr)
drm/i915: Hold rcu_read_lock when iterating over the radixtree (objects)
drm/i915/edp: read edp display control registers unconditionally
drm/i915: Do not rely on wm preservation for ILK watermarks
drm/i915: Cancel the modeset retry work during modeset cleanup
Mark 'ioremap_page_range()' as possibly sleeping
nvme: Fix setting logical block format when revalidating
mmc: dw_mmc: Add locking to the CTO timer
mmc: dw_mmc: Fix the CTO timeout calculation
mmc: dw_mmc: cancel the CTO timer after a voltage switch
perf/cgroup: Fix perf cgroup hierarchy support
PM / QoS: Fix default runtime_pm device resume latency
Revert "ath10k: fix napi_poll budget overflow"
ath10k: rebuild crypto header in rx data frames
cifs: check MaxPathNameComponentLength != 0 before using it
KVM: arm/arm64: vgic-its: Check GITS_BASER Valid bit before saving tables
KVM: arm/arm64: vgic-its: Check CBASER/BASER validity before enabling the ITS
KVM: arm/arm64: vgic-its: Fix vgic_its_restore_collection_table returned value
KVM: arm/arm64: vgic-its: Fix return value for device table restore
efi/libstub: arm: omit sorting of the UEFI memory map
perf tools: Unwind properly location after REJECT
virtio_blk: Fix an SG_IO regression
wcn36xx: Remove unnecessary rcu_read_unlock in wcn36xx_bss_info_changed
ARM: dts: mvebu: pl310-cache disable double-linefill
xfrm: Clear sk_dst_cache when applying per-socket policy.
perf symbols: Fix memory corruption because of zero length symbols
powerpc/64s/radix: Fix preempt imbalance in TLB flush
netfilter: nft_set_hash: disable fast_ops for 2-len keys
powerpc: Fix check for copy/paste instructions in alignment handler
powerpc/perf: Fix IMC allocation routine
xfrm: Fix xfrm_dst_cache memleak
ARM: 8715/1: add a private asm/unaligned.h
clk: uniphier: fix clock data for PXs3
Documentation: Add my name to kernel enforcement statement
nvme-rdma: fix possible hang when issuing commands during ctrl removal
arm/arm64: kvm: Disable branch profiling in HYP code
arm/arm64: kvm: Move initialization completion message
arm/arm64: KVM: set right LR register value for 32 bit guest when inject abort
Documentation: kernel-enforcement-statement.rst: proper sort names
ASoC: rt5616: fix 0x91 default value
Documentation: Add Arm Ltd to kernel-enforcement-statement.rst
arm64: dts: uniphier: add STDMAC clock to EHCI nodes
ARM: dts: uniphier: add STDMAC clock to EHCI nodes
mmc: renesas_sdhi: fix kernel panic in _internal_dmac.c
mmc: tmio: fix swiotlb buffer is full
Documentation: kernel-enforcement-statement.rst: Remove Red Hat markings
Documentation: Add myself to the enforcement statement list
Documentation: Sign kernel enforcement statement
Add ack for Trond Myklebust to the enforcement statement
Documentation: update kernel enforcement support list
Documentation: add my name to supporters
ASoC: rt5659: connect LOUT Amp with Charge Pump
ASoC: rt5659: register power bit of LOUT Amp
KVM: arm64: its: Fix missing dynamic allocation check in scan_its_table
crypto: x86/chacha20 - satisfy stack validation 2.0
ASoC: rt5663: Change the dev getting function in rt5663_irq
ASoC: rt5514: Revert Hotword Model control
ASoC: topology: Fix a potential memory leak in 'soc_tplg_dapm_widget_denum_create()'
ASoC: topology: Fix a potential NULL pointer dereference in 'soc_tplg_dapm_widget_denum_create()'
ASoC: rt5514-spi: check irq status to schedule data copy
ASoC: adau17x1: Workaround for noise bug in ADC
Conflicts:
drivers/gpu/drm/msm/Makefile
drivers/soc/qcom/Makefile
drivers/staging/android/ion/Makefile
include/linux/coresight-stm.h
include/trace/events/kmem.h
Change-Id: I01f1779762b652b9213924caa3d54f29cf03d285
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Many source files in the tree are missing licensing information, which
makes it harder for compliance tools to determine the correct license.
By default all files without license information are under the default
license of the kernel, which is GPL version 2.
Update the files which contain no license information with the 'GPL-2.0'
SPDX license identifier. The SPDX identifier is a legally binding
shorthand, which can be used instead of the full boiler plate text.
This patch is based on work done by Thomas Gleixner and Kate Stewart and
Philippe Ombredanne.
How this work was done:
Patches were generated and checked against linux-4.14-rc6 for a subset of
the use cases:
- file had no licensing information it it.
- file was a */uapi/* one with no licensing information in it,
- file was a */uapi/* one with existing licensing information,
Further patches will be generated in subsequent months to fix up cases
where non-standard license headers were used, and references to license
had to be inferred by heuristics based on keywords.
The analysis to determine which SPDX License Identifier to be applied to
a file was done in a spreadsheet of side by side results from of the
output of two independent scanners (ScanCode & Windriver) producing SPDX
tag:value files created by Philippe Ombredanne. Philippe prepared the
base worksheet, and did an initial spot review of a few 1000 files.
The 4.13 kernel was the starting point of the analysis with 60,537 files
assessed. Kate Stewart did a file by file comparison of the scanner
results in the spreadsheet to determine which SPDX license identifier(s)
to be applied to the file. She confirmed any determination that was not
immediately clear with lawyers working with the Linux Foundation.
Criteria used to select files for SPDX license identifier tagging was:
- Files considered eligible had to be source code files.
- Make and config files were included as candidates if they contained >5
lines of source
- File already had some variant of a license header in it (even if <5
lines).
All documentation files were explicitly excluded.
The following heuristics were used to determine which SPDX license
identifiers to apply.
- when both scanners couldn't find any license traces, file was
considered to have no license information in it, and the top level
COPYING file license applied.
For non */uapi/* files that summary was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 11139
and resulted in the first patch in this series.
If that file was a */uapi/* path one, it was "GPL-2.0 WITH
Linux-syscall-note" otherwise it was "GPL-2.0". Results of that was:
SPDX license identifier # files
---------------------------------------------------|-------
GPL-2.0 WITH Linux-syscall-note 930
and resulted in the second patch in this series.
- if a file had some form of licensing information in it, and was one
of the */uapi/* ones, it was denoted with the Linux-syscall-note if
any GPL family license was found in the file or had no licensing in
it (per prior point). Results summary:
SPDX license identifier # files
---------------------------------------------------|------
GPL-2.0 WITH Linux-syscall-note 270
GPL-2.0+ WITH Linux-syscall-note 169
((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) 21
((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) 17
LGPL-2.1+ WITH Linux-syscall-note 15
GPL-1.0+ WITH Linux-syscall-note 14
((GPL-2.0+ WITH Linux-syscall-note) OR BSD-3-Clause) 5
LGPL-2.0+ WITH Linux-syscall-note 4
LGPL-2.1 WITH Linux-syscall-note 3
((GPL-2.0 WITH Linux-syscall-note) OR MIT) 3
((GPL-2.0 WITH Linux-syscall-note) AND MIT) 1
and that resulted in the third patch in this series.
- when the two scanners agreed on the detected license(s), that became
the concluded license(s).
- when there was disagreement between the two scanners (one detected a
license but the other didn't, or they both detected different
licenses) a manual inspection of the file occurred.
- In most cases a manual inspection of the information in the file
resulted in a clear resolution of the license that should apply (and
which scanner probably needed to revisit its heuristics).
- When it was not immediately clear, the license identifier was
confirmed with lawyers working with the Linux Foundation.
- If there was any question as to the appropriate license identifier,
the file was flagged for further research and to be revisited later
in time.
In total, over 70 hours of logged manual review was done on the
spreadsheet to determine the SPDX license identifiers to apply to the
source files by Kate, Philippe, Thomas and, in some cases, confirmation
by lawyers working with the Linux Foundation.
Kate also obtained a third independent scan of the 4.13 code base from
FOSSology, and compared selected files where the other two scanners
disagreed against that SPDX file, to see if there was new insights. The
Windriver scanner is based on an older version of FOSSology in part, so
they are related.
Thomas did random spot checks in about 500 files from the spreadsheets
for the uapi headers and agreed with SPDX license identifier in the
files he inspected. For the non-uapi files Thomas did random spot checks
in about 15000 files.
In initial set of patches against 4.14-rc6, 3 files were found to have
copy/paste license identifier errors, and have been fixed to reflect the
correct identifier.
Additionally Philippe spent 10 hours this week doing a detailed manual
inspection and review of the 12,461 patched files from the initial patch
version early this week with:
- a full scancode scan run, collecting the matched texts, detected
license ids and scores
- reviewing anything where there was a license detected (about 500+
files) to ensure that the applied SPDX license was correct
- reviewing anything where there was no detection but the patch license
was not GPL-2.0 WITH Linux-syscall-note to ensure that the applied
SPDX license was correct
This produced a worksheet with 20 files needing minor correction. This
worksheet was then exported into 3 different .csv files for the
different types of files to be modified.
These .csv files were then reviewed by Greg. Thomas wrote a script to
parse the csv files and add the proper SPDX tag to the file, in the
format that the file expected. This script was further refined by Greg
based on the output to detect more types of files automatically and to
distinguish between header and source .c files (which need different
comment types.) Finally Greg ran the script using the .csv files to
generate the patches.
Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org>
Reviewed-by: Philippe Ombredanne <pombredanne@nexb.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
QMI header has incomplete type errors when compiling standalone. Add
the required headers.
Change-Id: I545c794b2b3f8d09ce8b1d5b0aba7690cb0b03de
Signed-off-by: Chris Lew <clew@codeaurora.org>
* changes:
defconfig: msm: Enable GLINK probe driver on sdm855
ARM: dts: msm: Add GLINK entries for sdm855
soc: qcom: glink: Add support for Glink Probe
soc: qcom: smem: Add support to get physical addr
Drivers that needs to communicate with a remote QMI service all has to
perform the operations of discovering the service, encoding and decoding
the messages and operate the socket. This introduces an abstraction for
these common operations, reducing most of the duplication in such cases.
Change-Id: I48dc7c6e0b6c83a925a8ffcf273c90ef2044a7ee
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Patch-mainline: linux-arm-msm @ 04/08/17, 7:59
Signed-off-by: Chris Lew <clew@codeaurora.org>
Add the helper library for encoding and decoding QMI encoded messages.
The implementation is taken from lib/qmi_encdec.c of the Qualcomm kernel
(msm-3.18).
Modifications has been made to the public API, source buffers has been
made const and the debug-logging part was omitted, for now.
Change-Id: I522ec59b7c1bc9be970e21e041b79f5bc6bfae94
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Patch-mainline: linux-arm-msm @ 04/08/17, 7:59
Signed-off-by: Chris Lew <clew@codeaurora.org>
An SMEM item can be handed off to a DMA engine. Add a function to
retrieve the physical address of an smem item.
Change-Id: Ic4137700ad308a5da13aa943e564102f547fadb2
Signed-off-by: Chris Lew <clew@codeaurora.org>
LLCC (Last Level Cache Controller) provides additional cache memory
in the system. LLCC is partitioned into muliple slices and each slice
getting its own priority, size, ID and other config parameters.
LLCC driver programs these parameters for each slice. Clients that are
assigned to use LLCC need to get information such size & ID of the slice
they get and activate or deactivate the slice as needed. LLCC driver
provides API interfaces for the clients to perform these operations.
Change-Id: I2ef80558248ed1a43515f6c973d236b6ec1f241c
Signed-off-by: Channagoud Kadabi <ckadabi@codeaurora.org>
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
Remove the standalone SMD implementation as we have transitioned the
client drivers to use the RPMSG based one.
Also remove all dependencies on QCOM_SMD from Kconfig files, in order to
keep them selectable in the absence of the removed symbol.
Acked-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
By moving these client drivers to use RPMSG instead of the direct SMD
API we can reuse them ontop of the newly added GLINK wire-protocol
support found in the 820 and 835 Qualcomm platforms.
As the new (RPMSG-based) and old SMD implementations are mutually
exclusive we have to change all client drivers in one commit, to make
sure we have a working system before and after this transition.
Acked-by: Andy Gross <andy.gross@linaro.org>
Acked-by: Kalle Valo <kvalo@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pull remoteproc updates from Bjorn Andersson:
"This introduces support for booting the dedicated sensor core in the
Qualcomm MSM8996, updates the Qualcomm ADSP and Hexagon drivers to
utilize SMD subdevice helpers for properly handle shutdowns and
restarts of the remoteproc, add virtio support to the ST remoteproc
and refactor the Qualcomm Hexagon driver to handle variations between
platforms.
The support code for parsing, loading and authenticating Qualcomm
firmware files (MDT) is refactored and move to drivers/soc/qcom, to
allow for non-remoteproc drivers to utilize this.
Finally it brings some cleanups to the remoteproc core"
* tag 'rproc-v4.11' of git://github.com/andersson/remoteproc: (27 commits)
remoteproc: qcom: mdt_loader: Use signed type for offset
remoteproc: st: add virtio communication support
remoteproc: st: correct probe error management
remoteproc: Modify the function names
remoteproc: Reduce asynchronous request_firmware to auto-boot only
remoteproc: Drop qcom_scm_pas_supported() from adsp_probe()
MAINTAINERS: Add missing rpmsg include path
remoteproc: qcom: Use common SMD edge handler
remoteproc: qcom: wcnss: Make SMD handling common
remoteproc: Move qcom_mdt_loader into drivers/soc/qcom
remoteproc: qcom: mdt_loader: Refactor MDT loader
remoteproc: qcom: mdt_loader: Don't overwrite firmware object
remoteproc: qcom: Extract non-mdt related helper
remoteproc: qcom: q6v5: Decouple driver from MDT loader
remoteproc: qcom: q6v5: Remove mss supply from 8916
remoteproc: qcom: fix initializers for qcom_mss_reg_res array
remoteproc: Drop firmware_loading_complete
remoteproc: Add RPROC_DELETED state
remoteproc: Move rproc_delete_debug_dir() to rproc_del()
remoteproc: qcom: Add SLPI rproc support to load and boot slpi proc.
...
With the remoteproc parts cleaned out of the MDT loader we can move it
to drivers/soc/qcom.
Acked-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
The correct include file for getting errno constants and ERR_PTR() is
linux/err.h, rather than linux/errno.h, so fix the include.
Fixes: e8b123e600 ("soc: qcom: smem_state: Add stubs for disabled smem_state")
Acked-by: Andy Gross <andy.gross@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
By representing each edge as its own device the channels are no longer
tied to being parented by the same smd device and as such an edge can
live as children of e.g. remoteproc instances.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Multi-channel clients split between several drivers need a way to close
individual channels, as these drivers might be removed individually.
With this in place the responsibility of closing additionally opened
channels to the client as well only concerning smd about the primary
channel.
With this approach we will only trigger removal of SMD devices based on
the state of the primary channel, however we get in sync with how rpmsg
works.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
The prototypes for the compile stubs was not properly marked as static
inline, this patch corrects this.
Fixes: f79a917e69 ("Merge tag 'qcom-soc-for-4.7-2' into net-next")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
We need the signal from wcnss_ctrl indicating that the firmware is up
and running before we can communicate with the other components of the
chip. So make these other components children of the wcnss_ctrl device,
so they can be probed in order.
The process seems to take between 1/2-5 seconds, so this is done in a
worker, instead of holding up the probe.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
This merges the Qualcomm SOC tree with the net-next, solving the
merge conflict in the SMD API between the two.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
By passing the smd channel reference to the callback, rather than the
smd device, we can open additional smd channels from sub-devices of smd
devices.
Also updates the two smd clients today found in mainline.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
With the qcom_smd_open_channel() API we allow SMD devices to open
additional SMD channels, to allow implementation of multi-channel SMD
devices - like Bluetooth.
Channels are opened from the same edge as the calling SMD device is tied
to.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org>
Passing a void ** almost always requires a cast at the call site.
Instead of littering the code with casts every time this function
is called, have qcom_smem_get() return a void pointer to the
location of the smem item. This frees the caller from having to
cast the pointer.
Cc: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Andy Gross <agross@codeaurora.org>
Implement a id_table based driver maching mechanism for drivers that
binds to fixed channels and doesn't need any additional configuration,
e.g. IPCRTR and DIAG.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Andy Gross <agross@codeaurora.org>
Driver for the Resource Power Manager (RPM) found in Qualcomm 8974 based
devices.
The driver exposes resources that child drivers can operate on; to
implementing regulator, clock and bus frequency drivers.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Andy Gross <agross@codeaurora.org>
This adds the Qualcomm Shared Memory Driver (SMD) providing
communication channels to remote processors, ontop of SMEM.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Andy Gross <agross@codeaurora.org>
The Shared Memory Manager driver implements an interface for allocating
and accessing items in the memory area shared among all of the
processors in a Qualcomm platform.
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Acked-by: Andy Gross <agross@codeaurora.org>
Signed-off-by: Andy Gross <agross@codeaurora.org>