Re: [PATCH V4] clk: imx: Fix reparenting of UARTs not associated with stdout
From: Abel Vesa <abelvesa@kernel.org>
Date: 2021-03-22 11:06:38
Also in:
linux-clk, lkml
On 21-03-20 18:00:25, Adam Ford wrote:
On Sun, Mar 14, 2021 at 4:40 AM Ahmad Fatoum [off-list ref] wrote:quoted
On 13.03.21 16:16, Ahmad Fatoum wrote:quoted
quoted
+/* i.MX boards use device trees now. For build tests without CONFIG_OF, do nothing */ +#ifdef CONFIG_OF if (imx_keep_uart_clocks) { int i; - imx_uart_clocks = clks; - for (i = 0; imx_uart_clocks[i]; i++) - clk_prepare_enable(*imx_uart_clocks[i]); + imx_uart_clocks = kcalloc(clk_count, sizeof(struct clk *), GFP_KERNEL); + + if (!of_stdout) + return;Memory leak. Just do if (imx_keep_uart_clocks && of_stdout)Please dismiss. I overlooked that you free it in a later initcall.Abel, Are you OK with this? I also have a V5 posted [1] which does what Ahmad suggested.
I'm OK with this version. Applied it on my clk/imx branch: git://git.kernel.org/pub/scm/linux/kernel/git/abelvesa/linux.git Thanks a lot for all the effort.
Either of these will fix reparenting issues, but I need this for Bluetooth to operate correctly, because both beacon imx8mn and imx8mn kits switch the UART parent to an 80MHz clock in order to run at 4Mbps. thank you, adamquoted
quoted
quoted
static int __init imx_clk_disable_uart(void) { - if (imx_keep_uart_clocks && imx_uart_clocks) { + if (imx_keep_uart_clocks && imx_enabled_uart_clocks) { int i; - for (i = 0; imx_uart_clocks[i]; i++) - clk_disable_unprepare(*imx_uart_clocks[i]); + for (i = 0; i < imx_enabled_uart_clocks; i++) { + clk_disable_unprepare(imx_uart_clocks[i]); + clk_put(imx_uart_clocks[i]); + }; + kfree(imx_uart_clocks); }-- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel