Commit Graph

274 Commits

Author SHA1 Message Date
Sharad gupta
3ea7c9344c nvadsp: os: CERT-C Fixes
Uploaded fix to address coverity issues.

1. Fix for string assignment to a char ptr (const)
2. Unsigned int type variable to hold AGIC IRQ number
3. Misc. : added error handling for null pointers

Bug 3512545

CID : 407176, 339372, 426068, 349597, 408235,
468432, 425451, 339564, 340901, 360199, 482718,
338388, 434000, 488442, 355983, 437791, 444590,
409920, 423102, 416511, 426540, 392115, 451458,
355042, 443648, 420343, 423532, 488763, 476874,
404805, 380630, 358854, 485375, 483303, 462651,
371708, 465040, 447093, 406990, 335646, 437343,
467012, 378419, 428324, 354351, 460155, 415702,
376737,  390977, 414736, 411426, 393560, 490887

Change-Id: I5c847fa02438931e95107d06333014fb802c8207
Signed-off-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2672112
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
f90d551e16 drivers: nvadsp: Disable MBX empty intr at config
MBOX empty interrupt line is high by default; configuring AGIC line
in this state is undefined behaviour. Fix this by disabling the
interrupt at source and enabling it only after unmasking in AGIC.

Immediately upon unmasking one empty interrupt will be raised, which
must be ignored.

Bug 3432474

Change-Id: I03a26f061bb28b616626bb07153b0263540d7bd9
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2672095
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Viswanath L
7835064bc3 nvadsp: Add err check in ADSP ELF string copy
Error check is added to prevent out-of-bound access
when copying ADSP ELF string from DT.

Fixes Coverity defect CID 10132209.

Bug 3461002
Bug 200746669
Bug 200773359

Change-Id: I56beabcf8d78aed560cde523dee0429acd784dc9
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2664843
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Viswanath L
a99d68a86e nvadsp: Add provision to specify ADSP ELF name
Provision is added to specify ADSP ELF name from DT, using prop
'nvidia,adsp_elf'. This will be picked from /lib/firmware/ when
ADSP boots in backdoor mode. Default name remains "adsp.elf", if
the prop is not specified.

Bug 200746669
Bug 200773359

Change-Id: Ie5a4ba60fa2c049b7895967326a325257a65bb82
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2662909
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Prateek Patel
35393d7615 drivers: adsp: fix resource leak
Coverity defect: Variable msg_recv going out of scope leaks the
storage it points to. Fix the defect by freeing msg_recv before
return.

CID 31655

Bug 3461002

Change-Id: I350191943d342d33b1d07155ddcc2d875a78f7af
Signed-off-by: Prateek Patel <prpatel@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2653460
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Prateek Patel
5efd53d8fb drivers: adsp: fix check_return Coverity defect
Defect: check_return: Calling of_property_read_u32 without checking
return value. Fix the defect by validating the return value.

CID 10129674

Bug 3461002

Change-Id: Idd236fccabc23b789d57c29c126e09391df022dc
Signed-off-by: Prateek Patel <prpatel@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2650556
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Akash Kollipara
0b2760e995 nvadsp: Handles adspff init failure
- Avoids adspff init in non-secure boot mode
 - Avoids boot failure if adspff.elf is absent
   on secure boot mode

Bug 200773359
Bug 200746669

Change-Id: Ib62ce4ecae3434b7c7fde57e8735620976d2a653
Signed-off-by: Akash Kollipara <akollipara@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2641776
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Viswanath L
f5feadcb43 nvadsp: ACAST settings from DT
ACAST settings are expected to be done by the driver in backdoor
boot. Provision is added to read the ACAST address ranges and
the SMMU stream ID from DT.

ACAST settings are done either for physical memory, or for SMMU
mapped memory, as per the backdoor boot configuration.

Also, call to ACAST init function is moved from runtime resume
to device probe.

Bug 200745795
Bug 200746669
Bug 200773359

Change-Id: Ia53820968ce4d48966c39d72b4c2106be99815fa
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2644989
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
cadec46986 nvadsp: AMC error WAR under chip flag
WAR for spurious AMC error when accessing address < 0x1000
is placed under a flag in chip data.

Bug 200747371
Bug 200773359

