Message ID | 20210108135913.2421585-1-pgwipeout@gmail.com |
---|---|
Headers | show |
Series | fix tegra-hda on tegra30 devices | expand |
On 1/8/2021 7:29 PM, 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. > > 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 > > The tegra-hda device was introduced in tegra30 but only utilized in > tegra124 until recent chips. Tegra210/186 work only due to a hardware > change. For this reason it is unknown when this issue first manifested. > Discussions with the hardware team show this applies to all current tegra > chips. It has been resolved in the tegra234, which does not have hda > support at this time. > > The explanation from the hardware team is this: > Below is the striping formula referenced from HD audio spec. > { ((num_channels * bits_per_sample) / number of SDOs) >= 8 } > > The current issue is seen because Tegra HW has a problem with boundary > condition (= 8) for striping. The reason why it is not seen on > Tegra210/Tegra186 is because it uses max 2SDO lines. Max SDO lines is > read from GCAP register. > > For the given stream (channels = 2, bps = 16); > ratio = (channels * bps) / NSDO = 32 / NSDO; > > On Tegra30, ratio = 32/4 = 8 (FAIL) > On Tegra210/186, ratio = 32/2 = 16 (PASS) > On Tegra194, ratio = 32/4 = 8 (FAIL) ==> Earlier workaround was > applied for it > > If Tegra210/186 is forced to use 4SDO, it fails there as well. So the > behavior is consistent across all these chips. > > Applying the fix in [1] universally resolves this issue on tegra30-hda. > Tested on the Ouya game console and the tf201 tablet. > > [1] commit 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on > Tegra194") > > Reviewed-by: Jon Hunter <jonathanh@nvidia.com> > Tested-by: Ion Agorria <ion@agorria.com> > Signed-off-by: Peter Geis <pgwipeout@gmail.com> > --- > sound/pci/hda/hda_tegra.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Thanks Peter. Reviewed-by: Sameer Pujar <spujar@nvidia.com>
On Fri, 08 Jan 2021 14:59:11 +0100, Peter Geis wrote: > > The following patches fix tegra-hda on legacy tegra devices. > Two issues were discovered preventing tegra-hda from functioning: > -The hda clocks on tegra30 were assigned to clk_m and running at too low > of a rate to function. > -The tegra-hda encounters an input/output error when opening a stream. > > Since the only mainline device that used tegra-hda until recently was the > t124, it is unknown exactly when this was broken. Fortunately a recent > patch was submitted that fixed the issue only on t194 devices. We can > apply it to the tegra30-hda device to resolve the issue across the board. > Note that downstream devices used the spdif device instead of hda for hdmi > audio. The spdif device lacks a driver on mainline. > > -Checkpatch seems to have issues finding [1], but git show has no issue. > [1] commit 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on > Tegra194") > > Changelog: > > v2: > -Added ack and reviewed-by from Jon > -Updated fix to apply to tegra30-hda vice universally (Thanks Jon) > -Updated commit to include comments from hardware team (Thanks Sameer) > -Cleaned up commit messages > > Peter Geis (2): > clk: tegra30: Add hda clock default rates to clock driver > ALSA: hda/tegra: fix tegra-hda on tegra30 soc Shall I apply both patches via sound git tree? Or, if you want to take through clk tree, let me know. In that case, feel free to take my ack: Acked-by: Takashi Iwai <tiwai@suse.de> thanks, Takashi
On Tue, Jan 12, 2021 at 09:22:38AM +0100, Takashi Iwai wrote: > On Fri, 08 Jan 2021 14:59:11 +0100, > Peter Geis wrote: > > > > The following patches fix tegra-hda on legacy tegra devices. > > Two issues were discovered preventing tegra-hda from functioning: > > -The hda clocks on tegra30 were assigned to clk_m and running at too low > > of a rate to function. > > -The tegra-hda encounters an input/output error when opening a stream. > > > > Since the only mainline device that used tegra-hda until recently was the > > t124, it is unknown exactly when this was broken. Fortunately a recent > > patch was submitted that fixed the issue only on t194 devices. We can > > apply it to the tegra30-hda device to resolve the issue across the board. > > Note that downstream devices used the spdif device instead of hda for hdmi > > audio. The spdif device lacks a driver on mainline. > > > > -Checkpatch seems to have issues finding [1], but git show has no issue. > > [1] commit 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on > > Tegra194") > > > > Changelog: > > > > v2: > > -Added ack and reviewed-by from Jon > > -Updated fix to apply to tegra30-hda vice universally (Thanks Jon) > > -Updated commit to include comments from hardware team (Thanks Sameer) > > -Cleaned up commit messages > > > > Peter Geis (2): > > clk: tegra30: Add hda clock default rates to clock driver > > ALSA: hda/tegra: fix tegra-hda on tegra30 soc > > Shall I apply both patches via sound git tree? > > Or, if you want to take through clk tree, let me know. In that case, > feel free to take my ack: > Acked-by: Takashi Iwai <tiwai@suse.de> There doesn't seem to be a build-time (or even runtime) dependency between the two patches and they fix two independent issues, so they could also go in separately. I'm fine either way. From a Tegra perspective, the Tegra30 clock driver is very low activity, so I don't expect any conflicts with between this and some other patches that might go in through the clock tree. Thierry
On Tue, 12 Jan 2021 14:00:37 +0100, Thierry Reding wrote: > > On Tue, Jan 12, 2021 at 09:22:38AM +0100, Takashi Iwai wrote: > > On Fri, 08 Jan 2021 14:59:11 +0100, > > Peter Geis wrote: > > > > > > The following patches fix tegra-hda on legacy tegra devices. > > > Two issues were discovered preventing tegra-hda from functioning: > > > -The hda clocks on tegra30 were assigned to clk_m and running at too low > > > of a rate to function. > > > -The tegra-hda encounters an input/output error when opening a stream. > > > > > > Since the only mainline device that used tegra-hda until recently was the > > > t124, it is unknown exactly when this was broken. Fortunately a recent > > > patch was submitted that fixed the issue only on t194 devices. We can > > > apply it to the tegra30-hda device to resolve the issue across the board. > > > Note that downstream devices used the spdif device instead of hda for hdmi > > > audio. The spdif device lacks a driver on mainline. > > > > > > -Checkpatch seems to have issues finding [1], but git show has no issue. > > > [1] commit 60019d8c650d ("ALSA: hda/tegra: workaround playback failure on > > > Tegra194") > > > > > > Changelog: > > > > > > v2: > > > -Added ack and reviewed-by from Jon > > > -Updated fix to apply to tegra30-hda vice universally (Thanks Jon) > > > -Updated commit to include comments from hardware team (Thanks Sameer) > > > -Cleaned up commit messages > > > > > > Peter Geis (2): > > > clk: tegra30: Add hda clock default rates to clock driver > > > ALSA: hda/tegra: fix tegra-hda on tegra30 soc > > > > Shall I apply both patches via sound git tree? > > > > Or, if you want to take through clk tree, let me know. In that case, > > feel free to take my ack: > > Acked-by: Takashi Iwai <tiwai@suse.de> > > There doesn't seem to be a build-time (or even runtime) dependency > between the two patches and they fix two independent issues, so they > could also go in separately. Yes. OTOH, it's better to be applied in a shot when you look back at the changes later. > I'm fine either way. From a Tegra perspective, the Tegra30 clock driver > is very low activity, so I don't expect any conflicts with between this > and some other patches that might go in through the clock tree. OK, then I queued both patches now to for-linus branch in sound tree. Thanks! Takashi