Hotel skazat6, Igor, Ja nasel osibky vo NXP SW definicijah. Ja toze otlicno
boltaju po Russkij.
_______
Let me switch to English. I found the NXP bug. It is, I hope, not a silicon
bug, so here I will define some homework for the NXP BSP/Kernel team.
Here is the uneven situation (pll4 connected to the ssi2):
By theory, it should work like this:
pll4_post_div 0 0 262164000 0 0
pll4_audio_div 0 0 65541000 0 0 (divided by 4)
But, in reallity it works like this:
pll4_post_div 0 0 262164000 0 0
pll4_audio_div 0 0 131082000 0 0 (divided by 2)
By HW/silicon definition:
18.7.20 Miscellaneous Register 2 (CCM_ANALOG_MISC2n) NXP defined two-bit divider
(which divides by 4), but the function:
clk[IMX6QDL_CLK_PLL4_AUDIO_DIV] = clk_register_divider(NULL, "pll4_audio_div", \
"pll4_post_div", CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE, base + 0x170, 15, 1, \
0, &imx_ccm_lock);
Takes ONLY one bit, bit 15, into the account (MSB bit 23 of a DIV is masked). So,
the HW usage of the divider is limited by clumsy written kernel C code...
_______
Bottom line: faulty SW limits HW by dividing by two, which could lead to the
bogus limitations, without no needs!
Thank you for fixing this SW limitation in imx kernel in advance! Happy fixing
it for all of us!
Sincerely,
zee_z
_______