How to enable TPM6 in device tree for IMX8ULP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to enable TPM6 in device tree for IMX8ULP

340 Views
graycan00
Contributor I

How do I configure the imx8ulp device tree to enable TPM6 on the A35, and what device tree settings are required to clock TPM6 from the free running oscillator (FRO)?

0 Kudos
Reply
4 Replies

278 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

To enable TPM6 on the A35 core for the i.MX8ULP and configure it to use the free running oscillator (FRO) as its clock source, you need to make specific modifications to your device tree.

## Device Tree Configuration

1. First, locate the device tree files for the i.MX8ULP in your Linux kernel source directory:
- Main path: `arch/arm64/boot/dts/freescale/`

2. Add or modify the TPM6 node in your device tree:

```
tpm6: tpm@2da0000 {
compatible = "fsl,imx8ulp-tpm";
reg = ;
interrupts = ;
clocks = ,
;
clock-names = "ipg", "per";
assigned-clocks = ;
assigned-clock-parents = ;
status = "okay";
};
```

3. Make sure to reference the TPM6 clock definitions from:
- `include/dt-bindings/clock/imx8ulp-clock.h`

## Important Notes

- TPM6 must be accessible from the A35 core according to the i.MX8ULP memory map
- The FRO (Free Running Oscillator) must be properly configured in the CGC (Clock Generation and Control)
- You'll need to manually adjust the device tree based on the block diagram (Figure 6) and memory mapping tables in the i.MX8ULP Reference Manual

regards

0 Kudos
Reply

254 Views
graycan00
Contributor I

Initially I followed the steps in this post and applied the patches provided from this solution:

https://community.nxp.com/t5/i-MX-Processors/i-MX8ULP-linux-clocksource-precision/m-p/2139659/highli...

This however seemed to only allow for use of the system oscillator and not the FRO. 

I made the following changes after using the patch from the solution linked above.

1)  Configure the Peripheral Clock Controller (PCC4) for TPM6, imx8ulp_bl31_setup.c

#if defined(IMX8ULP_TPM_TIMERS)
    /* config the TPM6 clock with FRODIV2*/
    mmio_write_32(IMX_CGC1_BASE + 0x908, 0x3);
    mmio_write_32(IMX_PCC4_BASE + 0x08, 0x94000000);
    mmio_write_32(IMX_PCC4_BASE + 0x08, 0xd4000000);
#endif


2) Modified the patch from solution linked above to use frosc_div2 instead of sosc_div2:

From 6db58f97ab7fb7cff89a5386dee7c392f1fdd7cb Mon Sep 17 00:00:00 2001
From: chong feng <chong.feng@nxp.com>
Date: Thu, 7 Aug 2025 23:17:29 +0530
Subject: [PATCH 1/3] drivers: clk: imx8ulp tpm4, tpm6 fixed clk gate only

Add clk imx8ulp tpm6 fixed clock gate only

Signed-off-by: Adrian Alonso <adrian.alonso@nxp.com>
Reviewed-by: Jacky Bai <ping.bai@nxp.com>
---
 drivers/clk/imx/clk-imx8ulp.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/imx/clk-imx8ulp.c b/drivers/clk/imx/clk-imx8ulp.c
