162 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright 2021 NXP
 | |
|  */
 | |
| 
 | |
| #ifndef _ASM_ARCH_CGC_H
 | |
| #define _ASM_ARCH_CGC_H
 | |
| 
 | |
| enum cgc_clk {
 | |
| 	DUMMY0_CLK,
 | |
| 	DUMMY1_CLK,
 | |
| 	LPOSC,
 | |
| 	NIC_APCLK,
 | |
| 	NIC_PERCLK,
 | |
| 	XBAR_APCLK,
 | |
| 	XBAR_BUSCLK,
 | |
| 	AD_SLOWCLK,
 | |
| 	SOSC,
 | |
| 	SOSC_DIV1,
 | |
| 	SOSC_DIV2,
 | |
| 	SOSC_DIV3,
 | |
| 	FRO,
 | |
| 	FRO_DIV1,
 | |
| 	FRO_DIV2,
 | |
| 	FRO_DIV3,
 | |
| 	PLL2,
 | |
| 	PLL3,
 | |
| 	PLL3_VCODIV,
 | |
| 	PLL3_PFD0,
 | |
| 	PLL3_PFD1,
 | |
| 	PLL3_PFD2,
 | |
| 	PLL3_PFD3,
 | |
| 	PLL3_PFD0_DIV1,
 | |
| 	PLL3_PFD0_DIV2,
 | |
| 	PLL3_PFD1_DIV1,
 | |
| 	PLL3_PFD1_DIV2,
 | |
| 	PLL3_PFD2_DIV1,
 | |
| 	PLL3_PFD2_DIV2,
 | |
| 	PLL3_PFD3_DIV1,
 | |
| 	PLL3_PFD3_DIV2,
 | |
| 	LVDS,
 | |
| 	LPAV_AXICLK,
 | |
| 	LPAV_AHBCLK,
 | |
| 	LPAV_BUSCLK,
 | |
| 	PLL4,
 | |
| 	PLL4_VCODIV,
 | |
| 	PLL4_PFD0,
 | |
| 	PLL4_PFD1,
 | |
| 	PLL4_PFD2,
 | |
| 	PLL4_PFD3,
 | |
| 	PLL4_PFD0_DIV1,
 | |
| 	PLL4_PFD0_DIV2,
 | |
| 	PLL4_PFD1_DIV1,
 | |
| 	PLL4_PFD1_DIV2,
 | |
| 	PLL4_PFD2_DIV1,
 | |
| 	PLL4_PFD2_DIV2,
 | |
| 	PLL4_PFD3_DIV1,
 | |
| 	PLL4_PFD3_DIV2,
 | |
| 	CM33_BUSCLK,
 | |
| 	PLL1_VCO_DIV,
 | |
| 	PLL0_PFD2_DIV,
 | |
| 	PLL0_PFD1_DIV,
 | |
| };
 | |
| 
 | |
| struct cgc1_regs {
 | |
| 	u32 verid;
 | |
| 	u32 rsvd1[4];
 | |
| 	u32 ca35clk;
 | |
| 	u32 rsvd2[2];
 | |
| 	u32 clkoutcfg;
 | |
| 	u32 rsvd3[4];
 | |
| 	u32 nicclk;
 | |
| 	u32 xbarclk;
 | |
| 	u32 rsvd4[21];
 | |
| 	u32 clkdivrst;
 | |
| 	u32 rsvd5[29];
 | |
| 	u32 soscdiv;
 | |
| 	u32 rsvd6[63];
 | |
| 	u32 frodiv;
 | |
| 	u32 rsvd7[189];
 | |
| 	u32 pll2csr;
 | |
| 	u32 rsvd8[3];
 | |
| 	u32 pll2cfg;
 | |
| 	u32 rsvd9;
 | |
| 	u32 pll2denom;
 | |
| 	u32 pll2num;
 | |
| 	u32 pll2ss;
 | |
| 	u32 rsvd10[55];
 | |
| 	u32 pll3csr;
 | |
| 	u32 pll3div_vco;
 | |
| 	u32 pll3div_pfd0;
 | |
| 	u32 pll3div_pfd1;
 | |
| 	u32 pll3cfg;
 | |
| 	u32 pll3pfdcfg;
 | |
| 	u32 pll3denom;
 | |
| 	u32 pll3num;
 | |
| 	u32 pll3ss;
 | |
| 	u32 pll3lock;
 | |
| 	u32 rsvd11[54];
 | |
| 	u32 enetstamp;
 | |
| 	u32 rsvd12[67];
 | |
| 	u32 pllusbcfg;
 | |
| 	u32 rsvd13[59];
 | |
| 	u32 aud_clk1;
 | |
| 	u32 sai5_4_clk;
 | |
| 	u32 tpm6_7clk;
 | |
| 	u32 mqs1clk;
 | |
| 	u32 rsvd14[60];
 | |
| 	u32 lvdscfg;
 | |
| };
 | |
| 
 | |
| struct cgc2_regs {
 | |
| 	u32 verid;
 | |
| 	u32 rsvd1[4];
 | |
| 	u32 hificlk;
 | |
| 	u32 rsvd2[2];
 | |
| 	u32 clkoutcfg;
 | |
| 	u32 rsvd3[6];
 | |
| 	u32 niclpavclk;
 | |
| 	u32 ddrclk;
 | |
| 	u32 rsvd4[19];
 | |
| 	u32 clkdivrst;
 | |
| 	u32 rsvd5[29];
 | |
| 	u32 soscdiv;
 | |
| 	u32 rsvd6[63];
 | |
| 	u32 frodiv;
 | |
| 	u32 rsvd7[253];
 | |
| 	u32 pll4csr;
 | |
| 	u32 pll4div_vco;
 | |
| 	u32 pll4div_pfd0;
 | |
| 	u32 pll4div_pfd1;
 | |
| 	u32 pll4cfg;
 | |
| 	u32 pll4pfdcfg;
 | |
| 	u32 pll4denom;
 | |
| 	u32 pll4num;
 | |
| 	u32 pll4ss;
 | |
| 	u32 pll4lock;
 | |
| 	u32 rsvd8[128];
 | |
| 	u32 aud_clk2;
 | |
| 	u32 sai7_6_clk;
 | |
| 	u32 tpm8clk;
 | |
| 	u32 rsvd9[1];
 | |
| 	u32 spdifclk;
 | |
| 	u32 rsvd10[59];
 | |
| 	u32 lvdscfg;
 | |
| };
 | |
| 
 | |
| u32 cgc_clk_get_rate(enum cgc_clk clk);
 | |
| void cgc1_pll3_init(ulong freq);
 | |
| void cgc1_pll2_init(ulong freq);
 | |
| void cgc1_soscdiv_init(void);
 | |
| void cgc1_init_core_clk(ulong freq);
 | |
| void cgc2_pll4_init(bool pll4_reset);
 | |
| void cgc2_ddrclk_config(u32 src, u32 div);
 | |
| void cgc2_ddrclk_wait_unlock(void);
 | |
| u32 cgc1_sosc_div(enum cgc_clk clk);
 | |
| void cgc1_enet_stamp_sel(u32 clk_src);
 | |
| void cgc2_pll4_pfd_config(enum cgc_clk pllpfd, u32 pfd);
 | |
| void cgc2_pll4_pfddiv_config(enum cgc_clk pllpfddiv, u32 div);
 | |
| void cgc2_lpav_init(enum cgc_clk clk);
 | |
| #endif
 |