Support Nominal and Turbo frequency scaling for the Silver
cluster of the msmcobalt chipset. This enables CPU clock scaling
up to the 1.881 GHz.
Change-Id: I1fdde432e267c1161ac5d28bdee4af57c23137ec
CRs-Fixed: 1022853 1021593
Signed-off-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
The graphics clock frequencies need to be updated for
msm8996 Pro. Add support for doing the same using the
bin fuse values.
CRs-Fixed: 1022663
Change-Id: I60185482ae9b5364e297370593d95cce056b314e
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Print format %p displays the kernel address while bypassing the
kptr_restrict sysctl settings.
Change the print format for addresses from %p to %pK. If
kptr_restrict is enabled, addresses are printed as zeroes. To view
the actual addresses, disable kptr_restrict by -
echo 0 > /proc/sys/kernel/kptr_restrict
CRs-Fixed: 987041
Change-Id: I2eb33c63168ab26818dfdb3e11315f2ce8f24fa5
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Increase the power-collapse and retention FSM exit unstall
timer to 5 us. This timer is used to wait after a core asserts
its request to exit PC or RET.
Change-Id: Icb5c5f219a197a158e00f600e68111ff699062b7
CRs-Fixed: 1023187
Signed-off-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
Increase miniumum PLL frequency to 825.6 MHz. This is necessary to
ensure stable operation when OSM engages the droop path to the
PLL.
Change-Id: Ide3309d4dc713892703e2eb5ee33c9db7f990156
CRs-Fixed: 1021593
Signed-off-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
Slow buses regmap holds a mutex lock, while for fast buses regmap holds a
spinlock. In order to remain compatible with slow buses spinlocks should
not be held before calling the regmap API.
CRs-Fixed: 1017800
Change-Id: I93aa6df8c7ec1916ba23d21d92e477510db949da
Signed-off-by: Harry Yang <harryy@codeaurora.org>
Some devices behind IOMMUs might end up in IOMMU groups due to DMA
aliasing. The iommu_attach_device API expects a single device in a
group all by its lonesome, so it fails when a device is passed in that's
part of a group. Use iommu_attach_group to accommodate these types of
devices.
CRs-Fixed: 1023180
Change-Id: I9601efd300c7f428c4576e6ecf6d31791d0b47bd
Signed-off-by: Mitchel Humpherys <mitchelh@codeaurora.org>
Pass device tree information for WCN3990 BT/FM chipset
presence on MSMCOBALT MTP and CDP targets to machine driver.
Change-Id: Iab4f544532e57682eb5dbfe7865850b8e978f1b4
Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
This is needed to enable segmentation pkts offload feature
in IPA-HW called GSO (Generic Segmentation Offload).
Change-Id: If43428f0eb53370ca725480b3cd13e7b53e643c3
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Round robin ADC (RRADC) provides clients ability to read
supported channels from PMIcobalt RRADC such as battery ID,
battery thermistors, DCIN and USBIN voltage and current.
Change-Id: If4503b0e25ac151039d1743a007ba1624a2e90f4
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
While the transport always supports scatter-gather, the
capability advertised through this IOCTL is configured
from the device tree. Add support on ipav3.
Change-Id: Idf626cb5a22d2ed5152ab76dcc5fe56696a631a6
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Rename the flash and WLED devices available in cobalt platform
to use the same naming convention.
Change-Id: I812f0f6b38e7e9973cc9a0c8bfd6fb5078f719ff
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
For this GRO feature, IPA-driver should not
de-aggregate the pkt received from modem, also
no need to attach status. Also netmgrd will
call ioctl to wan-driver to indicate when
this feature will be enable.
Change-Id: I1bc6fb87684ee8da6126dc331debf5880adceb4f
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
When start_hwmon() runs with another thread trying to hotplug a
CPU the two threads can enter a deadlock situation as follows:
Thread A (start_hwmon()) Thread B (CPU down)
get_online_cpus()
|
atomic_inc(&cpu_hotplug.refcount)
CPU down
|
mutex_lock(&cpu_add_remove_lock)
|
cpu_hotplug_begin() waits on
cpu_hotplug.refcount to reset
register_cpu_notifier()
|
mutex_lock(&cpu_add_remove_lock)
With this change the notifers are registered and unregistered per
device rather than having a common notifier block for all the memlat
devices and unregistration only happens on stop_hwmon. This makes it
possible to move the registration outside the hotplug lock without
any race between multiple memlat devices.
Change-Id: I6ad561fe4967042e45190aea2c9b7fcfe05bafdd
Signed-off-by: Rohit Gupta <rohgup@codeaurora.org>
Existing controller health detection uses a critical
temperature threshold of -40degC. Update the value to -95degC
so that there are no false positives seen when min threshold
is disabled and temperature goes below the threshold value.
Change-Id: If27ecfbb7b080080074bfe142f493fbf8f53f673
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Remove keep_awake flag from ODU bridge to allow IPA to
go to clock gating.
CRs-Fixed: 1013927
Change-Id: Ic9efb8555ec4bdad2c099719de4ed56677b194ca
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Fix to IPA driver debugfs logic to read filtering
and routing directly from HW.
CRs-Fixed: 1020271
Change-Id: I6bb5f9a01e3f41107d7b5bdf7c19557546573463
Acked-by: Ady Abraham <adya@qti.qualcomm.com>
Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
This reverts commit 05f3cbbe5c
("msm: mdss: hdmi: check clk state before power on"). The check
for clock state was required for earlier target's fast hot plug
use cases, and uses the clock framework for check for clock rates.
This approach does not work on msmcobalt and causes the power on
sequence for HDMI to fail.
CRs-Fixed: 1022772
Change-Id: I320427f810fd35b11335685bae95b3c5fb9c8fee
Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
Add device tree support for MSM8996pro v1.1 along with different PMIC
configurations it supports.
CRs-Fixed: 1004223
Change-Id: I46f2ec5170fb204e9e0535aca1482b5e39e21de3
Signed-off-by: Satya Durga Srinivasu Prabhala <satyap@codeaurora.org>
Presently we were passing NULL dma_handle while
making dma_alloc_coherent call. This is an issue
as alloc function would try to populate handle
value with dma address and would end up getting
NULL pointer error. Fix this.
Change-Id: I38ebb9bbae2d6e1e1311fe438b3c8fc3f65e5692
Signed-off-by: Susheel Khiani <skhiani@codeaurora.org>
size_t type data should not be held under variable of type
int, as this can truncate large values especially on a
64bit system. Fix it.
Change-Id: I5ad1ab321738772a99920e3fa287bda266cb05ed
Signed-off-by: Shiraz Hashim <shashim@codeaurora.org>
Use DTS configuration file to initialize IPA memory partitions
in order to allow per target configuration decoupled from code.
Change-Id: If770b9315807e51e46cd94dec6234ef186cf4fcb
CRs-Fixed: 1022125
Signed-off-by: Gilad Landau <glandau@codeaurora.org>
Since ion alloc can be called by userspace,eg gralloc.
When it is called frequently, the efficiency of kswapd is
to low. And the reclaimed memory is too lower. In this way,
the kswapd can use to much cpu resources.
With 3.5GB DMA Zone and 0.5 Normal Zone.
pgsteal_kswapd_dma 9364140
pgsteal_kswapd_normal 7071043
pgscan_kswapd_dma 10428250
pgscan_kswapd_normal 37840094
With this change the reclaim ratio has greatly improved
18.9% -> 72.5%
Change-Id: I20ea0e4ad0537f6e90efbc59fb8d56d691ee3bde
Signed-off-by: Chen Feng <puck.chen@hisilicon.com>
Signed-off-by: Lu bing <albert.lubing@hisilicon.com>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Git-commit: 2ef230531ee171a475fc3ddad5516dd7e09a8a77
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[vinmenon@codeaurora.org: Resolved minor merge conflicts]
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
DPCM8 and DPCM6 are 10 bit to 8 and 10 bit
to 6 bit compression formats respectively
which sensor outputs and it is decompressed
to 10 bit in CSID
Change-Id: I8ec4de7d9cfa5e9c86d97bd9cb81feddc97dc7b8
Signed-off-by: Vijay kumar Tumati <vtumati@codeaurora.org>
Signed-off-by: Sureshnaidu Laveti <lsuresh@codeaurora.org>
Some workarounds need to be applied only for v1.0 and v1.1 of
pmicobalt. For drivers to check and compare the versions, add
definitions for pmicobalt versions.
CRs-Fixed: 1018090
Change-Id: I3c6c0b470c7d15802c7cf4cb8ced85548dbb81c7
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
Add support for controlling the graphics clocks on
MSMCOBALT v2.
CRs-Fixed: 1015446
Change-Id: Ia94606113b112a5e363e342a0ad1d977a48b3d72
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Use the gfx_stub_vreg regulator node for sourcing the graphics
clocks and GDSC on the pre-silicon platforms. Note that CPR
changes are still required for the graphics rail on the actual
target.
CRs-Fixed: 1015446
Change-Id: Ib92b11c23785e737f91ad09bcbb3d0b849d3a2bf
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Enable the linux clock driver support for multimedia
clocks on MSMCOBALT v2.
CRs-Fixed: 1015446
Change-Id: Ice373ce1656f1ab045eefd57dcd700a4c20deedf
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
Add support for controlling the multimedia clocks on
MSMCOBALT v2.
CRs-Fixed: 1015446
Change-Id: I636001ea91e7be1e2adec2ea7cd3d9aadfcc39a2
Signed-off-by: Deepak Katragadda <dkatraga@codeaurora.org>
'commit 3a7ce1db5661 ("usb: gadget: gsi: Decrement USB gadget pm usage
count on cable disconnect")' added decrementing USB gadget device's pm
usage count from STATE_INITIALIZED which results into multiple time
decrementing USB gadget device's pm usage count on USB cable disconnect
as below:
1. On USB cable disconnect, USB bus suspend event is being received which
post EVT_DISCONNECTED. If state is STATE_CONNECTED, ipa_work_handles()
decrements USB gadget device's pm usage count, and move state to
STATE_INITIALIZED.
2. Due to USB cable disconnect, gsi_disable() posts EVT_DISCONNECTED.
This event is processed into STATE_CONNECTED causing additional decrement
of USB gadget device's pm usage count.
Due to above case, USB goes into low power mode with dwc3's pm usage
count negative. On connecting USB host mode cable, xhci resume is failing
due to dwc3's (parent of xhci) is having negative usage count which results
into no USB host mode functionality (pm_runtime_get_sync() returns -EBUSY).
Hence revert commit to allow USB Host mode functionality.
CRs-Fixed: 1020388
Change-Id: I853aba1d2d03945ee49adde7f0ea483cd406ce2b
Signed-off-by: Mayank Rana <mrana@codeaurora.org>
Add support for the global clock controller found on MSM8996
based devices. This should allow most non-multimedia device
drivers to probe and control their clocks.
Change-Id: I559f5976b56bf8933df2c68fc4e29b2bd0ce1160
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Taniya Das <tdas@codeaurora.org>
Add IPC logging mechanism so that all the driver logs can be
retrieved on the need basis.
Also use pr_fmt to format the logs so that icnss driver logs are
consistent.
Change-Id: I977b04964ac28c18f4ad85094746aa864f03d0c3
Signed-off-by: Prashanth Bhatta <bhattap@codeaurora.org>
Kill unused scheduler knob and parameter sched_enable_power_aware. HMP
scheduler always take into account power cost for placing task.
Change-Id: Ib26a21df9b903baac26c026862b0a41b4a8834f3
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Kill unused scheduler knob sched_account_wait_time. With this change
scheduler always accounts task's wait time into demand.
Change-Id: Ifa4bcb5685798f48fd020f3d0c9853220b3f5fdc
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
When a buffer is added to the LRU list, a reference is taken which is
not dropped until the buffer is evicted from the LRU list. This is the
correct behavior, however this LRU reference will prevent the buffer
from being dropped. This means that the buffer can't actually be dropped
until it is selected for eviction. There's no bound on the time spent
on the LRU list, which means that the buffer may be undroppable for
very long periods of time. Given that migration involves dropping
buffers, the associated page is now unmigratible for long periods of
time as well. CMA relies on being able to migrate a specific range
of pages, so these these types of failures make CMA significantly
less reliable, especially under high filesystem usage.
Rather than waiting for the LRU algorithm to eventually kick out
the buffer, explicitly remove the buffer from the LRU list when trying
to drop it. There is still the possibility that the buffer
could be added back on the list, but that indicates the buffer is
still in use and would probably have other 'in use' indicates to
prevent dropping.
Change-Id: I253f4ee2069e190c1115afc421dadd27a7fa87dc
Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
This change fixes few compilations issues seen
if we enable the SDHCi MSM driver.
Change-Id: Iaa556e189cbbc6a7f9c3d485e94a43cb21a968a7
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Make sure that the session count does not exceed the maximum
sessions to avoid buffer overflow.
Change-Id: I1a9830a6f859d7d525247d27d0a143997998d997
Acked-by: Bharath Kumar <bkumar@qti.qualcomm.com>
Signed-off-by: Sathish Ambley <sathishambley@codeaurora.org>
msm-3.18 kernel had our own implementation of 64-bit ADMA support but
upstream kernel have now added its own implementation of 64-bit ADMA
support hence this patch removes some of the remaining variables from
our implementation.
Change-Id: I3ea8e9e498b25b75fb1f5ccc4ffe5f6986cd564a
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
This patch adds check to enable the 64-bit DMA only if the chipset
supports the same.
Change-Id: I5dbe6f91d5e530b289f4cf395ae7b673acd85fcf
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
SDHCI_USE_ADMA_64BIT flag was being used by msm-3.18 kernel but now that
upstream sdhci driver has introduced support for 64-bit ADMA, it defined
new flag SDHCI_USE_64_BIT_DMA. Hence replace all the SDHCI_USE_ADMA_64BIT
references with SDHCI_USE_64_BIT_DMA flag.
Change-Id: I6a1e426c156d4ddb92bba00b5ec0cfb156d9550b
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Change "man_bkops_en" to "bkops_en" to hold the status of
both manual and auto bkops.
Change-Id: I60029bae67cebb2c91147ad741b96f4caed9c1d9
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
There seems to be bit map usage overlap between few MMC_QUIRKS_*,
this change fixes it.
Change-Id: I717a2de1261ed2de1a8c730b005b137f0687d969
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
This reverts commit 82ccc79fd3c4456b7b344db4576e874d324c6243.
Similar change is already present and this one just added the
duplicate code hence revert it.
Change-Id: Ia96ebe80e4fb7987f9e98e42575ff2ebe153dd23
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
If zero length ADMA descriptor with "Tran" attribute is queued to ADMA
descriptor table then host controller ADMA engine might get stuck.
Currently we are seeing zero length descriptor getting queued in for
SDIO transactions:
SDHCi driver requires that any data buffer address should be 4-byte
aligned for 32-bit ADMA and 8-bytes aligned for 64-bit ADMA. For 64-bit
ADMA, it forces 8-byte alignment for any data buffer addresses. This
aligment requirement is not an issue with eMMC/SD cards as their
transactions are always in multiple of 512-bytes (block size) and hence
sdhci driver would always get the data buffers whose address is properly
aligned.
SDIO can have transactions less than 512-bytes. Hence its quite possible
for driver to receives data buffer addresses which are not properly
aligned. And if they are not aligned, SDHCi driver bounces the non-aligned
bytes to pre-allocated aligned buffer until the rest of the data buffer
becomes aligned. But this logic has a bug where after moving the
non-aligned number of bytes to aligned buffer, it assumes that we will
always be left with non-zero number of bytes in original data buffer and
hence driver ends up queuing one more descriptor which can be of zero
length.
Fix this by checking for the remaining data length before queuing up the
next descriptor.
Change-Id: I7af77b2a2661c00f2b1da47953717b1506bdba83
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
[subhashj@codeaurora.org: fixed merge conflicts]
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
There's a deadlock between runtime-suspend and devfreq monitor.
runtime-suspend context:
[<ffffffc00008771c>] __switch_to+0x7c
[<ffffffc000e0212c>] __schedule+0x53c
[<ffffffc000e02404>] schedule+0x74
[<ffffffc000e02770>] schedule_preempt_disabled+0x14
[<ffffffc000e04c8c>] __mutex_lock_slowpath+0x1dc
[<ffffffc000e04e54>] mutex_lock+0x2c
[<ffffffc000acfc98>] devfreq_monitor_suspend+0x1c
[<ffffffc000ad160c>] devfreq_simple_ondemand_handler+0x4c
[<ffffffc000acf8b4>] devfreq_suspend_device+0x2c
[<ffffffc0008fa5a0>] mmc_suspend_clk_scaling+0xac
[<ffffffc000900398>] _mmc_suspend.isra.11+0x38
[<ffffffc000900798>] mmc_runtime_suspend+0x1cc
[<ffffffc0008fd4c4>] mmc_runtime_suspend+0x18
[<ffffffc000579c98>] __rpm_callback+0x40
[<ffffffc000579d0c>] rpm_callback+0x40
[<ffffffc00057a338>] rpm_suspend+0x25c
In the above stack, runtime-suspend is waiting on the devfreq mutex.
In the below stack, the mutex has been acquired and since the device
power state is DEV_SUSPENDING, devfreq is waiting for the device to
resume, thus causing a deadlock.
[<ffffffc000e02404>] schedule+0x74
[<ffffffc00057abdc>] rpm_resume+0x264
[<ffffffc00057ae80>] __pm_runtime_resume+0x70
[<ffffffc0008f880c>] mmc_get_card+0x1c
[<ffffffc0008f9d08>] mmc_devfreq_set_target+0x154
[<ffffffc000acf9d0>] update_devfreq+0xd0
[<ffffffc000acfb38>] devfreq_monitor+0x2c
Fix this by not waiting for device to resume in devfreq. The suspend would
ensure that this devfreq monitor thread is suspended before suspending the
device.
Change-Id: Ic0e89becbfded35c90c4061f0fe03d61125f66d5
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Hynix emmc cards are causing read data timeout.
Increase timeout value to max of 4sec and add card
quirk for all Hynix emmc cards.
Change-Id: I78637dc787964ec5cafe297587d6a12ecf1d31c6
Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>