Correct the offsets of L1SUB_CAPABILITY_REG and L1SUB_CONTROL1_REG.
Change-Id: I6130a7eab50d85e34d87c28bde3a48c058ee9eee
Signed-off-by: Can Guo <cang@codeaurora.org>
Allow device enter L1, i.e. clear PCIE_0_PCIE_PARF_PM_CTRL[REQ_NOT_ENTR_L1]
once we find out BME is set.
Change-Id: I8aca816446a286d02ef51724d157cb7c75057250
Signed-off-by: Can Guo <cang@codeaurora.org>
Sometimes IB1_BASE from register does not match with IB1 of the
ring buffer, this may happen while doing save restore of IB
during preemption. In such case, to dump IB1 in snapshot, check
for overlap between IB1_BASE and IB1 from the ring buffer and
dump IB1 in snapshot as per ring buffer's IB1 base and size.
Change-Id: Ic3af8678a11f20f447fcbcbd3ec209283619b96a
Signed-off-by: Pankaj Gupta <gpankaj@codeaurora.org>
domain number could be different between platforms.
Change-Id: I6fa33635305ec71ec2ebaec35f7a68bbe0181609
Signed-off-by: Minghao Xue <mingxue@codeaurora.org>
This change optimizes to get reg during probe.
With this change no need to ioremap_nocache() reg for every
ddr_stats_show() call.
Change-Id: Ieb38280d1f03e1d613e638a7532b7b014525fbf1
Signed-off-by: Tushar Nimkar <tnimkar@codeaurora.org>
Signed-off-by: Minghao Zhang <minghao@codeaurora.org>
Enable the ARM SMMU driver as a module for direwolf GKI
and also enable other IOMMU configs for direwolf QGKI.
Change-Id: I3b27eda0efbf64411de22a36a430121356bb79bd
Signed-off-by: Vivek Kumar <vivekuma@codeaurora.org>
Signed-off-by: Veera Vegivada <vvegivad@codeaurora.org>
Enable IPCC driver as a loadable kernel module for direwolf.
Change-Id: I03bdc05193b9892e99a02c9855dcfe3e6a20a69e
Signed-off-by: Vivek Kumar <vivekuma@codeaurora.org>
Signed-off-by: Shreyas K K <shrekk@codeaurora.org>
Some USB host PCs switch the downstream port mode from
CDP to SDP if the device does not pull DP up within certain
duration (~2s).
This limits the current drawn by the device to 500mA(or 900mA)
as opposed to the possible 1.5A resulting in slow charging of
the battery.
Fix this by driving a DP pulse when there is a connect
notification from PMIC and detected the charger type as CDP.
Change-Id: I76ac4c33dbbc538f5cb680fd1b5c15f8fb3bfe50
Signed-off-by: Sriharsha Allenki <sallenki@codeaurora.org>
Signed-off-by: Udipto Goswami <ugoswami@codeaurora.org>
Get rid of access to pciedev_table. Update data type
for bdf from unsigned long to u32. Prevent iATU config
for root port BDF. Do not save config values to rc_shadow
as iATU is configured dynamically.
Change-Id: I9e7254d1e6d91869db71c71f1c5b699a4d6376f4
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
For endpoint event registration do not depend on
num_ep, active_num_ep and pending_ep_reg variables.
Instead, create a list of registered endpoints and
notify an endpoint by iterating over the list of
registered endpoints with their corresponding
registered event. This also removes dependency on
PCIe device table and simplifies
msm_pcie_config_device_table function. Keep the
handling of upstream port I/O, memory and BME.
Change-Id: I5ab25ef300f0bc59ae5c2d973c662a0f81e44f43
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Decouple endpoint event registration from link suspend.
Instead of relying on pending_ep_reg and num_active_ep
create an enumerated endpoint list at the time of endpoint
enumeration and move it to suspended endpoint list up
on link suspend. If enumerated endpoint list becomes
empty allow link suspend. Move endpoint back to enumerated
list upon resume. This also removes a race where all
endpoints have not completed their enumeration and one of
the endpoints request to suspend the link.
Change-Id: I22ac6e52a4c93d294d2a365da63cc7292e5e36ce
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Instead of using global array of msm_pcie_dev use
existing PCIe device pointer in the function. Also
fix the indentation of the debug log strings.
Change-Id: I82eaaf2bfcbd4f588d1970131e0185f51d0f8ea5
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
It possible that EP gets PCI probe and tries to access EP config
space before driver could finish setting up PCIe device table.
Due to this race before driver could populate the config base
address in table, operation config call back from framework
tries to de-reference config base address which is NULL. Fix
this issue by dynamically configuring iATU with config space
address range mapping to the BDF for which config space is
requested for. This prevents access to pcie device table which
is used for static mapping for multiple device config space to
its BDF.
Change-Id: Ie6a83355087912369e46f028d8ffe5e4b5a5fba5
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
AER handler is directly using raw read and write APIs to access
endpoint config space. Instead, use PCI framework provided APIs
as well as the register macros to stream line all config space
reads and writes to go through PCI read and write operation.
Also, use PCI framework APIs to find the pci device using BDF
this removes the dependency on local pci device table.
Change-Id: I5b0fa2dc6eb383d9db2dc42f026a2b6cb85b3d71
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
AER handling requires finding the source pci device on
the bus which causes the AER. Source pci device is found
using bus, device and function number. Finding pci device
requires sleeping context because bus is walked by holding
semaphore. Hence move AER handling to threaded irq context.
Change-Id: Ia51b91560326be2a85e17ce98315ea39d25641e2
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
The firmware size returned by request_firmware api is size_t which is
unsigned long in some platforms. Typeacast the size to u32 to match with
supported interface definition.
Change-Id: I61a484e74bf7932508295aac2fe7cfd7298d7953
Signed-off-by: Mahesh Kumar Kalikot Veetil <mkalikot@codeaurora.org>
Enable STM_PROTO_BASIC to support to write log to /dev/coresight-stm
Change-Id: I37dc42a5ba1c9a2b973ca5150b66c1354c047a86
Signed-off-by: Huixian Ma <huixma@codeaurora.org>
Add support for Camera, Display, GPU and Video
AHB clocks.
Change-Id: I1c60f2f720b57659ab92e770448c1ce1c27a359e
Signed-off-by: Jagadeesh Kona <jkona@codeaurora.org>
The stringification operator, `#`, in the preprocessor escapes strings.
For example, `# "foo"` becomes `"\"foo\""`. GCC and Clang differ in how
they treat section names that contain \".
The portable solution is to not use a string literal with the
preprocessor stringification operator.
Change-Id: I7ec44bd2ef15fa8019f2fa5efe2eddf40585ab5a
Link: https://bugs.llvm.org/show_bug.cgi?id=42950
Fixes: fe15b50cde ("srcu: Allocate per-CPU data for DEFINE_SRCU() in modules")
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Git-commit: c1370c128cf49147f1d4c670b7101134231b3dc5
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: lixiang <lixiang@codeaurora.org>
veth_ipa_suspend function returning an error when the interface
is already in deactivated is fixed. Changed the return
value from -EPERM to non error as there is no error in this case.
Change-Id: I10f283e767a442e6897c4d35cc370bbc84dd2d9d
Acked-by: Sarosh Hasan <sarohasa@qti.qualcomm.com>
Signed-off-by: Bojun Pan <bojunp@codeaurora.org>
Enable A/B support by appending slot suffix based on
androidboot.slot_suffix.
Change-Id: I7bdc798f6203ba026606d56cf0bc76e0cfbb6b4a
Signed-off-by: Venkata Rao Kakani <vkakani@codeaurora.org>
When CPU trying to move a task to other cpu in active load balance or
by other means, then the other helping cpu marked as reserved to avoid
it for other scheduler decisions. Once the task moved successfully,
the reservation will be cleared enables for other scheduler decisions.
The reserved flag is been analogously protected with busy cpu’s
rq->active_balance, which is protected with runqueue locks. So whenever
rq->active_balance is set for busy cpu, then reserved flag would set for
helping cpu.
Sometimes, it is observed that, cpu is marked as reserved with no cpu's
rq->active_balance set. There are some unlikely possible corner cases
may cause this behavior:
- On active load balance path, cpu stop machine returns queued status
of active_balance work on cpu_stopper, which is not checked on active
balance path. so when stop machine is not able to queue ( unlikely),
then reserved flag wouldn't be cleared.
So, catch the return value and on failure, clear reserved flag for cpu.
- Clear_walt_request() called on the cpu to clear any pending walt works,
it may possible that, push_task might have changed or cleared, then
reserved cpu would be left uncleared.
So clear the push_cpu independent of push_task.
Change-Id: I75d032bf399cb3da8e807186b1bc903114168a4e
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: Lingutla Chandrasekhar <clingutla@codeaurora.org>