Change-Id: I6299fe754efbf2f4d6a99252f71ed3140bade1ba
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2639578
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
ac60258ffd nvadsp: Add provision to configure timeout
Provision is added to specify the OS load timeout
from DT, using property "nvidia,adsp_load_timeout".

Bug 200745795
Bug 200746669

Change-Id: Ie868a1528ad9d39200a0359f6a9d54a2832b0547
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2622380
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
8036a9525f nvadsp: Pass platform info to ADSP
Provision is made to pass the Tegra platform information to ADSP
("nvidia,tegra_platform" DT property, as per enum tegra_platform);
this will be useful to convey whether the platform is CMODEL, in
which case the ADSP may take CMODEL specific paths, like using
HSP shared interrupts.

Upper 16 bits of nvadsp_os_args.chip_id is used to convey the
platform information; this may be improved in future as a
separate structure member.

Bug 200745795
Bug 200746669

Change-Id: Ibd9423eebb06fc4d243c132ab1cb7c6dc558ba5e
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2622156
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
3c9d6d8db1 nvadsp: Add support for APE_TKE reset
Add support for APE_TKE assert/deassert alongside
ADSP assert/deassert. This reset may be specified
in the DT with string "ape_tke".

Bug 200736921
Bug 200773359

Change-Id: I3331ec1572057661ea62dc5269288575a0f0364b
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2627992
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Dara Ramesh <dramesh@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Asha Talambedu
f33770d313 tegra: nvadsp: Timeout added on wait for app start
In cold boot stress test, it is observed that adsp OS
hung intermittently(1/276). Due to which
1) app init of adspff is not able to
complete as it does not receive start ack from adsp
2) wdt handler is triggered as adsp is hung for more
than 10 seconds.

When poweroff is issued in such case,
the alsactl save/restore job which is part of shutdown
sequence is hung as its unable to acquire lock held by
host adsp audio driver fn that initiated nvadsp_os_start.

Therefore, timeout is added while waiting for app init.
If app init fails to happen within timeout duration,
error status is received by nvadsp_os_start
which inturn is received by host side adsp audio driver.
This ensures that lock is released in case of adsff_init
failure in nvadsp_os_start function so that shutdown
can proceed without issue.

Bug 3391964

Change-Id: Ieca54fe9dd21bf9de70d781cfaceb5ffe83809ef
Signed-off-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2626892
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Dara Ramesh <dramesh@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Viswanath L
bb93b07676 nvadsp: Pass shared mem via MBX in backdoor boot
In backdoor boot if shared memory region is not defined in the
ADSP FW then assume it to be placed at the start of OS memory
and communicate the same via MBX. In case MBX is not available
then the boot is aborted.

Bug 200745795
Bug 200746669

Change-Id: I15cd4f3f07dd91c2700479906d19b9219814e2f6
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2613565
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
6360f074cf nvadsp: Add backdoor boot via CO memory
Support is added for backdoor boot via CO memory (i.e. no SMMU). To
use this mode, 'nvidia,adsp_os_secload' property should be removed
and reserved-memory:adspos_carveout node enabled.

ACAST mapping in this mode should span the exact CO reserved region.

Bug 200745795
Bug 200746669

Change-Id: I6bbb84d3278db8f69e60933d63a900c2797fc425
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2613521
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Viswanath L
8bbf49a386 nvadsp: Move struct element for alignment
Simulator platforms do not support unaligned access, so
element adsp_freq_hz in struct nvadsp_os_args is reorganized
to make it aligned.

Bug 200745795
Bug 200746669

Change-Id: I053756a52b8baf3ec04cdbc9eb82878fd6531a62
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2612812
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sahil Mukund Patki
7aae76754e platform: tegra: nvadsp: Fix debugfs compilation error
Fix compilation errors in nvadsp driver seen when disabling
CONFIG_DEBUG_FS

Bug 200755555

Change-Id: Id749b2af4aeb199a58997ea788273b9af31c1682
Signed-off-by: Sahil Mukund Patki <spatki@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2569775
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Viswanath L
fc0faf10ad nvadsp: Set alignment for shared structs
Shared structures nvadsp_app_shared_msg_pool and
nvadsp_shared_mem are aligned using #pragma pack(8)
in order to match the alignment on ADSP side.

Bug 200729844

