IMX8M Mini: Configure SAI MCLK for 4.096MHz for 16Khz audio on upstream Linux

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

IMX8M Mini: Configure SAI MCLK for 4.096MHz for 16Khz audio on upstream Linux

1,022件の閲覧回数
timharvey
Contributor V

Greetings,

I have a user with a need for native 16KHz audio streaming from an imx8mm SAI3 I2S to SGTL5000 codec. 


The SGTL5000 datasheet specifies that the MCLK must be an integer multiple of the sampling rate, typically 128x, 256x, 384x, or 512x the sampling rate (fs) with a max MCLK of 25MHz. For a 16kHz sampling rate the supported MCLK frequencies are:
- 2.048MHz (16kHz * 128)
- 4.096MHz (16kHz * 256)
- 6.144MHz (16kHz * 384)
- 8.192MHz (16kHz * 512)

The IMX8MM_AUDIO_PLL1_OUT is 786.432MHz which is an integer multiple of 24.576 MHz, suitable for 32Khz and 48kHz sampling rates IMX8MM_AUDIO_PLL2_OUT is 722.5344Mhz which is an integer multiple of 22.5792 MHz, suitable for 44.1 kHz sampling rates. These would need dividers in order to achieve 4.096MHz.

It looks like before the imx8mm clock driver was upstreamed to the Linux kernel there were options to divide it down but I don't see that in the upstream Linux kernel.

Is there any instructions on how to configure the SAI clock for a divided down rate of 4.096MHz?

 

ラベル(3)
0 件の賞賛
返信
3 返答(返信)

916件の閲覧回数
timharvey
Contributor V

The solution you pointed to is using the downstream vendor kernel which has a IMX8MM_CLK_SAI1_DIV allowing IMX8MM_AUDIO_PLL1_OUT to be divided into additional frequencies - this is missing from the upstream Linux kernel and is what I'm asking about. Is there a way to divide this in the upstream kernel? I'm not that familiar with the Linux clock subsystem.

 

 

0 件の賞賛
返信

889件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi,

I understand your use case, but unfortunately, the frequencies cannot be changed at run time from the software. The NXP does not provide support for the same. Changes in the device tree are recommended.

 

Regards

0 件の賞賛
返信

970件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

one can look at solution provided in similar case

https://community.nxp.com/t5/i-MX-Processors/SAI-on-i-MX8M-Mini/m-p/959805

Also, please look at Chapter 16 Porting Audio Codecs https://www.nxp.com/docs/en/user-guide/UG10165.pdf

