The pm8008 regulator is connected over I2C and the I2C device configures
its clocks in runtime_resume and runtime_suspend. These callbacks are
triggered from the pm8008 driver's regmap calls. This means regulator
framework requests for pm8008 call into the clock framework with the
regulator framework locks held. The qcom clock providers also call into
the regulator framework with the clock framework locks held. If thread A
makes a pm8008 request at the same time thread B makes a clock request,
then it can result in deadlocks. Thread A will be stuck waiting on the
clock locks while thread B is stuck waiting on the regulator locks.
To prevent these deadlocks, enable the I2C clocks required for pm8008 by
default during probe and stop registering them with the framework. This
NOPs any client requests, since of_clk_get() returns NULL when passed an
unregistered clock and all other clock APIs return success before
grabbing any locks when passed NULL.
Change-Id: If308d3dab36a1ef9650256a0343789c2aaf56930
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
Drop WFC QMI indications from FW / IMS based on corresponding
connection status withs platform driver.
Change-Id: Ifa5877e551503e371750cbc7fdf958cc975725dd
Signed-off-by: Manikandan Mohan <manikand@codeaurora.org>
Add gpu_cc_cx_gmu, gpu_cc_hub_aon & gpu_cc_hub_cx_int clock to the
list of clocks to vote for in order to access the KGSL SMMU register
space.
Change-Id: I84ff20b1c05c9045c3b271cd85ea98957fc4a6ce
Signed-off-by: Raghu Ananya Arabolu <rarabolu@codeaurora.org>
For a619_holi GPU, use RBBM_GBIF_HALT registers to halt GX
traffic and poll for the ack.
Change-Id: Iaae9084a04a5acc05ae5561d0a3c44da0ab5cebb
Signed-off-by: Pankaj Gupta <gpankaj@codeaurora.org>
A number of upstream patches are getting rejected by checkpatch in
treehugger despite following the correct checkpatch rules as they have
changed since the 5.4 release.
So update to the latest version, from 5.9-rc1, to quiet things that are
now valid.
Bug: 164355829
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
(cherry picked from commit a1d21081a60dfb7fddf4a38b66d9cef603b317a9)
Change-Id: Ic3768ec45972d43885fd3170f96ad03dd9d852fc
In many cases display panel information may not be available when the
touch driver is being probed. This change defers the probe if the
panel is not found to ensure that the correct touch driver is probed.
Change-Id: I52b8cd49342b6213639eefb8f10876178612af49
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
Currently, UFS driver checks if fDeviceInit
is cleared at several times, not period. This patch
is to wait its completion with the period, not retrying.
Many device vendors usually provides the specification on
it with just period, not a combination of a number of retrying
and period. So it could be proper to regard to the information
coming from device vendors.
v1 -> v2: switch the method to get time from jiffies to ktime
Bug: 163478167
Change-Id: I167d8a3480b1a75f6fadb3e73d15d67807608e93
Link: https://lore.kernel.org/linux-scsi/SN6PR04MB4640676A86C1A3C598CD804AFC440@SN6PR04MB4640.namprd04.prod.outlook.com/T/#t
Tested-by: Kiwoong Kim <kwmad.kim@samsung.com>
Signed-off-by: Kiwoong Kim <kwmad.kim@samsung.com>
Reviewed-by: Avri Altman <avri.altman@wdc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
cpuinfo.min_freq/max_freq gives the real min/max frequencies available.
whereas policy min/max offer current min/max of the policy, which
may be the desired values set by any other client like msm_perf or
even a postboot setting. This can potentially limit min/max
frequencies ranges.
Change-Id: Ia7978ccd99b419f68d06fec24dac1adfacff36b7
Signed-off-by: Kishore Sri venkata Ganesh Bolisetty <bsrivenk@codeaurora.org>
For all A615 GPU family GMEM base start with 1MB as
per requirement.
Change-Id: Ie4ca5b9d264492f10eff39daf758d5c72d32c653
Signed-off-by: Hareesh Gundu <hareeshg@codeaurora.org>
Currently, access to a secure channel is not allowed using the
non-secure device node. However, since OEMs could configure all
remote subsystems as secure, allow access to a secure channel even
when the application has opened the non-secure node, if the domain
supports unsigned PD offload.
Change-Id: I64ad1f57098cedfe2663c2b975c74bfdc74a3947
Acked-by: Thyagarajan Venkatanarayanan <venkatan@qti.qualcomm.com>
Signed-off-by: Himateja Reddy <hmreddy@codeaurora.org>
This needs to be explicitly added to the new slumber entry sequence
for gmu and rgmu based targets.
Change-Id: I582067d065b1c58cab3d1d149292dd94e182bd66
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
There can exist a race where we clear the A6XX_RBBM_INT_0_MASK
register while the gpu is going into IFPC. Fix this by clearing this
register before clearing the OOB.
Change-Id: I08e9dbccbfdbee93ba7ef35fbbc673938ee033da
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
This ensures that dcvs runs while the gpu is still actively working
on the same submission for longer than the idle timer.
Change-Id: I85f2ff21dc19a9e589d6ed918bebea4c42b2a39d
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
This property is used to enable dcvs or disable both dcvs and slumber
using kgsl power state transitions. Since gmu or rgmu based targets
don't use the power states, add and use gmu core flag to enable and disable
slumber for those targets.
Change-Id: Iace3af9427c7b84509c9041604972cf14e7cd675
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
Disable gpu interrupt inline instead of changing power states as gmu
based targets do not implement the power state machine. Make sure we
skip turning off the gpu interrupt during reset after stall on fault.
Change-Id: I49c1702005f88eab523f00b25923c9c65193c7ca
Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
memblock_alloc is not giving information of owner of the memblock_reserve,
when we pass through command line "memblock=debug".
Below information is not enough for memory statistics.
for example:
[ 0.000000] memblock_reserve: [0x000000013fbf8000-0x000000013fbf8fff] memblock_alloc+0x50/0x60.
To enhance the memblokc_dbg information or to get the exact owner of the
memblock_reserve added debug logs in different memblock alloc functions,
which is helpful for memory statistics.
After adding logs:
[ 0.000000] memblock_alloc: size: 4096 align: 4096 early_pgtable_alloc+0x18/0x98.
[ 0.000000] memblock_reserve: [0x000000013fbf9000-0x000000013fbf9fff] memblock_alloc+0x50/0x60.
Change-Id: Ibc9603f71fe3150af67398658d04c34f824b47e1
Signed-off-by: Faiyaz Mohammed <faiyazm@codeaurora.org>
Add clock rpmh data to communicate with RPMH clocks for sdxlemur.
Change-Id: I7884a5421c0174fc21fc4983f20dd7e2d454ab41
Signed-off-by: Naveen Yadav <naveenky@codeaurora.org>
Return NULL in the cases where the clk_hw is not registered with the
clock provider, but the clock consumer still requests for a clock id.
Change-Id: Ibac88bf6a89956d8dd4fdb0775606d7659efc747
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Link: https://lkml.kernel.org/r/20191014102308.27441-3-tdas@codeaurora.org
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Git-commit: ffe37ede0a9eb524162c683f48da8558d5323ddb
Signed-off-by: Mike Tipton <mdtipton@codeaurora.org>
This reverts commit 68815d5b7e which was
commit 0845447d9c783a502bd3e13af0f38aa4c7655a77 in 4.19.y and is commit
1e82a62fec613844da9e558f3493540a5b7a7b67 upstream.
It was reported that this issue affects Android devices and a vendor
wishes it to be applied back, ABI is not an issue here.
Leaf changes summary: 5 artifacts changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 4 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
4 functions with some sub-type change:
[C] 'function void genl_notify(const genl_family*, sk_buff*, genl_info*, u32, gfp_t)' at genetlink.c:1109:1 has some sub-type changes:
[C] 'function int genl_register_family(genl_family*)' at genetlink.h:145:1 has some sub-type changes:
[C] 'function int genl_unregister_family(const genl_family*)' at genetlink.h:146:1 has some sub-type changes:
[C] 'function void* genlmsg_put(sk_buff*, unsigned int, unsigned int, const genl_family*, int, unsigned char)' at genetlink.h:150:1 has some sub-type changes:
'struct genl_family at genetlink.h:52:1' changed:
type size changed from 1024 to 896 (in bits)
2 data member deletions:
'int (net*, int)* genl_family::mcast_bind', at offset 512 (in bits) at genetlink.h:67:1
'void (net*, int)* genl_family::mcast_unbind', at offset 576 (in bits) at genetlink.h:68:1
there are data member changes:
'nlattr** genl_family::attrbuf' offset changed from 640 to 512 (in bits) (by -128 bits)
'const genl_ops* genl_family::ops' offset changed from 704 to 576 (in bits) (by -128 bits)
'const genl_multicast_group* genl_family::mcgrps' offset changed from 768 to 640 (in bits) (by -128 bits)
'unsigned int genl_family::n_ops' offset changed from 832 to 704 (in bits) (by -128 bits)
'unsigned int genl_family::n_mcgrps' offset changed from 864 to 736 (in bits) (by -128 bits)
'unsigned int genl_family::mcgrp_offset' offset changed from 896 to 768 (in bits) (by -128 bits)
'module* genl_family::module' offset changed from 960 to 832 (in bits) (by -128 bits)
4 impacted interfaces
Bug: 163861691
Cc: Sean Tranchetti <stranche@codeaurora.org>
Cc: Will McVicker <willmcvicker@google.com>
Cc: Saravana Kannan <saravanak@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ieaa81ed2445ff12a9a8e00f69d64c78baeec07e5
Set CONFIG_LEDS_TRIGGER_TIMER=y to enable the "timer" trigger for the
LED subsystem. This creates the sysfs parameters "delay_on" and
"delay_off" for LEDs, which can then be used to specify a blinking
pattern for them.
Bug: 163765274
Change-Id: I66ada688aa5026253e76588ae1d6d85eb4cd8536
Signed-off-by: Guru Das Srinagesh <gurus@codeaurora.org>
[fixed up arm64 config location as it was incorrect - gregkh]
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
There is a possibility of failing probe after setting suspend and
s2idle ops. Register suspend ops later during probe after which
there is no failure.
While at this, also add missing dma_free_coherent call.
Change-Id: I824f5d433623a4d7309875a61c68778f74d139f7
Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
Qcom SDHC uses base clock in calculating the data-timeout
value. So set SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK quirk.
The controller internally multiplies the timeout control register
value by 4 while calculating the data timeout, so set timeout_clk_div
as 4 to get the correct data-timeout counter value correctly.
Change-Id: I73feb37f92b4a7a0d740a262a4c68ec458e6d154
Suggested-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
Signed-off-by: Sarthak Garg <sartgarg@codeaurora.org>
Some SD host controllers multiplies the timeout-clk internally while
deriving the timeout value. So allow vendor driver to update the
timeout-clock to get the correct data timeout counter value.
Change-Id: Iacbd98f5251d5312c999478b0d0aac3abc339323
Suggested-by: Veerabhadrarao Badiganti <vbadigan@codeaurora.org>
Signed-off-by: Sarthak Garg <sartgarg@codeaurora.org>
Current find best target cpu is not check cpu_allowed mask, so
it is possible to place the task on wrong cpu, add cpu mask
check when find best target.
Change-Id: I8075657fa67704ab8d9d94d542a7983bcf8d034f
Signed-off-by: Biao Long <blong@codeaurora.org>
b519ac4237 ("ANDROID: vendor_hooks: add waiting information for
blocked tasks") changed the abi, but the definition xml file never got
updated.
Bug: 162776704
Cc: Sangmoon Kim <sangmoon.kim@samsung.com>
Fixes: b519ac4237 ("ANDROID: vendor_hooks: add waiting information for blocked tasks")
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ibb92f7c0e29a7a05a997e16a07b05053a6c05ae3
User should not be provided address out of SVM region.
Return error for any such requests from user.
Change-Id: If149044039b156f8192f405714f5c1a0571004e7
Signed-off-by: gkiranku <gkiranku@codeaurora.org>