Change-Id: I541a8a26894e9c5e78f56fa687ca59b905342f23
Signed-off-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2559105
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Asha Talambedu
8f504dc84e nvadsp: Write chip id to h/w mailbox1
Need to communicate chip id info so that ast settings
can be enabled only for t186/t194 from ADSP. Hence,
HWMBOX1 is used to communicate the same

Bug 200684491

Change-Id: If7ae5f58fc410fd7cbb19c9e0129bead8740e88b
Signed-off-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2529141
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Ajay Nandakumar
5190a1db72 nvadsp: change chip_id type in shared struct
The chip_id type in shared struct is u8 where as across the adsp firmwares
the chip_id type is of type uint32_t. This causes shared structure sizes
to be different causing firmwares and causes different address of the shared
struct variables when accessed from the Host and the adsp firmware.

Bug 200692666

Change-Id: I6ad23f021f64458d87596b9d6c47c9df38e3689b
Signed-off-by: Ajay Nandakumar <anandakumarm@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2524414
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Nikesh Oswal <noswal@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Bitan Biswas
56135207fa platform: tegra: nvadsp: fix external build
Fix build errors in external build due to unavailable headers

bug 200705253

Change-Id: Ic4627681a9dee0e47d2da57d4247274b150928f5
Signed-off-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2503918
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Ajay Nandakumar M <anandakumarm@nvidia.com>
Reviewed-by: Manish Bhardwaj <mbhardwaj@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Mohan Kumar
4464d26007 nvadsp: Add Interconnect support for ADSP
Add Interconnect API support for ADSP Memory bandwidth requirement
handling.

From Kernel 4.14 and beyond
- On T23X and newer platforms, the interconnects driver will be initialized
  and calls to BWMGR will be stubbed out.
- On T194 and earlier platforms, BWMGR driver will be initialized and calls
  to interconnect framework will be stubbed out.

Added code check with K5.9 as mc_utils.h header is present from K5.9 build

For Kernel 4.9 and earlier

- T23x will not be supported.
- T194 and earlier platforms will use BWMGR. Interconnect framework is not
  available.

JIRA TAS-1060

Change-Id: Ie0b4040f374a3c6102cb7aff2506d8cf2f0eab69
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2414369
Reviewed-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
3b69d4961c nvadsp: Convert to set_sched_fifo*() for v5.9
While enabling 'CONFIG_TEGRA_ADSP_FILEIO' following build error
is seen with v5.9-rc4 build.

 ERROR: modpost: "sched_setscheduler" [drivers/platform/tegra/
   nvadsp/nvadsp.ko] undefined!

This happens because sched_setscheduler() export is removed with
commit 616d91b68cd5 ("sched: Remove sched_setscheduler*() EXPORTs")
in upstream. The reason for removal is below.

Upstream commit 7318d4cc14c8 ("sched: Provide sched_set_fifo()")
provides sched_set_*() functions and suggests to convert existing
sched_setscheduler_*() calls to sched_set_*(). As per this
following updates are made for ADSP driver to work for v5.9.

  - Use sched_set_fifo() whenever a high priority is required.
    (However by default priority is set to MAX_RT/2)
  - Use sched_set_fifo_low() whenever priority needs to be above
    SCHED_NORMAL.

Since it is a recent change in upstream kernel above changes are
not applicable for previous kernels (v4.14 and v4.9). Hence these
can continue to use existing calls. Thus above changes are protected
under kernel version checks.

Bug 200657500

Change-Id: I763fb7d1461e23e1eeb26d7c49a295172450e54d
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2417919
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
86b6ccfd04 nvadsp: fix v5.9-rc4 build error
After v5.9-rc4 merge in dev-main-5.9 many build errors are seen with
ADSP config CONFIG_TEGRA_ADSP_LPTHREAD. Some of these build errors
are listed below.

* kernel/nvidia/drivers/platform/tegra/nvadsp/adsp_lpthread.c:15:0:
  kernel-5.9/include/linux/uaccess.h: In function ‘force_uaccess_begin’:
  kernel-5.9/include/linux/uaccess.h:20:2: error: implicit declaration
      of function ‘set_fs’; did you mean ‘get_fs’?
      [-Werror=implicit-function-declaration]
      set_fs(USER_DS);
      ^~~~~~

* kernel-5.9/arch/arm64/include/asm/uaccess.h: In function
      ‘__uaccess_mask_ptr’:
  kernel-5.9/arch/arm64/include/asm/uaccess.h:240:41: error: invalid type
      argument of ‘->’ (have ‘int’) : "r" (ptr), "r"
      (current_thread_info()->addr_limit),
                            ^~

  ...