Regards

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2174559%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EIMX8M%20Mini%3A%20%E3%82%A2%E3%83%83%E3%83%97%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%20Linux%20%E3%81%A7%2016Khz%20%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%E7%94%A8%E3%81%AB%20SAI%20MCLK%20%E3%82%92%204.096MHz%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2174559%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%94%E6%8C%A8%E6%8B%B6%3C%2FP%3E%3CP%3Eimx8mm%20SAI3%20I2S%20%E3%81%8B%E3%82%89%20SGTL5000%20%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%E3%81%B8%E3%81%AE%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%2016KHz%20%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%20%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CBR%20%2F%3ESGTL5000%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%A7%E3%81%AF%E3%80%81MCLK%20%E3%81%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E6%95%B4%E6%95%B0%E5%80%8D%E3%80%81%E9%80%9A%E5%B8%B8%E3%81%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%AC%E3%83%BC%E3%83%88%20(fs)%20%E3%81%AE%20128%20%E5%80%8D%E3%80%81256%20%E5%80%8D%E3%80%81384%20%E5%80%8D%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%20512%20%E5%80%8D%E3%81%A7%E3%80%81%E6%9C%80%E5%A4%A7%20MCLK%20%E3%81%AF%2025MHz%20%E3%81%A7%E3%81%82%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A8%E8%A6%8F%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%8216kHz%20%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B%20MCLK%20%E5%91%A8%E6%B3%A2%E6%95%B0%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%20-%202.048MHz%20(16kHz%20*%20128)%3CBR%20%2F%3E%20-%204.096MHz%20(16kHz%20*%20256)%3CBR%20%2F%3E%20-%206.144MHz%20(16kHz%20*%20384)%3CBR%20%2F%3E%20-%208.192MHz%20(16kHz%20*%20512)%3C%2FP%3E%3CP%3EIMX8MM_AUDIO_PLL1_OUT%20%E3%81%AF%20786.432MHz%20%E3%81%A7%E3%80%8124.576MHz%20%E3%81%AE%E6%95%B4%E6%95%B0%E5%80%8D%E3%81%A7%E3%81%82%E3%82%8A%E3%80%8132Khz%20%E3%81%8A%E3%82%88%E3%81%B3%2048kHz%20%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82IMX8MM_AUDIO_PLL2_OUT%20%E3%81%AF%20722.5344MHz%20%E3%81%A7%E3%80%8122.5792MHz%20%E3%81%AE%E6%95%B4%E6%95%B0%E5%80%8D%E3%81%A7%E3%81%82%E3%82%8A%E3%80%8144.1kHz%20%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%824.096MHz%20%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E5%88%86%E5%91%A8%E5%99%A8%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3Eimx8mm%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%8C%20Linux%20%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%81%95%E3%82%8C%E3%82%8B%E5%89%8D%E3%81%AF%E3%80%81%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E3%81%82%E3%81%A3%E3%81%9F%E3%82%88%E3%81%86%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%20Linux%20%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AB%E3%81%AF%E3%81%9D%E3%82%8C%E3%81%8C%E8%A6%8B%E5%BD%93%E3%81%9F%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3ESAI%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%92%204.096MHz%20%E3%81%AE%E5%88%86%E5%91%A8%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%AA%AC%E6%98%8E%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2174559%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20%E3%83%9F%E3%83%8B%20%7C%20i.MX%208M%20%E3%83%8A%E3%83%8E%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3E%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2179399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8M%20Mini%3A%20Configure%20SAI%20MCLK%20for%204.096MHz%20for%2016Khz%20audio%20on%20upstream%20Linux%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2179399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E4%BD%BF%E7%94%A8%E4%BE%8B%E3%81%AF%E7%90%86%E8%A7%A3%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E6%AE%8B%E5%BF%B5%E3%81%AA%E3%81%8C%E3%82%89%E3%80%81%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AB%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%8B%E3%82%89%E5%91%A8%E6%B3%A2%E6%95%B0%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82NXP%20%E3%81%A7%E3%81%AF%E5%90%8C%E6%A7%98%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AF%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%20%E3%83%84%E3%83%AA%E3%83%BC%E3%81%AE%E5%A4%89%E6%9B%B4%E3%82%92%E3%81%8A%E5%8B%A7%E3%82%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CBR%20%2F%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2178922%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8M%20Mini%3A%20Configure%20SAI%20MCLK%20for%204.096MHz%20for%2016Khz%20audio%20on%20upstream%20Linux%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2178922%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%94%E6%8C%87%E6%91%98%E3%81%84%E3%81%9F%E3%81%A0%E3%81%84%E3%81%9F%E8%A7%A3%E6%B1%BA%E7%AD%96%3CSPAN%3E%E3%81%AF%E3%80%81IMX8MM_CLK_SAI1_DIV%20%E3%81%A8%E3%81%84%E3%81%86%E6%A9%9F%E8%83%BD%E3%82%92%E6%8C%81%E3%81%A4%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%83%99%E3%83%B3%E3%83%80%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%E3%81%93%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81IMX8MM_AUDIO_PLL1_OUT%20%E3%82%92%E8%A4%87%E6%95%B0%E3%81%AE%E5%91%A8%E6%B3%A2%E6%95%B0%E3%81%AB%E5%88%86%E5%89%B2%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E3%82%A2%E3%83%83%E3%83%97%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0Linux%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AB%E3%81%AF%E5%AD%98%E5%9C%A8%E3%81%9B%E3%81%9A%E3%80%81%E3%81%BE%E3%81%95%E3%81%AB%E7%A7%81%E3%81%8C%E8%B3%AA%E5%95%8F%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E7%82%B9%E3%81%A7%E3%81%99%E3%80%82%E3%82%A2%E3%83%83%E3%83%97%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%A7%E3%81%93%E3%82%8C%E3%82%92%E5%88%86%E5%89%B2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9FLinux%E3%81%AE%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%82%B5%E3%83%96%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E3%81%82%E3%81%BE%E3%82%8A%E8%A9%B3%E3%81%97%E3%81%8F%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2175950%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20IMX8M%20Mini%3A%20Configure%20SAI%20MCLK%20for%204.096MHz%20for%2016Khz%20audio%20on%20upstream%20Linux%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2175950%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E5%90%8C%E6%A7%98%E3%81%AECASE%E3%81%A7%E6%8F%90%E4%BE%9B%E3%81%95%E3%82%8C%E3%81%9F%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%82%92%E8%A6%8B%E3%82%8BCAN%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fi-MX-Processors%2FSAI-on-i-MX8M-Mini%2Fm-p%2F959805%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fi-MX-Processors%2FSAI-on-i-MX8M-Mini%2Fmp%2F959805%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81%E7%AC%AC%2016%20%E7%AB%A0%E3%80%8C%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%20%E3%82%B3%E3%83%BC%E3%83%87%E3%83%83%E3%82%AF%E3%81%AE%E7%A7%BB%E6%A4%8D%E3%80%8D%E3%82%82%E3%81%94%E8%A6%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fuser-guide%2FUG10165.pdf%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%E3%80%82https%3A%2F%2Fwww.nxp.com%2Fdocs%2Fen%2Fuser-guide%2FUG10165.pdf%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E