index 535b6364ca7e..1abef4c54c2e 100644
--- a/drivers/clk/imx/clk-imx8ulp.c
+++ b/drivers/clk/imx/clk-imx8ulp.c
@@ -413,7 +413,8 @@ static int imx8ulp_clk_pcc4_init(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	clks[IMX8ULP_CLK_FLEXSPI2] = imx8ulp_clk_hw_composite("flexspi2", pcc4_periph_plat_sels, ARRAY_SIZE(pcc4_periph_plat_sels), true, true, true, base + 0x4, 1);
-	clks[IMX8ULP_CLK_TPM6] = imx8ulp_clk_hw_composite("tpm6", pcc4_periph_bus_sels, ARRAY_SIZE(pcc4_periph_bus_sels), true, true, true, base + 0x8, 1);
+	// clks[IMX8ULP_CLK_TPM6] = imx8ulp_clk_hw_composite("tpm6", pcc4_periph_bus_sels, ARRAY_SIZE(pcc4_periph_bus_sels), true, true, true, base + 0x8, 1);
+	// clks[IMX8ULP_CLK_TPM6] = imx_clk_hw_gate_flags("tpm6", "sosc_div2",  base + 0x08, 30, CLK_IS_CRITICAL);
+	clks[IMX8ULP_CLK_TPM6] = imx_clk_hw_gate_flags("tpm6", "frosc_div2",  base + 0x08, 30, CLK_IS_CRITICAL);
 	clks[IMX8ULP_CLK_TPM7] = imx8ulp_clk_hw_composite("tpm7", pcc4_periph_bus_sels, ARRAY_SIZE(pcc4_periph_bus_sels), true, true, true, base + 0xc, 1);
 	clks[IMX8ULP_CLK_LPI2C6] = imx8ulp_clk_hw_composite("lpi2c6", pcc4_periph_bus_sels, ARRAY_SIZE(pcc4_periph_bus_sels), true, true, true, base + 0x10, 1);
 	clks[IMX8ULP_CLK_LPI2C7] = imx8ulp_clk_hw_composite("lpi2c7", pcc4_periph_bus_sels, ARRAY_SIZE(pcc4_periph_bus_sels), true, true, true, base + 0x14, 1);
-- 
2.25.1


3) Update device tree. 

       tpm6: tpm@29820000 {
            compatible = "nxp,tpm-timer";
            timer-rating = <410>;
            status = "okay";     
            reg = <0x29820000 0x1000>;
            interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
            clock-names = "ipg", "per";
            clocks = <&frosc>, <&frosc>;         
        };   



These steps get the linux clock summary to show a clock rate of 192MHz on TPM6. This is good, but it should be 48MHz because of the divisor 2 setting. 

What are the next steps to get the 48MHz clock rate on TPM6? Do I need to amend any of the steps described above? 

0 Kudos
Reply

122 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello, 

To configure TPM6 in the device tree for i.MX8ULP on the A35 core with clocking from the free running oscillator (FRO), you need to make manual modifications to the device tree files.

You can reference the i.MX8ULP device tree bindings for clock definitions at:
https://github.com/nxp-imx/linux-imx/blob/lf-6.x.y/include/dt-bindings/clock/imx8ulp-clock.h

Consult the i.MX8ULP Reference Manual section 3.2 (Arm Cortex A35 core overview) to verify TPM6 is accessible from the A35 core, as some peripherals are only accessible from specific cores.

 
Regards
0 Kudos
Reply

105 Views
graycan00
Contributor I