The errors appear to be related to 'uaccess.h' header and following
inclusion order is causing build failures for some reason. Checked with
other source files with below and same behavior is seen.

  #include <asm/uaccess.h>
  #include <linux/uaccess.h>
  ...

Issue goes away after replacing 'asm/uaccess.h' with 'linux/uaccess.h'.
It should be noted that latter header by default includes the former one.
For consistency this is done for other relevant ADSP files too.

Bug 200657500

Change-Id: I7ce98c46327a825711c4fa9ab791afc65b1cbf1b
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2417265
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Sameer Pujar
4614098993 nvadsp: fix build errors on v5.9
Following build errors are seen when ADSP configs CONFIG_TEGRA_ADSP_FILEIO
and CONFIG_TEGRA_ADSP_LPTHREAD are enabled.

* Error due to "segment.h"

  adsp_lpthread.c:14:10: fatal error: asm/segment.h: No such file or
    directory
  adspff.c:17:10: fatal error: asm/segment.h: No such file or directory

  (asm/segment.h inclusion is removed as asm/uaccess.h already takes care
   of required dependencies)

* Error due to unavailable structure "sched_param"

  adspff.c:517:21: error: variable ‘param’ has initializer but incomplete
    type
  adspff.c:518:3: error: ‘const struct sched_param’ has no member named
    ‘sched_priority’

  (Replace <linux/sched/types.h> with <uapi/linux/sched/types.h> to fix
   this build issue)

* Error due to unavailable "get_ds()"

  adspff.c:63:9: error: implicit declaration of function ‘get_ds’; did you
    mean ‘get_fs’? [-Werror=implicit-function-declaration]

  (Fixed by replacing get_ds() with KERNEL_DS. The get_ds() support is
   removed from upstream kernel)

Bug 200593718
Bug 200657500

Change-Id: I8b9cbed5ee42f34cf3731ea2d2f06aa760c28358
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2412299
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Sameer Pujar
08391815ee Revert "[TEMP] nvadsp: request clk_round_rate() for 600 MHz"
This reverts commit 9786bb772a32456102f4de622c9ce3ee35784920.

The original commit earlier was done to avoid a clock issue in BPMP as a
temporary fix. Since now the root cause is addressed in BPMP it can be
reverted.

Bug 200617376

Change-Id: I64df2f33e1fd294c151ae4f7b39e2d9ea321b5c6
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2354898
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Sivaram Nair <sivaramn@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Bitan Biswas
c880772741 nvidia: drivers: fix linux-5.7-rc5 build
Fix build linux-5.7-rc5 errors including following:
	- change timespec to timespec64. replace getnstimeofday
	  with ktime_get_ts64
	- replace usage of macro FIELD_SIZEOF with sizeof_field in ethtool.c
	  nvethernet and eqos files.
	- support 2 arguments for of_get_phy_mode call

bug 200617764

Change-Id: I46067d7d36d08ee9556b2722e9ccec707b8853d4
Signed-off-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2347244
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
134ade9bf2 nvadsp: request clk_round_rate() for 600 MHz
On 5.4 kernel clk_round_rate(), for ACLK with ULONG_MAX request, is
returning minimum possible value for ACLK and this is causing a
failure with ADSP OS load. The issue is found in BPMP where there
is a problem with data mis-alignment. Till this gets addressed a TEMP
change is provided here to unblock ADSP audio related work.

This can be reverted once original BPMP fix is merged.

Bug 200593718

Change-Id: I1965986770424f2a8560e011ca892b700cdc0258
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2345133
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Sameer Pujar
68ea0dc35b nvadsp: fix build error due to elf_hwcap
Build error is seen on 5.4 kernel due to 'elf_hwcap' not being available.
Commit aec0bff757c9 ("arm64: HWCAP: encapsulate elf_hwcap") in upstream
removes direct expose of 'elf_hwcap' and instead provides a helper function
cpu_get_elf_hwcap() for it.

To fix build error this patch includes 'asm/hwcap.h' which works well for
all supported kernel versions in downstream. The macro ELF_HWCAP, from this
header, can be used for this purpose.
 * For kernel < 5.4  : ELF_HWCAP --> elf_hwcap
 * For kernel >= 5.4 : ELF_HWCAP --> cpu_get_elf_hwcap()

