linux-imx/sound/soc/tegra
Mohan Kumar 585c598082 ASoC: tegra: Fix CBB error during probe()
[ Upstream commit 6781b962d9 ]

When Tegra audio drivers are built as part of the kernel image,
TIMEOUT_ERR is observed from cbb-fabric. Following is seen on
Jetson AGX Orin during boot:

[    8.012482] **************************************
[    8.017423] CPU:0, Error:cbb-fabric, Errmon:2
[    8.021922]    Error Code            : TIMEOUT_ERR
[    8.025966]    Overflow              : Multiple TIMEOUT_ERR
[    8.030644]
[    8.032175]    Error Code            : TIMEOUT_ERR
[    8.036217]    MASTER_ID             : CCPLEX
[    8.039722]    Address               : 0x290a0a8
[    8.043318]    Cache                 : 0x1 -- Bufferable
[    8.047630]    Protection            : 0x2 -- Unprivileged, Non-Secure, Data Access
[    8.054628]    Access_Type           : Write

[    8.106130] WARNING: CPU: 0 PID: 124 at drivers/soc/tegra/cbb/tegra234-cbb.c:604 tegra234_cbb_isr+0x134/0x178

[    8.240602] Call trace:
[    8.243126]  tegra234_cbb_isr+0x134/0x178
[    8.247261]  __handle_irq_event_percpu+0x60/0x238
[    8.252132]  handle_irq_event+0x54/0xb8

These errors happen when MVC device, which is a child of AHUB
device, tries to access its device registers. This happens as
part of call tegra210_mvc_reset_vol_settings() in MVC device
probe().

The root cause of this problem is, the child MVC device gets
probed before the AHUB clock gets enabled. The AHUB clock is
enabled in runtime PM resume of parent AHUB device and due to
the wrong sequence of pm_runtime_enable() in AHUB driver,
runtime PM resume doesn't happen for AHUB device when MVC makes
register access.

Fix this by calling pm_runtime_enable() for parent AHUB device
before of_platform_populate() in AHUB driver. This ensures that
clock becomes available when MVC makes register access.

