xref: /OK3568_Linux_fs/u-boot/board/micronas/vct/dcgu.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2009 Stefan Roese <sr@denx.de>, DENX Software Engineering
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2006 Micronas GmbH
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef _DCGU_H
10*4882a593Smuzhiyun #define _DCGU_H
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun enum dcgu_switch {
13*4882a593Smuzhiyun 	DCGU_SWITCH_OFF,	/* Switch off				*/
14*4882a593Smuzhiyun 	DCGU_SWITCH_ON		/* Switch on				*/
15*4882a593Smuzhiyun };
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun enum dcgu_hw_module {
18*4882a593Smuzhiyun 	DCGU_HW_MODULE_DCGU,	/* Selects digital clock gen. unit	*/
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun 	DCGU_HW_MODULE_MIC32_SCI, /* Selects MIC32 SoC interface	*/
21*4882a593Smuzhiyun 	DCGU_HW_MODULE_SCI,	/* Selects SCI target agent port modules*/
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun 	DCGU_HW_MODULE_MR1,	/* Selects first MPEG reader module	*/
24*4882a593Smuzhiyun 	DCGU_HW_MODULE_MR2,	/* Selects second MPEG reader module	*/
25*4882a593Smuzhiyun 	DCGU_HW_MODULE_MVD,	/* Selects MPEG video decoder module	*/
26*4882a593Smuzhiyun 	DCGU_HW_MODULE_DVP,	/* Selects dig video processing module	*/
27*4882a593Smuzhiyun 	DCGU_HW_MODULE_CVE,	/* Selects color video encoder module	*/
28*4882a593Smuzhiyun 	DCGU_HW_MODULE_VID_ENC,	/* Selects video encoder module		*/
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 	DCGU_HW_MODULE_SSI_S,	/* Selects slave sync serial interface	*/
31*4882a593Smuzhiyun 	DCGU_HW_MODULE_SSI_M,	/* Selects master sync serial interface	*/
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun 	DCGU_HW_MODULE_GA,	/* Selects graphics accelerator module	*/
34*4882a593Smuzhiyun 	DCGU_HW_MODULE_DGPU,	/* Selects digital graphics processing	*/
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun 	DCGU_HW_MODULE_UART_1,	/* Selects first UART module		*/
37*4882a593Smuzhiyun 	DCGU_HW_MODULE_UART_2,	/* Selects second UART module		*/
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun 	DCGU_HW_MODULE_AD,	/* Selects audio decoder module		*/
40*4882a593Smuzhiyun 	DCGU_HW_MODULE_ABP_DTV,	/* Selects audio baseband processing	*/
41*4882a593Smuzhiyun 	DCGU_HW_MODULE_ABP_SCC,	/* Selects audio base band processor SCC*/
42*4882a593Smuzhiyun 	DCGU_HW_MODULE_SPDIF,	/* Selects sony philips digital interf.	*/
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun 	DCGU_HW_MODULE_TSIO,	/* Selects trasnport stream input/output*/
45*4882a593Smuzhiyun 	DCGU_HW_MODULE_TSD,	/* Selects trasnport stream decoder	*/
46*4882a593Smuzhiyun 	DCGU_HW_MODULE_TSD_KEY,	/* Selects trasnport stream decoder key	*/
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun 	DCGU_HW_MODULE_USBH,	/* Selects USB hub module		*/
49*4882a593Smuzhiyun 	DCGU_HW_MODULE_USB_PLL,	/* Selects USB phase locked loop module	*/
50*4882a593Smuzhiyun 	DCGU_HW_MODULE_USB_60,	/* Selects USB 60 module		*/
51*4882a593Smuzhiyun 	DCGU_HW_MODULE_USB_24,	/* Selects USB 24 module		*/
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun 	DCGU_HW_MODULE_PERI,	/* Selects all mod connected to clkperi20*/
54*4882a593Smuzhiyun 	DCGU_HW_MODULE_WDT,	/* Selects wtg timer mod con to clkperi20*/
55*4882a593Smuzhiyun 	DCGU_HW_MODULE_I2C1,	/* Selects first I2C mod con to clkperi20*/
56*4882a593Smuzhiyun 	DCGU_HW_MODULE_I2C2,	/* Selects 2nd I2C mod con to clkperi20	*/
57*4882a593Smuzhiyun 	DCGU_HW_MODULE_GPIO1,	/* Selects gpio module 1		*/
58*4882a593Smuzhiyun 	DCGU_HW_MODULE_GPIO2,	/* Selects gpio module 2		*/
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun 	DCGU_HW_MODULE_GPT,	/* Selects gpt mod connected to clkperi20*/
61*4882a593Smuzhiyun 	DCGU_HW_MODULE_PWM,	/* Selects pwm mod connected to clkperi20*/
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun 	DCGU_HW_MODULE_MPC,	/* Selects multi purpose cipher module	*/
64*4882a593Smuzhiyun 	DCGU_HW_MODULE_MPC_KEY,	/* Selects multi purpose cipher key	*/
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun 	DCGU_HW_MODULE_COM,	/* Selects COM unit module		*/
67*4882a593Smuzhiyun 	DCGU_HW_MODULE_VCTY_CORE, /* Selects VCT-Y core module		*/
68*4882a593Smuzhiyun 	DCGU_HW_MODULE_FWSRAM,	/* Selects firmware SRAM module		*/
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun 	DCGU_HW_MODULE_EBI,	/* Selects external bus interface module*/
71*4882a593Smuzhiyun 	DCGU_HW_MODULE_I2S,	/* Selects integrated interchip sound	*/
72*4882a593Smuzhiyun 	DCGU_HW_MODULE_MSMC,	/* Selects memory stick and mmc module	*/
73*4882a593Smuzhiyun 	DCGU_HW_MODULE_SMC,	/* Selects smartcard interface module	*/
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun 	DCGU_HW_MODULE_IRQC,	/* Selects interrupt C module		*/
76*4882a593Smuzhiyun 	DCGU_HW_MODULE_TOP,	/* Selects top level pinmux module	*/
77*4882a593Smuzhiyun 	DCGU_HW_MODULE_SRAM,	/* Selects SRAM module			*/
78*4882a593Smuzhiyun 	DCGU_HW_MODULE_EIC,	/* Selects External Interrupt controller*/
79*4882a593Smuzhiyun 	DCGU_HW_MODULE_CPU,	/* Selects CPU subsystem module		*/
80*4882a593Smuzhiyun 	DCGU_HW_MODULE_SCC,	/* Selects SCC module			*/
81*4882a593Smuzhiyun 	DCGU_HW_MODULE_MM,	/* Selects Memory Manager module	*/
82*4882a593Smuzhiyun 	DCGU_HW_MODULE_BCU,	/* Selects Buffer Configuration Unit	*/
83*4882a593Smuzhiyun 	DCGU_HW_MODULE_FH,	/* Selects FIFO Handler module		*/
84*4882a593Smuzhiyun 	DCGU_HW_MODULE_IMU,	/* Selects Interrupt Management Unit	*/
85*4882a593Smuzhiyun 	DCGU_HW_MODULE_MDU,	/* Selects MCI Debug Unit module	*/
86*4882a593Smuzhiyun 	DCGU_HW_MODULE_SI2OCP	/* Selects Standard Interface to OCP bridge*/
87*4882a593Smuzhiyun };
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun union dcgu_clk_en1 {
90*4882a593Smuzhiyun 	u32 reg;
91*4882a593Smuzhiyun 	struct {
92*4882a593Smuzhiyun 		u32 res1:8;		/* reserved			*/
93*4882a593Smuzhiyun 		u32 en_clkmsmc:1;	/* Enable bit for clkmsmc (#)	*/
94*4882a593Smuzhiyun 		u32 en_clkssi_s:1;	/* Enable bit for clkssi_s (#)	*/
95*4882a593Smuzhiyun 		u32 en_clkssi_m:1;	/* Enable bit for clkssi_m (#)	*/
96*4882a593Smuzhiyun 		u32 en_clksmc:1;	/* Enable bit for clksmc (#)	*/
97*4882a593Smuzhiyun 		u32 en_clkebi:1;	/* Enable bit for clkebi (#)	*/
98*4882a593Smuzhiyun 		u32 en_usbpll:1;	/* Enable bit for the USB PLL	*/
99*4882a593Smuzhiyun 		u32 en_clkusb60:1;	/* Enable bit for clkusb60 (#)	*/
100*4882a593Smuzhiyun 		u32 en_clkusb24:1;	/* Enable bit for clkusb24 (#)	*/
101*4882a593Smuzhiyun 		u32 en_clkuart2:1;	/* Enable bit for clkuart2 (#)	*/
102*4882a593Smuzhiyun 		u32 en_clkuart1:1;	/* Enable bit for clkuart1 (#)	*/
103*4882a593Smuzhiyun 		u32 en_clkperi20:1;	/* Enable bit for clkperi20 (#)	*/
104*4882a593Smuzhiyun 		u32 res2:3;		/* reserved			*/
105*4882a593Smuzhiyun 		u32 en_clk_i2s_dly:1;	/* Enable bit for clk_scc_abp	*/
106*4882a593Smuzhiyun 		u32 en_clk_scc_abp:1;	/* Enable bit for clk_scc_abp	*/
107*4882a593Smuzhiyun 		u32 en_clk_dtv_spdo:1;	/* Enable bit for clk_dtv_spdo	*/
108*4882a593Smuzhiyun 		u32 en_clkad:1;		/* Enable bit for clkad (#)	*/
109*4882a593Smuzhiyun 		u32 en_clkmvd:1;	/* Enable bit for clkmvd (#)	*/
110*4882a593Smuzhiyun 		u32 en_clktsd:1;	/* Enable bit for clktsd (#)	*/
111*4882a593Smuzhiyun 		u32 en_clkga:1;		/* Enable bit for clkga (#)	*/
112*4882a593Smuzhiyun 		u32 en_clkdvp:1;	/* Enable bit for clkdvp (#)	*/
113*4882a593Smuzhiyun 		u32 en_clkmr2:1;	/* Enable bit for clkmr2 (#)	*/
114*4882a593Smuzhiyun 		u32 en_clkmr1:1;	/* Enable bit for clkmr1 (#)	*/
115*4882a593Smuzhiyun 	} bits;
116*4882a593Smuzhiyun };
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun union dcgu_clk_en2 {
119*4882a593Smuzhiyun 	u32 reg;
120*4882a593Smuzhiyun 	struct {
121*4882a593Smuzhiyun 		u32 res1:31;		/* reserved			*/
122*4882a593Smuzhiyun 		u32 en_clkcpu:1;	/* Enable bit for clkcpu	*/
123*4882a593Smuzhiyun 	} bits;
124*4882a593Smuzhiyun };
125*4882a593Smuzhiyun 
126*4882a593Smuzhiyun union dcgu_reset_unit1 {
127*4882a593Smuzhiyun 	u32 reg;
128*4882a593Smuzhiyun 	struct {
129*4882a593Smuzhiyun 		u32 res1:1;
130*4882a593Smuzhiyun 		u32 swreset_clkmsmc:1;
131*4882a593Smuzhiyun 		u32 swreset_clkssi_s:1;
132*4882a593Smuzhiyun 		u32 swreset_clkssi_m:1;
133*4882a593Smuzhiyun 		u32 swreset_clksmc:1;
134*4882a593Smuzhiyun 		u32 swreset_clkebi:1;
135*4882a593Smuzhiyun 		u32 swreset_clkusb60:1;
136*4882a593Smuzhiyun 		u32 swreset_clkusb24:1;
137*4882a593Smuzhiyun 		u32 swreset_clkuart2:1;
138*4882a593Smuzhiyun 		u32 swreset_clkuart1:1;
139*4882a593Smuzhiyun 		u32 swreset_pwm:1;
140*4882a593Smuzhiyun 		u32 swreset_gpt:1;
141*4882a593Smuzhiyun 		u32 swreset_i2c2:1;
142*4882a593Smuzhiyun 		u32 swreset_i2c1:1;
143*4882a593Smuzhiyun 		u32 swreset_gpio2:1;
144*4882a593Smuzhiyun 		u32 swreset_gpio1:1;
145*4882a593Smuzhiyun 		u32 swreset_clkcpu:1;
146*4882a593Smuzhiyun 		u32 res2:2;
147*4882a593Smuzhiyun 		u32 swreset_clk_i2s_dly:1;
148*4882a593Smuzhiyun 		u32 swreset_clk_scc_abp:1;
149*4882a593Smuzhiyun 		u32 swreset_clk_dtv_spdo:1;
150*4882a593Smuzhiyun 		u32 swreset_clkad:1;
151*4882a593Smuzhiyun 		u32 swreset_clkmvd:1;
152*4882a593Smuzhiyun 		u32 swreset_clktsd:1;
153*4882a593Smuzhiyun 		u32 swreset_clktsio:1;
154*4882a593Smuzhiyun 		u32 swreset_clkga:1;
155*4882a593Smuzhiyun 		u32 swreset_clkmpc:1;
156*4882a593Smuzhiyun 		u32 swreset_clkcve:1;
157*4882a593Smuzhiyun 		u32 swreset_clkdvp:1;
158*4882a593Smuzhiyun 		u32 swreset_clkmr2:1;
159*4882a593Smuzhiyun 		u32 swreset_clkmr1:1;
160*4882a593Smuzhiyun 	} bits;
161*4882a593Smuzhiyun };
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun int dcgu_set_clk_switch(enum dcgu_hw_module module, enum dcgu_switch setup);
164*4882a593Smuzhiyun int dcgu_set_reset_switch(enum dcgu_hw_module module, enum dcgu_switch setup);
165*4882a593Smuzhiyun 
166*4882a593Smuzhiyun #endif /* _DCGU_H */
167