Bug 200593718

Change-Id: I3ef3527be5972d6f6ba6ab6ef6dc50936dff73fd
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2341654
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
bff1871f76 nvadsp: fix build error related to counter
On 5.4 kernel, function arch_counter_get_cntvct() is not available
in arch_timer.h and this causes build error. This patch fixes the
issue by using __arch_counter_get_cntvct_stable() which provides
similar functionality.

Bug 200593718

Change-Id: I64732dc3a11effba0f05afb3f9cbd50351047ee8
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2341653
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
29efd1bd1b nvadsp: fix build errors due to chip-id.h
5.4 kernel no longer uses chip-id.h and instead fuse.h is used.
Currently this causes build issues in ADSP driver code and hence
related drivers are updated to make use of references as per
fuse.h for 5.4 kernel.

The issue is not seen on TOT because ADSP is not yet enabled.

Bug 200593718

Change-Id: I82af6a4f02ce64da4b20875a28f8ef9488b92e54
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2341652
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Bitan Biswas
ceb4b9f02e kernel: nvidia: use fuse.h instead of chip-id.h in k5.4
bug 200591811

Change-Id: If72122efdeda154f435f79da8f2cd9cad644d380
Signed-off-by: Bitan Biswas <bbiswas@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2337930
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
6cd83e4d26 nvadsp: don't use tegra-pd for kernel 5.4 onwards
The usage of Tegra power-domains is deprecated from kernel-5.4 and
instead generic power-domains should be used. Current driver code
is common across multiple kernel versions and to maintain backward
compatibility kernel version checks are added.

Bug 200593718

Change-Id: Ia49c0bab0d320de2d4a3a23e7e675242f56dbff7
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2334795
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
003fec905d nvadsp: fix 5.4 build error related to access_ok()
access_ok() macro has changed in 5.4 kernel and it does not accept
the same number of arguments any more. To fix the build error and
to make it work for all the supported kernels, a new local macro
ACCESS_OK() is introduced which can further make kernel specific
calls.

Bug 200593718

Change-Id: I71f766401ec185859b4185f2e4b4f2bb914965fc
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2323014
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Sameer Pujar
a617e73405 nvadsp: build dependency on HSP driver
ADSP driver has build dependency over HSP driver. Currently on
5.4 CONFIG_TEGRA_HSP is not yet enabled and it is causing build
break. This can be addressed by including corresponding driver
calls under above config check.

Bug 200593718

Change-Id: I4847f8ac251c9cb2bd96fbdecbf29b4200aca371
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2323013
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Asha Talambedu
b24ad07d95 nvadsp: Remove symbol table creation for l4t
Removed symbol table for L4T platform that has symbol stripped
adsp-fw

Bug 200536088

Change-Id: I18187479c796c98ce2dcc5865e1175dd9d7c9f5e
Signed-off-by: Asha Talambedu <atalambedu@nvidia.com>
(cherry picked from commit 4089e712d554081a69f34e60a01459cb19e1978c)
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2308814
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: automaticguardword <automaticguardword@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Sharad Gupta <sharadg@nvidia.com>
Reviewed-by: Viswanath L <viswanathl@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
2023-06-20 15:13:15 +00:00
Swati Sachdeva
0f6dc52655 nvadsp: Fixing adsp_ff_exit function
- ADSP thread was waiting on a sempaphore to wake up
- In case of shutdown when kthread_stop is called, kthread_should_stop
- will not be called if thread is not woken up

- Solution: Replace semaphore with wait_queue and use
- wait_event_interruptible
- wake up the thread if either there is a message in the list or
- kthread_should_stop is true

Bug 2739934
Bug 200560194
Bug 200463529

Change-Id: Iea04e0100248f554076aaed8627d40f5b96df2bf
Signed-off-by: Uday Gupta <udayg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2232868
(cherry picked from commit a3a81a984a933a8f580154b76098119427f5e19e)
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2238825
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Swati Sachdeva <ssachdeva@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Dipesh Gandhi
b72af873f4 ASoC: tegra-virt-alt: lpthread init via amixer
Change exposes lpthread/adsp usage trigger via
amixer. This is needed to make sound card aware
of lpthread state. Without this STR adsp feature
breaks as currently lpthread is written in such
a manner which does not allow adsp to suspend.