Fixes: 16e1bcc2ca ("ASoC: tegra: Add Tegra210 based AHUB driver")
Signed-off-by: Mohan Kumar <mkumard@nvidia.com>
Signed-off-by: Ritu Chaudhary <rituc@nvidia.com>
Signed-off-by: Sameer Pujar <spujar@nvidia.com>
Link: https://patch.msgid.link/20240823144342.4123814-3-spujar@nvidia.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-09-12 11:11:44 +02:00
..
Kconfig ASoC: tegra: Support MAX9808x by machine driver 2023-03-20 13:06:41 +00:00
Makefile ASoC: tegra: Add Tegra210 based OPE driver 2022-06-06 12:33:07 +01:00
tegra_asoc_machine.c ASoC: tegra: remove unneeded semicolon 2023-03-22 13:17:39 +00:00
tegra_asoc_machine.h ASoC: tegra: Restore headphones jack name on Nyan Big 2021-12-13 19:23:33 +00:00
tegra_audio_graph_card.c ASoC: tegra: Fix redundant PLLA and PLLA_OUT0 updates 2023-09-11 01:23:51 +01:00
tegra_cif.h ASoC: tegra: Add support for CIF programming 2020-07-20 15:10:21 +01:00
tegra_pcm.c ASoC: tegra: Fix Master Volume Control 2023-06-13 12:10:56 +01:00
tegra_pcm.h ASoC: tegra20: spdif: Use more resource-managed helpers 2021-12-17 11:13:56 +00:00
tegra_wm8903.c ASoC: soc-card: Create jack kcontrol without pins 2022-04-14 17:37:21 +01:00
tegra20_ac97.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra20_ac97.h ASoC: tegra20: ac97: Add reset control 2021-03-18 13:49:30 +00:00
tegra20_das.c ASoC: tegra: tegra20_das: Drop write-only driver data member 2022-07-05 19:54:00 +01:00
tegra20_i2s.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra20_i2s.h ASoC: tegra20: i2s: Add reset control 2021-03-18 13:49:31 +00:00
tegra20_spdif.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra20_spdif.h ASoC: tegra20: spdif: Reset hardware 2021-12-17 11:13:57 +00:00
tegra30_ahub.c ASoC: tegra: tegra30_ahub: Convert to platform remove callback returning void 2023-03-20 13:09:24 +00:00
tegra30_ahub.h ASoC: tegra30: ahub: Switch to use reset-bulk API 2021-03-18 13:49:34 +00:00
tegra30_i2s.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra30_i2s.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
tegra186_asrc.c ASoC: tegra: Use normal system sleep for ASRC 2023-06-22 18:02:04 +01:00
tegra186_asrc.h ASoC: tegra: Add Tegra186 based ASRC driver 2022-04-04 08:39:14 +01:00
tegra186_dspk.c ASoC: tegra: Fix DSPK 16-bit playback 2024-05-17 12:02:32 +02:00
tegra186_dspk.h ASoC: tegra: Add Tegra186 based DSPK driver 2020-07-20 15:10:24 +01:00
tegra210_admaif.c ASoC: tegra: merge DAI call back functions into ops 2023-08-14 13:10:18 +01:00
tegra210_admaif.h ASoC: tegra: Add Tegra210 based ADMAIF driver 2020-07-21 23:26:14 +01:00
tegra210_adx.c ASoC: tegra: Fix ADX byte map 2023-06-29 11:40:27 +01:00
tegra210_adx.h ASoC: tegra: Add Tegra210 based ADX driver 2021-09-20 13:31:35 +01:00
tegra210_ahub.c ASoC: tegra: Fix CBB error during probe() 2024-09-12 11:11:44 +02:00
tegra210_ahub.h ASoC: tegra: Update AHUB driver for Tegra234 2022-01-28 13:05:26 +00:00
tegra210_amx.c ASoC: tegra: Fix AMX byte map 2023-06-29 11:40:26 +01:00
tegra210_amx.h ASoC: tegra: Add Tegra210 based AMX driver 2021-09-20 13:31:34 +01:00
tegra210_dmic.c ASoC: tegra: tegra210_dmic: Convert to platform remove callback returning void 2023-03-20 13:09:19 +00:00
tegra210_dmic.h ASoC: tegra: Add Tegra210 based DMIC driver 2020-07-20 15:10:22 +01:00
tegra210_i2s.c ASoC: tegra: tegra210_i2s: Convert to platform remove callback returning void 2023-03-20 13:09:19 +00:00
tegra210_i2s.h ASoC: tegra: Add Tegra210 based I2S driver 2020-07-20 15:10:23 +01:00
tegra210_mbdrc.c ASoC: tegra: Fix spelling mistake "fliter" -> "filter" 2022-11-10 17:52:46 +00:00
tegra210_mbdrc.h ASoC: tegra: Fix spelling mistake "fliter" -> "filter" 2022-11-10 17:52:46 +00:00
tegra210_mixer.c ASoC: tegra: tegra210_mixer: Convert to platform remove callback returning void 2023-03-20 13:09:20 +00:00
tegra210_mixer.h ASoC: tegra: Add Tegra210 based Mixer driver 2021-09-20 13:31:36 +01:00
tegra210_mvc.c ASoC: tegra: tegra210_mvc: Convert to platform remove callback returning void 2023-03-20 13:09:21 +00:00
tegra210_mvc.h ASoC: tegra: Add master volume/mute control support 2021-12-01 14:15:39 +00:00
tegra210_ope.c ASoC: tegra: tegra210_ope: Convert to platform remove callback returning void 2023-03-20 13:09:22 +00:00
tegra210_ope.h ASoC: tegra: Add Tegra210 based OPE driver 2022-06-06 12:33:07 +01:00
tegra210_peq.c ASoC: tegra: Add Tegra210 based OPE driver 2022-06-06 12:33:07 +01:00
tegra210_peq.h ASoC: tegra: Add Tegra210 based OPE driver 2022-06-06 12:33:07 +01:00
tegra210_sfc.c ASoC: tegra: Fix SFC conversion for few rates 2023-06-24 01:57:16 +01:00
tegra210_sfc.h ASoC: tegra: Fix SFC conversion for few rates 2023-06-24 01:57:16 +01:00