MSMCOBALT v2 uses different open-loop fuse reference voltages
than MSMCOBALT v1. Update the cpr3-mmss-regulator driver so that
it uses the proper set of reference voltages for v1 and v2. Also
change the compatible string of existing MSMCOBALT
cpr3-mmss-regulator devices to be for v1 explicitly so that the
v2 reference voltages are not erroneously used on v1 boards.
Change-Id: I6afda07bb4f37fc753d11e0c142175b962069f0c
CRs-Fixed: 1054539
Signed-off-by: David Collins <collinsd@codeaurora.org>
UFS clock scaling might start kicking in even before the device
is running at the fastest interface speed which is undesirable.
This change moves the clock scaling kick start only after the
device is detected and running at the fastest interface speed.
Change-Id: Id9af7b31eab5b67f4cf2eb38c4e90a568e7968c5
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
cleanup, avoid printing messages on normal behavior.
Change-Id: I9258ae9a0db8028f8bec88c1d56a59c86377f366
Signed-off-by: Amir Samuelov <amirs@codeaurora.org>
Device reboot to edl, it's for switching device to emergency dload mode.
So it's need to keep device to do warm reset.
Change-Id: I8f5d0845c6f2d37ea740949ce56e02c4cc7412be
Signed-off-by: Lijuan Gao <lijuang@codeaurora.org>
Add gpio controller node for msmcolbalt, so that we can initialize
and control us_euro/hifi_hph_en switches on board.
Change-Id: I5e39d88ab2e814d7bfb386b0355a65ee166cfbb0
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
Add pinctrl support in machine driver to control hph_en0/hph_en1
gpios owned by wcd934x.
Change-Id: I99a7746259c563379d060c10bbd602d3e6a65746
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
Add an initial core-dev mapping table for memlat to
improve power and performance.
Change-Id: I90b400adb7607aa9833a39e0d58e978336b6c1bc
Signed-off-by: Amir Vajid <avajid@codeaurora.org>
Add a core to memory frequency mapping table, which establishes
a relationship between the core frequency and its corresponding
bandwidth vote.
The governor expects a "qcom,core-dev-table" table as part of a given
memlat hardware monitor's device tree node.
This table is read upon registration of the memlat governor. The table
is then used to determine the memory bandwidth vote corresponding to the
maximum of the core frequencies.
CRs-Fixed: 1054146
Change-Id: I9df118da1433125b02c937bf1799a0944b110fac
Signed-off-by: Rohit Gupta <rohgup@codeaurora.org>
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
Suggested-by: Saravana Kannan <skannan@codeaurora.org>
Disable CoreSight ETM and remote ETM configuration for perf defconfig.
ETM configuration requires jtag save and restore configuration to be
enabled which requires QDSS core clock to be on all the time.
Change-Id: I57019e9b6be7f9020eed3cf730bf5b37ea4a1f98
Signed-off-by: Shashank Mittal <mittals@codeaurora.org>
When edid mixer control is executed, if the hdmi ops is
not set, the mixer control get_info() returns error.
This error is treated as fatal by the caller.
Fix by returning valid mixer control info when hdmi ops
is null.
Change-Id: I0097a75d94690b199fab1adc7f2ff3faa2d82e7b
Signed-off-by: Shiv Maliyappanahalli <smaliyap@codeaurora.org>
Add slimbus_6_rx phandle reference for asoc-cpu property in
sound node for wcd934x codec. This enables audio playback
support over headphones for msmcobalt platform.
Change-Id: I36050f122e67f95cc7f2dbdd3c73b4de5baea785
Signed-off-by: Phani Kumar Uppalapati <phaniu@codeaurora.org>
Allow for greater granularity of QoS clocks enabled when
enabling clocks for QoS configuration for each node. Current
implementation requires all QoS clocks related to the parent
fab to enabled, which works well for mass QoS programming at
probe time, but turns on unnecessary clocks when QoS programming
defers at initial client request. This fixes an issue where
Camera's initial client vote also caused the toggling of mdss
gdscs which created a deadlock situation where the notifier
callback from MDSS GDSC tries to obtain the same lock held by
Camera's call in the same thread.
Change-Id: Iff1d086fcfc92a709d198f84227cad9bd6f57646
Signed-off-by: David Dai <daidavid1@codeaurora.org>
Disable ipa-hw on cobalt APQ revisions due
to APQ doesn't have any modem use-cases.
Change-Id: I3251ffcac5cc1257befc5f57d1984a33bf530c23
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Some of the CPE (Codec Processing Engine) registers in wcd934x audio
codec are read-write registers with only few bits that are read-only.
Add change to mark such registers as volatile to avoid reading stale
value from cache for the read-only bits.
CRs-Fixed: 1049012
Change-Id: I6d77cf57e940c9efa6be64565d9ea7d328f0cd9b
Signed-off-by: Bhalchandra Gajare <gajare@codeaurora.org>
Use separate notifier for cpu dying callback. This way we can give
higher priority to this notifier. That will make sure that etm disable
code gets executed before etm save register code during cpu power
collapse and etm's registers restore code gets executed before etm
enable code while cpu is coming back online.
Change-Id: Ibebda314eebd71945e9eae8aa2339fc79c475556
Signed-off-by: Shashank Mittal <mittals@codeaurora.org>
If the WDSP component framework does not detect the concerned subsystem,
then the G-Link SPI Transport returns error. This prevents the system
from suspending.
If the concerned subsystem is not found, then let the system to suspend.
CRs-Fixed: 1055800
Change-Id: Id17993dbf28b45308464a7e0d1e5404747fefee1
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@codeaurora.org>
The video client signals to ion that it is done using an amount of memory
using the ioctl ION_IOC_DRAIN. However, the video client may have
previously shared this memory with other clients, such that the reference
count on existing ion_buffers is greater than one. Work around this issue
for now by assuming that the ion_buffers will be freed by the other users
within a short duration after the video client makes the ION_IOC_DRAIN
call.
Change-Id: I113ca1ff26e4949b27879ccf67af6d5f04a67b06
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
hyp_assign_table() is a costly operation during which nonsecure interrupts
are disabled. Split this operation into multiple parts for better
real-time behavior.
Splitting is done by the following criteria:
maximum number of physically contiguous memory regions
maximum total memory size.
Here is a chart showing the average performance of hyp_assign_table() with
N physically contiguous chunks each with size X.
#chunks chunk_size(pages) total_memory(pages) time(ms)
2 1 2 3.354
2 4 8 12.979
2 512 1024 4.349
8 1 8 4.714
8 4 32 26.781
8 512 4096 8.724
32 1 32 17.093
32 4 128 50.700
32 512 16384 26.717
128 1 128 71.076
128 4 512 126.305
Based on the above, select a maximum of 32 chunks or 512 total pages
as the limits.
Change-Id: I530cfdce76c8a2c38f60d6118647eaefd269e693
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
Allocate objects via kzalloc() when possible. For the case where a large
chunk (512 Kb) of physically contiguous memory is required, continue to use
a special purpose buffer reserved at boot. Since this special purpose
buffer is no longer used for random metadata, the associated code is
simpler to understand.
Change-Id: I85078f351293b556a501e9aca075ef87e2e86afd
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>