Bug 200552183

Change-Id: I2cc1e0fd805a982686bbd034b2c6e094b56df23b
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2198693
(cherry picked from commit e9bd14fd6eb0305cc583092752e6bdccc9c5e76a)
Reviewed-on: https://git-master.nvidia.com/r/2250202
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Swati Sachdeva <ssachdeva@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Asha Talambedu
dddab770de platform: tegra: Make ADSP CPU driver a LKM
-Made necessary Kconfig and makefile changes
 required to make ADSP CPU driver a loadable kernel
 module.
-Had to replace nsec_to_clock_t api with functions that are
 available as exported symbols as nsec_to_clock_t is not an
 exported symbol

Bug 200560561

Change-Id: Ia2fa069d9bb234b57f19cbf919c9e6d7567f3d7b
Signed-off-by: Asha Talambedu <atalambedu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2215613
(cherry picked from commit 519a4618c452e3a62550d4fdf3ec5b52acf8b9c8)
Reviewed-on: https://git-master.nvidia.com/r/2228337
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Dipesh Gandhi
1dd46a95c7 ASoC: tegra-alt: remove redundant drivers
- remove unused code
- update hypervisor check condition

Bug 200552920

Change-Id: Ie2ca3542d8dc50191f402c9d4c96d56e4c89db7a
Signed-off-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2200432
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Tested-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Niranjan Dighe
a1a7e31c61 Revert "adsp: add dma_set_mask parse"
This reverts commit 4c531e24d2a08eaef19ea5e366374d0aab6b58bd.

Jira EMA-1251

Change-Id: I3de386b442ecf3beca938db0725bbe3e673d15c1
Signed-off-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2166541
Reviewed-by: Uday Gupta <udayg@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Niranjan Dighe
15961fe4f8 nvadsp: logger: reset is_opened flag on file close
adsp_logger file could not be re-opened after closing and open call
always returned -EBUSY. This was because logger->is_opened was never
reset in the file close path. Setting it to 0 in .release callback
solves the problem.

Jira EMA-1321

Change-Id: I42834fa7af19bacc4326cd32745996b6f4e47686
Signed-off-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2153912
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Niranjan Dighe
8916271137 nvadsp: adspff: fix issues with kthread impl
- Implement file list rather than fixed length array
- Fix issues related to file mode handling
- Change file not found validation with respect to commit c136844cd414
  ("nvadsp: adspff: use kthread to schedule file io")

Bug 2538512

Change-Id: I1cd8fa065887effa6073d963df62f6e1bb877a1d
Signed-off-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2102696
(cherry picked from commit ea7d4ea78a22b7d8675966f2b2f85343c488d059)
Reviewed-on: https://git-master.nvidia.com/r/2150780
Tested-by: Hariharan Sivaraman <hariharans@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Shashank Verma
b82520e6d3 nvadsp: adspff: add spinlock across list_del
Added spinlock across list_del to prevent
race between itself and list_add_tail.

Bug 1846449
Jira EMA-847

Change-Id: Icc27b0d4926659a04bff3ddb02ec0c11ed1e0a70
Signed-off-by: Shashank Verma <shashankv@nvidia.com>
Reviewed-on: http://git-master/r/1326930
(cherry picked from commit f097894d0382f79c100bf7bd75c7f923eb20085c)
Signed-off-by: Hariharan Sivaraman <hariharans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2029205
(cherry picked from commit a7ca3766153a0c5068fbc0dff7391426a948e79a)
Reviewed-on: https://git-master.nvidia.com/r/2030553
(cherry picked from commit 2806ac36bc24af1796e875edc4a6678e2db86f97)
Reviewed-on: https://git-master.nvidia.com/r/2150779
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-by: Dipesh Gandhi <dipeshg@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Gaurav Tendolkar
857731124c nvadsp: adspff: use kthread to schedule file io
- Workqueue scheduling latency causes issues for
  adsp apps requiring real time behaviour. Hence
  use RT kthread to schedule the file io functions
- file open with O_TRUNC flag may take long time
  Hence we open the file just once and just reset
  the read/write pointers in a file close call
- Expose sysfs entry to actually close all files
  opened by kernel

Bug 1846449
Jira EMA-847