Yes those have been verified. Are you able to escalate and provide more detailed responses to my specific questions? 

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2255443%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHow%20to%20enable%20TPM6%20in%20device%20tree%20for%20IMX8ULP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2255443%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHow%20do%20I%20configure%20the%20imx8ulp%20device%20tree%20to%20enable%20TPM6%20on%20the%20A35%2C%20and%20what%20device%20tree%20settings%20are%20required%20to%20clock%20TPM6%20from%20the%20free%20running%20oscillator%20(FRO)%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2255443%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208%20Family%20%7C%20i.MX%208QuadMax%20(8QM)%20%7C%208QuadPlus%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20Mini%20%7C%20i.MX%208M%20Nano%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ei.MX8ULP%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2256269%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20enable%20TPM6%20in%20device%20tree%20for%20IMX8ULP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2256269%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EInitially%20I%20followed%20the%20steps%20in%20this%20post%20and%20applied%20the%20patches%20provided%20from%20this%20solution%3A%3CBR%20%2F%3E%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fi-MX-Processors%2Fi-MX8ULP-linux-clocksource-precision%2Fm-p%2F2139659%2Fhighlight%2Ftrue%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fi-MX-Processors%2Fi-MX8ULP-linux-clocksource-precision%2Fm-p%2F2139659%2Fhighlight%2Ftrue%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3EThis%20however%20seemed%20to%20only%20allow%20for%20use%20of%20the%20system%20oscillator%20and%20not%20the%20FRO.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EI%20made%20the%20following%20changes%20after%20using%20the%20patch%20from%20the%20solution%20linked%20above.%3CBR%20%2F%3E%3CBR%20%2F%3E1)%20%3CSTRONG%3E%26nbsp%3BConfigure%20the%20Peripheral%20Clock%20Controller%20(PCC4)%20for%20TPM6%2C%20imx8ulp_bl31_setup.c%3C%2FSTRONG%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3E%23if%20defined(IMX8ULP_TPM_TIMERS)%0A%20%20%20%20%2F*%20config%20the%20TPM6%20clock%20with%20FRODIV2*%2F%0A%20%20%20%20mmio_write_32(IMX_CGC1_BASE%20%2B%200x908%2C%200x3)%3B%0A%20%20%20%20mmio_write_32(IMX_PCC4_BASE%20%2B%200x08%2C%200x94000000)%3B%0A%20%20%20%20mmio_write_32(IMX_PCC4_BASE%20%2B%200x08%2C%200xd4000000)%3B%0A%23endif%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E2)%20Modified%20the%20patch%20from%20solution%20linked%20above%20to%20use%20frosc_div2%20instead%20of%20sosc_div2%3A%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3EFrom%206db58f97ab7fb7cff89a5386dee7c392f1fdd7cb%20Mon%20Sep%2017%2000%3A00%3A00%202001%0AFrom%3A%20chong%20feng%20%3CCHONG.FENG%3E%0ADate%3A%20Thu%2C%207%20Aug%202025%2023%3A17%3A29%20%2B0530%0ASubject%3A%20%5BPATCH%201%2F3%5D%20drivers%3A%20clk%3A%20imx8ulp%20tpm4%2C%20tpm6%20fixed%20clk%20gate%20only%0A%0AAdd%20clk%20imx8ulp%20tpm6%20fixed%20clock%20gate%20only%0A%0ASigned-off-by%3A%20Adrian%20Alonso%20%3CADRIAN.ALONSO%3E%0AReviewed-by%3A%20Jacky%20Bai%20%3CPING.BAI%3E%0A---%0A%20drivers%2Fclk%2Fimx%2Fclk-imx8ulp.c%20%7C%203%20%2B%2B-%0A%201%20file%20changed%2C%202%20insertions(%2B)%2C%201%20deletion(-)%0A%0Adiff%20--git%20a%2Fdrivers%2Fclk%2Fimx%2Fclk-imx8ulp.c%20b%2Fdrivers%2Fclk%2Fimx%2Fclk-imx8ulp.c%0Aindex%20535b6364ca7e..1abef4c54c2e%20100644%0A---%20a%2Fdrivers%2Fclk%2Fimx%2Fclk-imx8ulp.c%0A%2B%2B%2B%20b%2Fdrivers%2Fclk%2Fimx%2Fclk-imx8ulp.c%0A%40%40%20-413%2C7%20%2B413%2C8%20%40%40%20static%20int%20imx8ulp_clk_pcc4_init(struct%20platform_device%20*pdev)%0A%20%09%09return%20PTR_ERR(base)%3B%0A%20%0A%20%09clks%5BIMX8ULP_CLK_FLEXSPI2%5D%20%3D%20imx8ulp_clk_hw_composite(%22flexspi2%22%2C%20pcc4_periph_plat_sels%2C%20ARRAY_SIZE(pcc4_periph_plat_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200x4%2C%201)%3B%0A-%09clks%5BIMX8ULP_CLK_TPM6%5D%20%3D%20imx8ulp_clk_hw_composite(%22tpm6%22%2C%20pcc4_periph_bus_sels%2C%20ARRAY_SIZE(pcc4_periph_bus_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200x8%2C%201)%3B%0A%2B%09%2F%2F%20clks%5BIMX8ULP_CLK_TPM6%5D%20%3D%20imx8ulp_clk_hw_composite(%22tpm6%22%2C%20pcc4_periph_bus_sels%2C%20ARRAY_SIZE(pcc4_periph_bus_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200x8%2C%201)%3B%0A%2B%09%2F%2F%20clks%5BIMX8ULP_CLK_TPM6%5D%20%3D%20imx_clk_hw_gate_flags(%22tpm6%22%2C%20%22sosc_div2%22%2C%20%20base%20%2B%200x08%2C%2030%2C%20CLK_IS_CRITICAL)%3B%0A%2B%09clks%5BIMX8ULP_CLK_TPM6%5D%20%3D%20imx_clk_hw_gate_flags(%22tpm6%22%2C%20%22frosc_div2%22%2C%20%20base%20%2B%200x08%2C%2030%2C%20CLK_IS_CRITICAL)%3B%0A%20%09clks%5BIMX8ULP_CLK_TPM7%5D%20%3D%20imx8ulp_clk_hw_composite(%22tpm7%22%2C%20pcc4_periph_bus_sels%2C%20ARRAY_SIZE(pcc4_periph_bus_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200xc%2C%201)%3B%0A%20%09clks%5BIMX8ULP_CLK_LPI2C6%5D%20%3D%20imx8ulp_clk_hw_composite(%22lpi2c6%22%2C%20pcc4_periph_bus_sels%2C%20ARRAY_SIZE(pcc4_periph_bus_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200x10%2C%201)%3B%0A%20%09clks%5BIMX8ULP_CLK_LPI2C7%5D%20%3D%20imx8ulp_clk_hw_composite(%22lpi2c7%22%2C%20pcc4_periph_bus_sels%2C%20ARRAY_SIZE(pcc4_periph_bus_sels)%2C%20true%2C%20true%2C%20true%2C%20base%20%2B%200x14%2C%201)%3B%0A--%20%0A2.25.1%0A%3C%2FPING.BAI%3E%3C%2FADRIAN.ALONSO%3E%3C%2FCHONG.FENG%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E3)%20Update%20device%20tree.%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3E%20%20%20%20%20%20%20tpm6%3A%20tpm%4029820000%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20compatible%20%3D%20%22nxp%2Ctpm-timer%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20timer-rating%20%3D%20%26lt%3B410%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20status%20%3D%20%22okay%22%3B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20reg%20%3D%20%26lt%3B0x29820000%200x1000%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20interrupts%20%3D%20%3CGIC_SPI%2088%3D%22%22%20irq_type_level_high%3D%22%22%3E%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clock-names%20%3D%20%22ipg%22%2C%20%22per%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clocks%20%3D%20%26lt%3B%26amp%3Bfrosc%26gt%3B%2C%20%26lt%3B%26amp%3Bfrosc%26gt%3B%3B%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%3B%20%20%20%3C%2FGIC_SPI%3E%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3EThese%20steps%20get%20the%20linux%20clock%20summary%20to%20show%20a%20clock%20rate%20of%20192MHz%20on%20TPM6.%20This%20is%20good%2C%20but%20it%20should%20be%2048MHz%20because%20of%20the%20divisor%202%20setting.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EWhat%20are%20the%20next%20steps%20to%20get%20the%2048MHz%20clock%20rate%20on%20TPM6%3F%20Do%20I%20need%20to%20amend%20any%20of%20the%20steps%20described%20above%3F%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2256186%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20enable%20TPM6%20in%20device%20tree%20for%20IMX8ULP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2256186%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%0A%3CP%3E%3CSPAN%3ETo%20enable%20TPM6%20on%20the%20A35%20core%20for%20the%20i.MX8ULP%20and%20configure%20it%20to%20use%20the%20free%20running%20oscillator%20(FRO)%20as%20its%20clock%20source%2C%20you%20need%20to%20make%20specific%20modifications%20to%20your%20device%20tree.%3CBR%20%2F%3E%3CBR%20%2F%3E%23%23%20Device%20Tree%20Configuration%3CBR%20%2F%3E%3CBR%20%2F%3E1.%20First%2C%20locate%20the%20device%20tree%20files%20for%20the%20i.MX8ULP%20in%20your%20Linux%20kernel%20source%20directory%3A%3CBR%20%2F%3E-%20Main%20path%3A%20%60arch%2Farm64%2Fboot%2Fdts%2Ffreescale%2F%60%3CBR%20%2F%3E%3CBR%20%2F%3E2.%20Add%20or%20modify%20the%20TPM6%20node%20in%20your%20device%20tree%3A%3CBR%20%2F%3E%3CBR%20%2F%3E%60%60%60%3CBR%20%2F%3Etpm6%3A%20tpm%402da0000%20%7B%3CBR%20%2F%3Ecompatible%20%3D%20%22fsl%2Cimx8ulp-tpm%22%3B%3CBR%20%2F%3Ereg%20%3D%20%3B%3CBR%20%2F%3Einterrupts%20%3D%20%3B%3CBR%20%2F%3Eclocks%20%3D%20%2C%3CBR%20%2F%3E%3B%3CBR%20%2F%3Eclock-names%20%3D%20%22ipg%22%2C%20%22per%22%3B%3CBR%20%2F%3Eassigned-clocks%20%3D%20%3B%3CBR%20%2F%3Eassigned-clock-parents%20%3D%20%3B%3CBR%20%2F%3Estatus%20%3D%20%22okay%22%3B%3CBR%20%2F%3E%7D%3B%3CBR%20%2F%3E%60%60%60%3CBR%20%2F%3E%3CBR%20%2F%3E3.%20Make%20sure%20to%20reference%20the%20TPM6%20clock%20definitions%20from%3A%3CBR%20%2F%3E-%20%60include%2Fdt-bindings%2Fclock%2Fimx8ulp-clock.h%60%3CBR%20%2F%3E%3CBR%20%2F%3E%23%23%20Important%20Notes%3CBR%20%2F%3E%3CBR%20%2F%3E-%20TPM6%20must%20be%20accessible%20from%20the%20A35%20core%20according%20to%20the%20i.MX8ULP%20memory%20map%3CBR%20%2F%3E-%20The%20FRO%20(Free%20Running%20Oscillator)%20must%20be%20properly%20configured%20in%20the%20CGC%20(Clock%20Generation%20and%20Control)%3CBR%20%2F%3E-%20You'll%20need%20to%20manually%20adjust%20the%20device%20tree%20based%20on%20the%20block%20diagram%20(Figure%206)%20and%20memory%20mapping%20tables%20in%20the%20i.MX8ULP%20Reference%20Manual%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3CSPAN%3Eregards%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2257398%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20enable%20TPM6%20in%20device%20tree%20for%20IMX8ULP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2257398%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EYes%20those%20have%20been%20verified.%20Are%20you%20able%20to%20escalate%20and%20provide%20more%20detailed%20responses%20to%20my%20specific%20questions%3F%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2257214%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20enable%20TPM6%20in%20device%20tree%20for%20IMX8ULP%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2257214%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%26nbsp%3B%3C%2FP%3E%0A%3CDIV%20class%3D%22container%20slds-m-bottom_x-small%22%3E%0A%3CP%3ETo%20configure%20TPM6%20in%20the%20device%20tree%20for%20i.MX8ULP%20on%20the%20A35%20core%20with%20clocking%20from%20the%20free%20running%20oscillator%20(FRO)%2C%20you%20need%20to%20make%20manual%20modifications%20to%20the%20device%20tree%20files.%3CBR%20%2F%3E%3CBR%20%2F%3EYou%20can%20reference%20the%20i.MX8ULP%20device%20tree%20bindings%20for%20clock%20definitions%20at%3A%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Flf-6.x.y%2Finclude%2Fdt-bindings%2Fclock%2Fimx8ulp-clock.h%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2Fnxp-imx%2Flinux-imx%2Fblob%2Flf-6.x.y%2Finclude%2Fdt-bindings%2Fclock%2Fimx8ulp-clock.h%3C%2FA%3E%3CBR%20%2F%3E%3CBR%20%2F%3EConsult%20the%20i.MX8ULP%20Reference%20Manual%20section%203.2%20(Arm%20Cortex%20A35%20core%20overview)%20to%20verify%20TPM6%20is%20accessible%20from%20the%20A35%20core%2C%20as%20some%20peripherals%20are%20only%20accessible%20from%20specific%20cores.%3C%2FP%3E%0A%3C%2FDIV%3E%0A%3CDIV%20data-render-key%3D%221%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%0A%3CDIV%20class%3D%22section%20slds-grid%20slds-gutters_direct%20slds-wrap%22%3E%0A%3CDIV%3E%0A%3CDIV%20class%3D%22slds-grid%20slds-wrap%20slds-gutters_direct%22%3ERegards%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%3C%2FLINGO-BODY%3E