This driver is for the ahub with using DAPM.
It supports kcontrols to route within the ahub
clients by user space so we can route the memory
to amx, adx and other ahub clients to I2S for
playback/capture.
Bug 1354235
Bug 1373091
Change-Id: Ia43b007de7c1161ce551087428a090ff2bf1e09e
Based-on-work-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Arun Shamanna Lakshmi <aruns@nvidia.com>
Signed-off-by: Songhee Baek <sbaek@nvidia.com>
Reviewed-on: http://git-master/r/289919
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
There are a couple issues with system suspend handling in the Tegra
ASoC codec drivers which are:
1. Most drivers the system suspend callback does nothing and this
means that if the codec device is active when suspend occurs then
the codec will not be suspended correctly. This has been seen to
cause system crashes in the I2S driver when the system is suspended
and resuming while audio playback is active.
2. The codec suspend handlers may be called twice when entering
suspend. Suspend handlers should only be called once, but currently
they are called twice; once by the PM core and once when the APE
power-domain is turned off (if it is on when suspend occurs).
Fix the above two problems by:
a). Adding proper system suspend and resume handlers for all codec
drivers, to suspend and resume the device if not runtime PM
suspended on entering suspend.
b). Remove the code to call the PM callbacks from the APE power-domain
code.
Finally, make the system suspend callbacks for these codec drivers
late suspend callbacks to ensure that the sound core has suspended
any on-going activity, before we attempt to suspend these codec
devices.
Bug 200275736
Change-Id: I7f43b8650d972356b0a529404792fe22125dde16
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: http://git-master/r/1488962
(cherry picked from commit 5a7f3ab3d1e6d9d136859b9263b91e3f6998366b)
Reviewed-on: https://git-master/r/1511033
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Linux runtime PM automatically handles the runtime resuming and
suspending of a parent device and therefore, it is not necessary
for a child device to explicitly runtime resume or suspend the
parent.
The various Tegra ASoC codec drivers explicitly runtime resume
and suspend the parent device from within their runtime PM callback
handler. This should not be necessary.
Furthermore, currently the various Tegra ASoC codec drivers are
not suspended correctly if active when system suspend occurs. During
system suspend it is common to directly call the runtime PM callbacks
to suspend and resume the device if active from the system suspend
callbacks. However, the APIs, pm_runtime_get/put(), cannot be called
during system suspend and so the runtime PM callbacks for these codec
drivers cannot be called from the context of the system suspend
callbacks.
Remove the calls to runtime resume and suspend the parent device from
the runtime PM callbacks for the various Tegra ASoC drivers. This will
allow us to fix suspending and resuming of the Tegra ASoC drivers
across system suspend.
Bug 200275736
Change-Id: I9130d8e1c9f91a439651d279ffdf389474018f92
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: http://git-master/r/1488961
(cherry picked from commit 6ae92527f6948ff484af761c1aa1073f79e13a8a)
Reviewed-on: https://git-master/r/1511032
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Below are the hypothetical scenarios
- Drivers are in suspend state while reboot and PCM Open call from
userspace is received after driver shutdown [APE is power gated
already]
- PM domain handling doesn't ensure proper functionality after driver
shutdown is called
The change handles with the beloe fix
- ALSA PCM Open API first executes runtime resume of each driver.
So need to prevent any reg access in runtime resume of drivers.
- ALSA PCM Open executes ADMAIF startup after runtime resume of
each driver. If ADMAIF startup returns failure based on shutdown,
PCM Open operation will fail, this will break PCM Open path and
will ensure no further ALSA APIs/Callbacks are called.
Bug 200289815
Change-Id: I46060d74b3271a870a0bcfc727972c97e2a73931
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: http://git-master/r/1475216
Reviewed-on: http://git-master/r/1499116
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
Reviewed-on: http://git-master/r/1502050
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Tested-by: Sachin Nikam <snikam@nvidia.com>
Adding more configurability to the dspk driver where,
user can program the thresholds as per the requirement.
If the control is not set, default configuration of
zero threshold is used.
Bug 200283222
Change-Id: I9cbf94c5553e11aeb0b4cc85ceba29fc74ceabc2
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: http://git-master/r/1319913
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
GVS: Gerrit_Virtual_Submit
As per HW Bug 200208400 we need to clear asrc
interrupt twice to update interrupt status
register.
Bug 200219757
Change-Id: I741f27cca155e45f0112f505eed415852f13e219
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/1233840
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Support dynamic pinmux settings for dspk, this change will help
to runtime configure the pinmux register to use pinmuxed path.
Change-Id: Ie87499a822854d8f077530f49d5516883c987839
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: http://git-master/r/1181859
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
Driver support for all the APE interfaces. Also cleanup the machine
driver code.
Bug 1782976
Change-Id: Ifdaa3b19de661afd5231d9bface6fc9547f0eb3c
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: http://git-master/r/1177588
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Viswanath L <viswanathl@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
In lane enable functionality currently
we don't check the existing state of lane.
Change make sure to do nothing if current
state is same as previous state.
Bug 200179285
Change-Id: Ic7492fbc5aabd093d49dba546d0fb17282a30bcf
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
(cherry-picked from commit ebf11df77e0322e473fc4fa6ae0020135f7c6ea9)
Reviewed-on: http://git-master/r/1160156
Reviewed-on: http://git-master/r/1158151
(cherry picked from commit bd562cf6b19bf605f749617335da151baa9f0a71)
Change-Id: I3f61d79ffd88e479fe320e06cd19f7c6183bf112
Reviewed-on: http://git-master/r/1167575
GVS: Gerrit_Virtual_Submit
Tested-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Changes are done as needed for kernel 4.4 transition.
- select SND_SOC_COMPRESS for offload
- register jack at card level
- use snd_soc_dapm_to_codec() to access codec from widget
- use CONFIG_SND_SOC_TEGRA210_ADSP_ALT for adsp code
Bug 200193757
Change-Id: I0adbc9936d9d99f49d05af5def628af4d3c86790
Signed-off-by: Ravindra Lokhande <rlokhande@nvidia.com>
Reviewed-on: http://git-master/r/1154433
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
The dapm field of the struct snd_soc_codec is removed, to access
dapm field use snd_soc_codec_get_dapm()
Change-Id: I2bf7f89058bd65baf2d89ffa926af9fe1e418927
Signed-off-by: Ravindra Lokhande <rlokhande@nvidia.com>
Reviewed-on: http://git-master/r/1157272
GVS: Gerrit_Virtual_Submit
Reviewed-by: Viraj Karandikar <vkarandikar@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Added ability to disable h/w compensation
Disabling h/w compensation would work well
with mem-to-io
Added ability to set WORD_CNT for input and
output thresholds
Bug 200194803
Change-Id: Iea8942105e61ce307ad394d75de59836796f3fbb
Signed-off-by: Sidharth <svarier@nvidia.com>
Reviewed-on: http://git-master/r/1135127
(cherry picked from commit 1b25a112a33b249696a87b8527afc1d132a9cbba)
Reviewed-on: http://git-master/r/1142696
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Changing frac max to unsigned int as
mask for asrc frac is 0xffffffff.
Bug 200185841
Change-Id: Ic47896b47fa5e4a5e4eb7320a69d6b94747715a5
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/1113391
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
To make sure last transaction on stream
was clean we soft reset the lane before
closing it.
Bug 1736992
Bug 200181219
Change-Id: I0df111d8d535a574e021a459b7d0c2c37a2c6345
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/1112188
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Nor Cho <ncho@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Fixed the following sparse warnings:
- warning: symbol 'tegra186_asrc_ahc_cb' was not declared.
Should it be static?
- warning: symbol 'tegra186_arad_ahc_cb' was not declared.
Should it be static?
- warning: Using plain integer as NULL pointer
Bug 200088648
Change-Id: I26ca06f95517269840248b703969fb79e2c43c91
Signed-off-by: Amit Sharma <amisharma@nvidia.com>
Reviewed-on: http://git-master/r/1011362
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Move register store/restore from pm API's to
runtime API's for platforms, with CONFIG_PM_SLEEP
not enabled, to work.
Bug 200166409
Change-Id: I0c7cda13ebf7318bb9d27549fc856d20ebd41cdc
Signed-off-by: Uday Gupta <udayg@nvidia.com>
Reviewed-on: http://git-master/r/932646
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Nitin Pai <npai@nvidia.com>
If ARAD lane gets locked before ASRC is enabled
the ASRC misses the ratio packet from ARAD and does
not lock. Requesting ratio packet again from ARAD
enables ASRC to lock in such cases.
Bug 200158741
Change-Id: I63841b46eec832f3f16be9fc78fa51d723d9e825
Signed-off-by: Gaurav Tendolkar <gtendolkar@nvidia.com>
(cherry-picked from commit 88eac6a1ffa5452c170756c1266eae388795689d)
Reviewed-on: http://git-master/r/842381
Tested-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Enable Werror for all the files under sound/soc/tegra-alt files,
so that all the warnings are treated as errors.
Bug 1454125
Change-Id: I71b761edeb5de94004b5f9868ca3c2f6fd2636f8
Signed-off-by: Sumit Singh <sumsingh@nvidia.com>
Reviewed-on: http://git-master/r/925848
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
add check for context pointer before accessing it in suspend.
Also move setting of driver data at the end of probe function.
Bug 200160608
Change-Id: I7ebee91b5f825575f1d8d84f3246b2e9f86da3ed
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: http://git-master/r/923079
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ravindra Lokhande <rlokhande@nvidia.com>
GVS: Gerrit_Virtual_Submit
Marking ASRC_STREAM_LOCK_STATUS as volatile.
When asrc configured in HW mode, we want read
on ASRC_STREAM_LOCK_STATUS from hardware.
In SW mode we use ASRC_STREAM_LOCK_STATUS as
R/W register.
Bug Bug 200163397
Change-Id: I2960e9b7417c5c3017c87b4494b252e9668c4444
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/926833
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Fixed the procedure for sw ratio update
Removed the steps of setting of asrc in UNLOCK state
and waiting it to go in UNLOCK state.
In UNLOCK state asrc stops sending samples which was
leading to audio glitches.
Bug 200154554
Change-Id: Idf7fe685709afcf4f72c3aab95dd5ee812871b92
Signed-off-by: Sidharth <svarier@nvidia.com>
(cherry picked from commit adbe2553c993327edd44408544628e8a7864ad51)
Reviewed-on: http://git-master/r/838743
Reviewed-by: Automatic_Commit_Validation_User
Tested-by: Shashank Sinha <shsinha@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Fix below build warnings:-
- 'tegra186_arad_get_lane_ratio_change_status' defined but not used
- 'struct tegra210_xbar_cif_conf' declared inside parameter list, its
scope is only this definition or declaration, which is probably not what
you want
Bug 1454125
Change-Id: I14375bad93b3b1f8cf79e5e8efcbe96166b5de37
Signed-off-by: Sumit Singh <sumsingh@nvidia.com>
Reviewed-on: http://git-master/r/838920
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Added mixer controls to set numerator and denominator
prescalar registes. This allows the corresponding
clocks to be scaled down before ratio calculation
Bug 1684121
Change-Id: I0f8769ed0f61722785ecaa2afec689bdb357e02f
Signed-off-by: Gaurav Tendolkar <gtendolkar@nvidia.com>
Reviewed-on: http://git-master/r/835222
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Making AGIC as interrupt parent to ARAD and hence by making this change,
the driver directly receives the virq, since the task of getting the virq
is handled by the gic drivers.
Also, for GIC PPI interrupts, the irq number that should be mentioned
should be irq - 32.
Bug 200146854
Change-Id: Ic3feb0f4ea46226f53a72c5789c69b5d6d7cdf01
Signed-off-by: Ajay Nandakumar <anandakumarm@nvidia.com>
Reviewed-on: http://git-master/r/818988
(cherry picked from commit d35e14d26e55723be46d929d046610c05445165c)
Reviewed-on: http://git-master/r/830798
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Fixed the following sparse warning:
- warning: useless storage class specifier in empty declaration
Instance variable may be a static, but the definition doesn't need
the static storage specifier attached to it.
Bug 200088648
Change-Id: Id709a1d205987d19d8c415a18c03b8e24eb9d7b8
Signed-off-by: Amit Sharma (SW-TEGRA) <amisharma@nvidia.com>
Reviewed-on: http://git-master/r/799165
GVS: Gerrit_Virtual_Submit
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Add the Machine driver support for Quill board which has rt5658 codec
on it.
Bug 200127320
Change-Id: I871d436438dc5830eabe1e0616648bd05886ed6c
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: http://git-master/r/781091
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Issue is seen with ARAD/ASRC when it goes to
UNLOCK->LOCK.
- ASRC may not check for buffer thresholds once it
restarts processing after an UNLOCK->LOCK.
- ARAD will not get locked after an unlock
Bug 200118889
Change-Id: Ia16187df6955e79f93f3a7cb9061ea64a61c1d36
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/764096
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>
Tested-by: Sumit Bhattacharya <sumitb@nvidia.com>
ASRC requires 36KB of ARAM for intermediate data.
Updating the start address of ARAM as per
the partion reserved for ASRC and ADSP usage
of ARAM.
Bug 200092561
Change-Id: Ifd4b9b866d518bbe3f6f94cdb974eddc0d1ef1ac
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: http://git-master/r/766620
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Nitin Kumbhar <nkumbhar@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Sumit Bhattacharya <sumitb@nvidia.com>