Change-Id: I3c130b36e5f5f5a0e65ddb4c44efc8754fb006d2
Signed-off-by: Gaurav Tendolkar <gtendolkar@nvidia.com>
Reviewed-on: http://git-master/r/1314984
(cherry picked from commit 00f5d0b48aa0df9a720c6fd15b4cffd827408375)
Signed-off-by: Hariharan Sivaraman <hariharans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2029203
(cherry picked from commit 6760f7d61a589b90a8c156a38e4453b518a20b05)
Reviewed-on: https://git-master.nvidia.com/r/2030551
(cherry picked from commit c136844cd4147c25478fe39a15122a1f43553079)
Reviewed-on: https://git-master.nvidia.com/r/2150778
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Niranjan Dighe <ndighe@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Hariharan Sivaraman
cb8fd9beb2 nvadsp: allocate adsp shared memory dynamically
NVADSP driver tries to allocate shared memory for ADSP
by requesting the DMA APIs to allocate at address hardcoded
in DT. This poses an issue where if kernel has already allocated
that memory to a different driver in same iommu group, this
memory becomes unavailable and ADSP does not boot

Adding support to allocate shared memory for ADSP dynamically
to avoid dependencies on other drivers

Jira EMA-1213

Change-Id: I1bc8d49f17ec8226d34f3c943cccabef97b2afb6
Signed-off-by: Hariharan Sivaraman <hariharans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2134341
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Uday Gupta <udayg@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: Niranjan Dighe <ndighe@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Hariharan Sivaraman
dfc3347d28 adsp: add support for ivc based adsp reset control
For virtualized configurations, ADSP reset will be owned
only by Audio server.

- Moving tegra-virt-alt-ivc to drivers/.../nvaudio_ivc/
to enable Audio IVC to be built as part of Image

- Adding support in nvadsp driver to communicate with
Audio server for asserting or deasserting ADSP.

Jira EMA-1208

Change-Id: I6773c35edf2c646aa9fd7ec0aa5eceb992dffa35
Signed-off-by: Hariharan Sivaraman <hariharans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2113661
Reviewed-by: Uday Gupta <udayg@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Mohan Kumar D <mkumard@nvidia.com>
Reviewed-by: Nitin Pai <npai@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Nicolin Chen
767700e13d platform: nvadsp: Fix iova reservation
There is no point in managing iovad that's not binded to
device's IOMMU domain. So this patch just removes iovad
managing code and does a correct iommu_dma_alloc_iova()
to reserve the iova.

A difficulty of using iommu_dma_alloc_iova() is that we
mostly do not use aligned addresses for the target iova,
but IOMMU core aligns the iova address with the size by
power of two due to cache friendly. So the trick here is
to align the start address and to allocate a larger iova
region that would cover the target iova -- the excessive
part will be freed during iommu_dma_free_iova() by IOMMU
core.

Note that the dma_free_coherent() does both iommu_unmap
and iommu_dma_free_iova, so there's no need of an extra
free_iova() in the exit routine. However, for the remap
part, the tmp_iova is allocated and mapped, so it should
be unmapped and freed. So this patch also adds a free()
of tmp_iova in the nvadsp_dma_alloc_at_map() function.

Bug 200444660

Change-Id: I54126c2bd9ff3dd688aaa5c6f9befaad620ab548
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2096704
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Nicolin Chen
d059cdbc44 platform: nvadsp: Remove iova lucky check
The logic of the nvadsp_dma_alloc_and_map_at() function is to
firstly reserve the target iova and secondly allocate a memory
with another dynamical iova.

Since the target iova is reserved, the dynamical iova won't be
possible to be identical. And this lucky check lacks of an exit
routine either.

So this patch just drops it.

Bug 200444660

Change-Id: I5c45e72b1e7315dacd8708fc8facf6bda41c51e5
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2098219
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00
Nicolin Chen
65f4df1dc4 platform: nvadsp: Drop KERNEL_VERSION check
The dma-mask could be applied to an older kernel as well.
And this is essential for nvadsp driver to use the newer
nvadsp_dma_alloc_and_map_at() function. Though downstream
kernel 4.9 still has dma_alloc_at_coherent() support, it
would be cleaner to have nvadsp code using a unified way
instead of adding older dma_alloc_at_coherent() back with
another KERNEL_VERSION check.

Bug 200444660

Change-Id: I3968155c7439789a398ca499e70598ce1385737a
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2096705
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
2023-06-20 15:13:15 +00:00