lkml.org 
[lkml]   [2021]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH 2/2] ALSA: hda/tegra: fix tegra-hda on tegra30 soc
From
Date


On 12/25/2020 6:50 AM, Peter Geis wrote:
> External email: Use caution opening links or attachments
>
>
> Currently hda on tegra30 fails to open a stream with an input/output error.
> This is similar to the issue referenced in [1].
>
> For example:
> speaker-test -Dhw:0,3 -c 2
>
> speaker-test 1.2.2
>
> Playback device is hw:0,3
> Stream parameters are 48000Hz, S16_LE, 2 channels
> Using 16 octaves of pink noise
> Rate set to 48000Hz (requested 48000Hz)
> Buffer size range from 64 to 16384
> Period size range from 32 to 8192
> Using max buffer size 16384
> Periods = 4
> was set period_size = 4096
> was set buffer_size = 16384
> 0 - Front Left
> Write error: -5,Input/output error
> xrun_recovery failed: -5,Input/output error
> Transfer failed: Input/output error
>
> [1] states "Due to a legacy HW design problem", implying the issue applies to all previous tegra-hda devices.
> The tegra-hda device was introduced in tegra30 but only utilized in tegra124 until now.
> For this reason it is unknown when this issue first manifested.
>
> Applying the fix in [1] universally resolves this issue on tegra30.
> Tested on the Ouya game console and the tf201 tablet.
>
> [1] 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on Tegra194")

This issue was never seen on Tegra210/Tegra186 and hence at that time it
was thought to be specific to Tegra194. I never tested this on Tegra30
since I don't have this device. I will clarify this with HW folks if
workaround is safer for all chips.

>
> Signed-off-by: Peter Geis <pgwipeout@gmail.com>
> Tested-by: Ion Agorria <ion@agorria.com>
> ---
> sound/pci/hda/hda_tegra.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/sound/pci/hda/hda_tegra.c b/sound/pci/hda/hda_tegra.c
> index 70164d1428d4..f8d61e677a09 100644
> --- a/sound/pci/hda/hda_tegra.c
> +++ b/sound/pci/hda/hda_tegra.c
> @@ -388,8 +388,7 @@ static int hda_tegra_first_init(struct azx *chip, struct platform_device *pdev)
> * in powers of 2, next available ratio is 16 which can be
> * used as a limiting factor here.
> */
> - if (of_device_is_compatible(np, "nvidia,tegra194-hda"))
> - chip->bus.core.sdo_limit = 16;
> + chip->bus.core.sdo_limit = 16;

Future Tegra chips address this problem and hence cannot be enforced by
default. May be we can have like below:

if (of_device_is_compatible(np, "nvidia,tegra30-hda"))
chip->bus.core.sdo_limit = 16;

>
> /* codec detection */
> if (!bus->codec_mask) {
> --
> 2.25.1
>

\
 
 \ /
  Last update: 2021-01-05 07:32    [W:0.104 / U:0.288 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site