mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-26 04:16:39 +00:00
soc: imx8m: Enable OCOTP clock before reading the register
[ Upstream commit836fb30949
] Commit7d981405d0
("soc: imx8m: change to use platform driver") ever removed the dependency on bootloader for enabling OCOTP clock. It helped to fix a kexec kernel hang issue. But unfortunately it caused a regression on CAAM driver and got reverted. This is the second try to enable the OCOTP clock by directly calling clock API instead of indirectly enabling the clock via nvmem API. Fixes:ac34de14ac
("Revert "soc: imx8m: change to use platform driver"") Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Shawn Guo <shawnguo@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a5915a9a3a
commit
080608a019
1 changed files with 11 additions and 0 deletions
|
@ -11,6 +11,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/clk.h>
|
||||
|
||||
#define REV_B1 0x21
|
||||
|
||||
|
@ -56,6 +57,7 @@ static u32 __init imx8mq_soc_revision(void)
|
|||
void __iomem *ocotp_base;
|
||||
u32 magic;
|
||||
u32 rev;
|
||||
struct clk *clk;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx8mq-ocotp");
|
||||
if (!np)
|
||||
|
@ -63,6 +65,13 @@ static u32 __init imx8mq_soc_revision(void)
|
|||
|
||||
ocotp_base = of_iomap(np, 0);
|
||||
WARN_ON(!ocotp_base);
|
||||
clk = of_clk_get_by_name(np, NULL);
|
||||
if (!clk) {
|
||||
WARN_ON(!clk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
clk_prepare_enable(clk);
|
||||
|
||||
/*
|
||||
* SOC revision on older imx8mq is not available in fuses so query
|
||||
|
@ -79,6 +88,8 @@ static u32 __init imx8mq_soc_revision(void)
|
|||
soc_uid <<= 32;
|
||||
soc_uid |= readl_relaxed(ocotp_base + OCOTP_UID_LOW);
|
||||
|
||||
clk_disable_unprepare(clk);
|
||||
clk_put(clk);
|
||||
iounmap(ocotp_base);
|
||||
of_node_put(np);
|
||||
|
||||
|
|
Loading…
Reference in a new issue