/* * arch/arm/mach-sun6i/include/mach/ccmu_regs.h * * Copyright 2012 (c) Allwinner. * kevin.z.m (kevin@allwinnertech.com) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __MEM_CCMU_SUN8IW1P1_H__ #define __MEM_CCMU_SUN8IW1P1_H__ typedef union { __u32 dwval; struct { __u32 FactorM:2; /*bit0, PLL1 Factor M */ __u32 reserved0:2; /*bit2, reserved */ __u32 FactorK:2; /*bit4, PLL1 factor K */ __u32 reserved1:2; /*bit6, reserved */ __u32 FactorN:5; /*bit8, PLL1 Factor N */ __u32 reserved2:11; /*bit13, reserved */ __u32 SigmaEn:1; /*bit24, sigma delta enbale */ __u32 reserved3:3; /*bit25, reserved */ __u32 Lock:1; /*bit28, pll is stable flag, 1-pll has stabled */ __u32 reserved4:2; /*bit29, reserved */ __u32 PLLEn:1; /*bit31, 0-disable, 1-enable, (24Mhz*N*K)/(M*P) */ } bits; } __ccmu_pll1_reg0000_t; typedef struct __CCMU_PLL2_REG0008 { __u32 FactorM:5; /*bit0, PLL2 prev division M */ __u32 reserved0:3; /*bit5, reserved */ __u32 FactorN:7; /*bit8, PLL2 factor N */ __u32 reserved1:1; /*bit15, reserved */ __u32 FactorP:4; /*bit16, PLL2 post division */ __u32 reserved2:4; /*bit20, reserved */ __u32 SdmEn:1; /*bit24, pll sdm enable, factorN only low 4 bits valid when enable */ __u32 reserved3:3; /*bit25, reserved */ __u32 Lock:1; /*bit28, pll stable flag */ __u32 reserved4:2; /*bit29, reserved */ __u32 PLLEn:1; /*bit31, PLL2 enable */ } __ccmu_pll2_reg0008_t; typedef struct __CCMU_MEDIA_PLL { __u32 FactorM:4; /*bit0, PLL3 FactorM */ __u32 reserved0:4; /*bit4, reserved */ __u32 FactorN:7; /*bit8, PLL factor N */ __u32 reserved1:5; /*bit15, reserved */ __u32 SdmEn:1; /*bit20, sdm enable */ __u32 reserved2:3; /*bit21, reserved */ __u32 ModeSel:1; /*bit24, PLL mode select */ __u32 FracMod:1; /*bit25, PLL out is 0:270Mhz, 1:297Mhz */ __u32 reserved3:2; /*bit26, reserved */ __u32 Lock:1; /*bit27, lock flag */ __u32 reserved4:1; /*bit29, reserved */ __u32 CtlMode:1; /*bit30, control mode, 0-controled by cpu, 1-control by DE */ __u32 PLLEn:1; /*bit31, PLL3 enable */ } __ccmu_media_pll_t; typedef struct __CCMU_PLL5_REG0020 { __u32 FactorM:2; /*bit0, PLL5 factor M */ __u32 reserved0:2; /*bit2, reserved */ __u32 FactorK:2; /*bit4, PLL5 factor K */ __u32 reserved1:2; /*bit6, reserved */ __u32 FactorN:5; /*bit8, PLL5 factor N */ __u32 reserved2:7; /*bit13, reserved */ __u32 PLLCfgUpdate:1; /*bit20, PLL configuration update */ __u32 reserved3:3; /*bit21, reserved */ __u32 SigmaDeltaEn:1; /*bit24, sdram sigma delta enable */ __u32 reserved4:3; /*bit25, reserved */ __u32 Lock:1; /*bit28, lock flag */ __u32 reserved5:2; /*bit29, reserved */ __u32 PLLEn:1; /*bit31, PLL5 Enable */ } __ccmu_pll5_reg0020_t; typedef struct __CCMU_PLL6_REG0028 { __u32 FactorM:2; /*bit0, PLL6 factor M */ __u32 reserved0:2; /*bit2, reserved */ __u32 FactorK:2; /*bit4, PLL6 factor K */ __u32 reserved1:2; /*bit6, reserved */ __u32 FactorN:5; /*bit8, PLL6 factor N */ __u32 reserved2:3; /*bit13, reserved */ __u32 Pll24MPdiv:2; /*bit16, PLL 24M output clock post divider */ __u32 Pll24MOutEn:1; /*bit18, PLL 24M output enable */ __u32 reserved3:5; /*bit19, reserved */ __u32 PllClkOutEn:1; /*bit24, pll clock output enable */ __u32 PLLBypass:1; /*bit25, PLL6 output bypass enable */ __u32 reserved4:2; /*bit26, reserved */ __u32 Lock:1; /*bit28, lock flag */ __u32 reserved5:2; /*bit29, reserved */ __u32 PLLEn:1; /*bit31, PLL6 enable */ } __ccmu_pll6_reg0028_t; typedef struct __CCMU_MIPI_PLL_REG0040 { __u32 FactorM:4; /*bit0, PLL FactorM */ __u32 FactorK:2; /*bit4, PLL FactorM */ __u32 reserved0:2; /*bit6, reserved */ __u32 FactorN:4; /*bit8, PLL factor N */ __u32 reserved1:4; /*bit12, reserved */ __u32 VfbSel:1; /*bit16, 0-mipi mode(n, k, m valid), 1-hdmi mode(sint_frac, sdiv2 */ /* s6p25_7p5, pll_feedback_div valid) */ __u32 FeedBackDiv:1; /*bit17, pll feedback division, 0:x5, 1:x7 */ __u32 reserved2:2; /*bit18, reserved */ __u32 SdmEn:1; /*bit20, sdm enable */ __u32 PllSrc:1; /*bit21, PLL source, 0:video pll0, 1:video pll1 */ __u32 Ldo2En:1; /*bit22, LDO2 enable */ __u32 Ldo1En:1; /*bit23, LDO1 enable */ __u32 reserved3:1; /*bit24, reserved */ __u32 Sel625Or750:1; /*bit25, select pll out is input*6.25 or 7.50 */ __u32 SDiv2:1; /*bit26, PLL output seclect, 0:pll output, 1:pll output x2 */ __u32 FracMode:1; /*bit27, PLL output mode, 0:integer mode, 1:fraction mode */ __u32 Lock:1; /*bit28, lock flag */ __u32 reserved4:2; /*bit29, reserved */ __u32 PLLEn:1; /*bit31, PLL enable */ } __ccmu_mipi_pll_reg0040_t; #define AC327_CLKSRC_LOSC (0) #define AC327_CLKSRC_HOSC (1) #define AC327_CLKSRC_PLL1 (2) typedef union { __u32 dwval; struct { __u32 AXIClkDiv:3; /*bit0, AXI clock divide ratio, 000-1, 001-2, 010-3, 011/1xx-4 */ __u32 reserved0:5; /*bit3, reserved */ __u32 AtbApbClkDiv:2; /*bit8, ATB/APB clock div, 00-1, 01-2, 1x-4, need care? maybe, just for tips. */ __u32 reserved1:6; /*bit10, reserved */ __u32 CpuClkSrc:2; /*bit16, CPU1/2/3/4 clock source select, 00-internal LOSC, 01-HOSC, 10/11-PLL1 */ __u32 reserved2:14; /*bit18, reserved */ } bits; } __ccmu_sysclk_ratio_reg0050_t; #define AHB1_CLKSRC_LOSC (0) #define AHB1_CLKSRC_HOSC (1) #define AHB1_CLKSRC_AXI (2) #define AHB1_CLKSRC_PLL6 (3) typedef struct __CCMU_AHB1_RATIO_REG0054 { __u32 reserved0:4; /*bit0, reserved */ __u32 Ahb1Div:2; /*bit4, ahb1 clock divide ratio, 1/2/4/8 */ __u32 Ahb1PreDiv:2; /*bit6, ahb1 clock pre-divide ratio 1/2/3/4 */ __u32 Apb1Div:2; /*bit8, apb1 clock divide ratio 2/2/4/8, source is ahb1 */ __u32 reserved1:2; /*bit10, reserved */ __u32 Ahb1ClkSrc:2; /*bit12, ahb1 clock source select, 00-LOSC, 01-OSC24M, 10-AXI, 11-PLL6/ahb1_pre_div */ __u32 reserved2:18; /*bit26, reserved */ } __ccmu_ahb1_ratio_reg0054_t; #define APB2_CLKSRC_LOSC (0) #define APB2_CLKSRC_HOSC (1) #define APB2_CLKSRC_PLL6 (2) typedef union { __u32 dwval; struct { __u32 DivM:5; /*bit0, clock divide ratio m */ __u32 reserved:11; /*bit5, reserved */ __u32 DivN:2; /*bit16, clock pre-divide ratio 1/2/4/8 */ __u32 reserved1:6; /*bit18, reserved */ __u32 ClkSrc:2; /*bit24, clock source select, 00-LOSC, 01-OSC24M, 10/11-PLL6 */ __u32 reserved2:6; /*bit26, reserved */ } bits; } __ccmu_apb2_ratio_reg0058_t; typedef struct __CCMU_AXI_GATE_REG005c { __u32 Sdram:1; /*bit0, gating AXI clock for SDRAM, 0-mask, 1-pass */ __u32 reserved0:31; /*bit1, reserved */ } __ccmu_axi_gate_reg005c_t; typedef struct __CCMU_AHB1_GATE0_REG0060 { __u32 MipiCsi:1; /*bit0, gating AHB clock for mipi csi, 0-mask, 1-pass */ __u32 MipiDsi:1; /*bit1, gating AHB clock for mipi dsi, 0-mask, 1-pass */ __u32 reserved0:3; /*bit2, reserved */ __u32 Ss:1; /*bit5, gating AHB clock for SS, 0-mask, 1-pass */ __u32 Dma:1; /*bit6, gating AHB clock for DMA, 0-mask, 1-pass */ __u32 reserved1:1; /*bit7, reserved */ __u32 Sd0:1; /*bit8, gating AHB clock for SD/MMC0, 0-mask, 1-pass */ __u32 Sd1:1; /*bit9, gating AHB clock for SD/MMC1, 0-mask, 1-pass */ __u32 Sd2:1; /*bit10, gating AHB clock for SD/MMC2, 0-mask, 1-pass */ __u32 Sd3:1; /*bit11, gating AHB clock for SD/MMC3, 0-mask, 1-pass */ __u32 Nand1:1; /*bit12, gating AHB clock for NAND1, 0-mask, 1-pass */ __u32 Nand0:1; /*bit13, gating AHB clock for NAND0, 0-mask, 1-pass */ __u32 Dram:1; /*bit14, gating AHB clock for SDRAM, 0-mask, 1-pass */ __u32 reserved2:2; /*bit15, reserved */ __u32 Gmac:1; /*bit17, gating AHB clock for GMAC, 0-mask, 1-pass */ __u32 Ts:1; /*bit18, gating AHB clock for TS, 0-mask, 1-pass */ __u32 HsTmr:1; /*bit19, gating AHB clock for High speed timer 0-mask, 1-pass */ __u32 Spi0:1; /*bit20, gating AHB clock for SPI0, 0-mask, 1-pass */ __u32 Spi1:1; /*bit21, gating AHB clock for SPI1, 0-mask, 1-pass */ __u32 Spi2:1; /*bit22, gating AHB clock for SPI2, 0-mask, 1-pass */ __u32 Spi3:1; /*bit23, gating AHB clock for SPI3, 0-mask, 1-pass */ __u32 Otg:1; /*bit24, gating AHB clock for USB-OTG, 0-mask, 1-pass */ __u32 reserved3:1; /*bit25, reserved */ __u32 Ehci0:1; /*bit26, gating AHB clock for EHCI0, 0-mask, 1-pass */ __u32 Ehci1:1; /*bit27, gating AHB clock for EHCI1, 0-mask, 1-pass */ __u32 reserved4:1; /*bit28, reserved */ __u32 Ohci0:1; /*bit29, gating AHB clock for OHCI0, 0-mask, 1-pass */ __u32 Ohci1:1; /*bit30, gating AHB clock for OHCI1, 0-mask, 1-pass */ __u32 Ohci2:1; /*bit31, gating AHB clock for OHCI2, 0-mask, 1-pass */ } __ccmu_ahb1_gate0_reg0060_t; typedef struct __CCMU_AHB1_GATE1_REG0064 { __u32 Ve:1; /*bit0, gating AHB clock for VE, 0-mask, 1-pass */ __u32 reserved0:3; /*bit1, reserved */ __u32 Lcd0:1; /*bit4, gating AHB clock for LCD0, 0-mask, 1-pass */ __u32 Lcd1:1; /*bit5, gating AHB clock for LCD1, 0-mask, 1-pass */ __u32 reserved1:2; /*bit6, reserved */ __u32 Csi0:1; /*bit8, gating AHB clock for CSI0, 0-mask, 1-pass */ __u32 Csi1:1; /*bit9, gating AHB clock for CSI1, 0-mask, 1-pass */ __u32 reserved2:1; /*bit10, reserved */ __u32 Hdmi:1; /*bit11, gating AHB clock for HDMI, 0-mask, 1-pass */ __u32 Be0:1; /*bit12, gating AHB clock for DE-BE0, 0-mask, 1-pass */ __u32 Be1:1; /*bit13, gating AHB clock for DE-BE1, 0-mask, 1-pass */ __u32 Fe0:1; /*bit14, gating AHB clock for DE-FE0, 0-mask, 1-pass */ __u32 Fe1:1; /*bit15, gating AHB clock for DE-FE1, 0-mask, 1-pass */ __u32 reserved3:2; /*bit16, reserved */ __u32 Mp:1; /*bit18, gating AHB clock for MP, 0-mask, 1-pass */ __u32 reserved4:1; /*bit19, reserved */ __u32 Gpu:1; /*bit20, gating AHB clock for GPU, 0-mask, 1-pass */ __u32 MsgBox:1; /*bit21, gating AHB clock for MSG-BOX, 0-mask, 1-pass */ __u32 SpinLock:1; /*bit22, gating AHB clock for SPIN-LOCK, 0-mask, 1-pass */ __u32 Deu0:1; /*bit23, gating AHB clock for DEU0, 0-mask, 1-pass */ __u32 Deu1:1; /*bit24, gating AHB clock for DEU1, 0-mask, 1-pass */ __u32 Drc0:1; /*bit25, gating AHB clock for DRC0, 0-mask, 1-pass */ __u32 Drc1:1; /*bit26, gating AHB clock for DRC1, 0-mask, 1-pass */ __u32 MtcAcc:1; /*bit27, gating AHB clock for MTC-ACC, 0-mask, 1-pass */ __u32 reserved5:4; /*bit28, reserved */ } __ccmu_ahb1_gate1_reg0064_t; typedef struct __CCMU_APB1_GATE_REG0068 { __u32 Adda:1; /*bit0, gating APB clock for audio codec, 0-mask, 1-pass */ __u32 Spdif:1; /*bit1, gating APB clock for SPDIF, 0-mask, 1-pass */ __u32 reserved0:2; /*bit2, reserved */ __u32 Dmic:1; /*bit4, gating APB clock for digital mic */ __u32 Pio:1; /*bit5, gating APB clock for PIO, 0-mask, 1-pass */ __u32 reserved1:6; /*bit6, reserved */ __u32 I2s0:1; /*bit12, gating APB clock for I2s-0, 0-mask, 1-pass */ __u32 I2s1:1; /*bit13, gating APB clock for I2s-1, 0-mask, 1-pass */ __u32 reserved2:18; /*bit14, reserved */ } __ccmu_apb1_gate_reg0068_t; typedef struct __CCMU_APB2_GATE_REG006C { __u32 Twi0:1; /*bit0, gating APB clock for TWI0, 0-mask, 1-pass */ __u32 Twi1:1; /*bit1, gating APB clock for TWI1, 0-mask, 1-pass */ __u32 Twi2:1; /*bit2, gating APB clock for TWI2, 0-mask, 1-pass */ __u32 Twi3:1; /*bit3, gating APB clock for TWI3, 0-mask, 1-pass */ __u32 reserved0:12; /*bit4, reserved */ __u32 Uart0:1; /*bit16, gating APB clock for UART0, 0-mask, 1-pass */ __u32 Uart1:1; /*bit17, gating APB clock for UART1, 0-mask, 1-pass */ __u32 Uart2:1; /*bit18, gating APB clock for UART2, 0-mask, 1-pass */ __u32 Uart3:1; /*bit19, gating APB clock for UART3, 0-mask, 1-pass */ __u32 Uart4:1; /*bit20, gating APB clock for UART4, 0-mask, 1-pass */ __u32 Uart5:1; /*bit21, gating APB clock for UART5, 0-mask, 1-pass */ __u32 reserved1:10; /*bit22, reserved */ } __ccmu_apb2_gate_reg006c_t; /* normal module clock */ typedef struct __CCMU_MODULE0_CLK { __u32 DivM:4; /*bit0, clock divide ratio, divided by (m+1), 1~16 ex. */ __u32 reserved0:4; /*bit4, reserved */ __u32 OutClkCtrl:3; /*bit8, output clock phase control, 0~7 */ __u32 reserved1:5; /*bit11, reserved */ __u32 DivN:2; /*bit16, clock pre-divide ratio, predivided by 2^n , 1/2/4/8 ex. */ __u32 reserved2:2; /*bit18, reserved */ __u32 SampClkCtrl:3; /*bit20, sample clock phase control, 0~7 */ __u32 reserved3:1; /*bit23, reserved */ __u32 ClkSrc:3; /*bit24, clock source select, defined with different modules */ __u32 reserved4:4; /*bit26, reserved */ __u32 ClkGate:1; /*bit31, Gating special clock, 0-CLOCK OFF, 1-CLOCK ON */ } __ccmu_module0_clk_t; /* normal module clock */ typedef struct __CCMU_MODULE1_CLK { __u32 reserved0:16; /*bit0, reserved */ __u32 ClkSrc:2; /*bit16, clock source select, 00:PLL2X8, 01:PLL2X8/2, 10:PLLX8/4, 11:PLL2X1 */ __u32 reserved1:13; /*bit18, reserved */ __u32 ClkGate:1; /*bit31, Gating special clock, 0-CLOCK OFF, 1-CLOCK ON */ } __ccmu_module1_clk_t; /* normal module clock */ typedef struct __CCMU_MODULE_CLK { __u32 reserved0:31; /*bit0, reserved */ __u32 ClkGate:1; /*bit31, Gating special clock, 0-CLOCK OFF, 1-CLOCK ON */ } __ccmu_module_clk_t; typedef struct __CCMU_USB_CLK_REG00CC { __u32 UsbPhy0Rst:1; /*bit0, USB PHY0 reset control, 0-reset valid, 1-reset invalid */ __u32 UsbPhy1Rst:1; /*bit1, USB PHY1 reset control, 0-reset valid, 1-reset invalid */ __u32 UsbPhy2Rst:1; /*bit2, USB PHY2 reset control, 0-reset valid, 1-reset invalid */ __u32 reserved0:5; /*bit3, reserved */ __u32 Phy0Gate:1; /*bit8, gating special clock for USBPHY0, 0-CLOCK OFF, 1-CLOCK ON */ __u32 Phy1Gate:1; /*bit9, gating special clock for USBPHY1, 0-CLOCK OFF, 1-CLOCK ON */ __u32 Phy2Gate:1; /*bit10, gating special clock for USBPHY2, 0-CLOCK OFF, 1-CLOCK ON */ __u32 reserved1:5; /*bit11, reserved */ __u32 Ohci0Gate:1; /*bit16, gating special clock for OHCI0, 0-CLOCK OFF, 1-CLOCK ON */ __u32 Ohci1Gate:1; /*bit17, gating special clock for OHCI1, 0-CLOCK OFF, 1-CLOCK ON */ __u32 Ohci2Gate:1; /*bit18, gating special clock for OHCI2, 0-CLOCK OFF, 1-CLOCK ON */ __u32 reserved2:13; /*bit19, reserved */ } __ccmu_usb_clk_reg00cc_t; typedef struct __CCMU_GMAC_CLK_REG00D0 { __u32 Gtcs:2; /*bit0, gmac transmit clock source, 00-transmit clk src for M2, 01-external transmit clk src for GM2 and RGM2, */ /* 10-internal transmit clk src for GM2 and RGM2, 11-reserved */ __u32 Gpit:1; /*bit2, gmac phy interface type, 0-GM2/M2, 1-RGM2 */ __u32 Gtxie:1; /*bit3, enable gmac transmit clock invertor, 0-disable, 1-enable */ __u32 Grxie:1; /*bit4, enable gmac recieve clock invertor, 0-disable, 1-enable */ __u32 Grxdc:3; /*bit5, config gmac recieve clock delay chain */ __u32 reserved0:24; /*bit8, reserved */ } __ccmu_gmac_clk_reg00d0_t; typedef struct __CCMU_DRAM_CFG_REG00F4 { __u32 Div1M:4; /*bit0, sdr clock divider of configuration 1 */ __u32 ClkSrc1:1; /*bit4, sdr clock source of configuration 1, 0:PLL5, 1:PLL6 */ __u32 reserved0:3; /*bit5, reserved */ __u32 Div0M:4; /*bit8, sdr clock divider of configuration 0 */ __u32 ClkSrc0:1; /*bit12, sdr clock source of configuration 0, 0:PLL5, 1:PLL6 */ __u32 reserved1:3; /*bit13, reserved */ __u32 SdrClkUpd:1; /*bit16, sdr clock configuration 0 update, 0:invalid, 1:valid */ __u32 reserved2:14; /*bit14, reserved */ __u32 CtrlerRst:1; /*bit31, sdram controller reset 0:assert, 1:de-assert */ } __ccmu_dram_cfg_reg00f4_t; typedef struct __CCMU_DRAM_GATE_REG0100 { __u32 Ve:1; /*bit0, Gating dram clock for VE, 0-mask, 1-pass */ __u32 CsiIsp:1; /*bit1, Gating dram clock for CSI0, CSI1, MIPI_CSI0, ISP, 0-mask, 1-pass */ __u32 reserved0:1; /*bit2, reserved */ __u32 Ts:1; /*bit3, Gating dram clock for TS, 0-mask, 1-pass */ __u32 reserved1:12; /*bit4, reserved */ __u32 Drc0:1; /*bit16, Gating dram clock for DRC0, 0-mask, 1-pass */ __u32 Drc1:1; /*bit17, Gating dram clock for DRC1, 0-mask, 1-pass */ __u32 Deu0:1; /*bit18, Gating dram clock for DEU0, 0-mask, 1-pass */ __u32 Deu1:1; /*bit19, Gating dram clock for DEU1, 0-mask, 1-pass */ __u32 reserved2:4; /*bit20, reserved */ __u32 Fe0:1; /*bit24, Gating dram clock for DE_FE0, 0-mask, 1-pass */ __u32 Fe1:1; /*bit25, Gating dram clock for DE_FE1, 0-mask, 1-pass */ __u32 Be0:1; /*bit26, Gating dram clock for DE_BE0, 0-mask, 1-pass */ __u32 Be1:1; /*bit27, Gating dram clock for DE_BE1, 0-mask, 1-pass */ __u32 Mp:1; /*bit28, Gating dram clock for MP, 0-mask, 1-pass */ __u32 reserved3:3; /*bit29, reserved */ } __ccmu_dram_gate_reg0100_t; /* display module clock */ typedef struct __CCMU_DISP_CLK { __u32 DivM:4; /*bit0, clock divide ratio, divied by (m+1), 1~16 ex. */ __u32 reserved0:20; /*bit4, reserved */ __u32 ClkSrc:3; /*bit24, clock source select, 000-PLL3, 001-PLL7 */ /* 010-PLL6X2, 011-PLL8, 100-PLL9, 101-PLL10 110/111-reserved */ __u32 reserved1:4; /*bit27, reserved */ __u32 ClkGate:1; /*bit31, gating special clock, 0-clock off, 1-clock on */ } __ccmu_disp_clk_t; /* csi module clock source */ typedef struct __CCMU_CSI_CLK { __u32 MClkDiv:4; /*bit0, master clock divide ratio, divided by (m+1), 1~16, ex. */ __u32 reserved0:4; /*bit4, reserved */ __u32 MClkSrc:3; /*bit8, clock source select, 000-PLL3(1x), 001-PLL7(1x), 010-OSC24M, 010/011/100/111-reserved, 101-PLL3(2x), 110:PLL7(2x) */ __u32 reserved1:4; /*bit11, reserved */ __u32 MClkGate:1; /*bit15, gating master clock */ __u32 SClkDiv:4; /*bit16, csi clock dirvide ratio, 1~16 */ __u32 reserved2:4; /*bit20, reserved */ __u32 SClkSrc:3; /*bit24, special clock source select, 000:PLL3(1x), 001:PLL7(1x), 010:PLL3(2x) */ /* 011:PLL7(2x), 100:mipi pll, 101~111:reserved */ __u32 reserved3:4; /*bit27, reserved */ __u32 SClkGate:1; /*bit31, Gating special clock, 0-clock off, 1-clock on */ } __ccmu_csi_clk_t; typedef struct __CCMU_VE_CLK_REG013C { __u32 reserved0:16; /*bit0, reserved */ __u32 ClkDiv:3; /*bit16, Clock pre-divide ratio, divided by (n+1), 1~8 ex. */ __u32 reserved1:12; /*bit19, reserved */ __u32 ClkGate:1; /*bit31, gating special clock for VE, 0-mask, 1-pass */ } __ccmu_ve_clk_reg013c_t; typedef struct __CCMU_HDMI_CLK_REG0150 { __u32 ClkDiv:4; /*bit0, clock divide ratio, divided by (m+1), 1~16 ex. */ __u32 reserved0:20; /*bit4, reserved */ __u32 ClkSrc:2; /*bit24, clock source select, 00-PLL3(1x), 01-PLL7(1x), 10-PLL3(2x), 11-PLL7(2x) */ __u32 reserved1:4; /*bit26, reserved */ __u32 DDCGate:1; /*bit30, Gating ddc clock, 0-clock off, 1-clock on */ __u32 ClkGate:1; /*bit31, Gating special clock, 0-clock off, 1-clock on */ } __ccmu_hdmi_clk_reg0150_t; typedef struct __CCMU_MIPI_CLK { __u32 PClkDiv:4; /*bit0, clock divide ratio, divided by (m+1), 1~16 ex. */ __u32 reserved0:4; /*bit4, reserved */ __u32 PClkSrc:2; /*bit8, clock source select, 00-PLL3(1x), 01-PLL7(1x), 10-PLL3(2x), 11-PLL7(2x) */ __u32 reserved1:5; /*bit10, reserved */ __u32 PClkGate:1; /*bit15, gating phy clock */ __u32 SClkDiv:4; /*bit16, Special clock divide ratio */ __u32 reserved2:4; /*bit20, reserved */ __u32 SClkSrc:3; /*bit24, special clock source select, 00-PLL3(1x), 01-PLL7(1x), 10-PLL3(2x), 11-PLL7(2x) */ __u32 reserved3:4; /*bit27, reserved */ __u32 SClkGate:1; /*bit31, Gating special clock, 0-clock off, 1-clock on */ } __ccmu_mipi_clk_t; typedef struct __CCMU_PLLLOCK_REG0200 { __u32 LockTime:16; /*bit0, PLL lock time, based on us */ __u32 reserved:16; /*bit16, reserved */ } __ccmu_plllock_reg0200_t; typedef struct __CCMU_MOD_RST_REG02C0 { __u32 reserved0:1; /*bit0, reserved */ __u32 MipiDsi:1; /*bit1, mipi dsi reset, 0:assert, 1:de-assert */ __u32 reserved1:3; /*bit2, reserved */ __u32 Ss:1; /*bit5, ss reset, 0:assert, 1:de-assert */ __u32 Dma:1; /*bit6, dma reset, 0:assert, 1:de-assert */ __u32 reserved2:1; /*bit7, reserved */ __u32 Sd0:1; /*bit8, sd/mmc0 reset, 0:assert, 1:de-assert */ __u32 Sd1:1; /*bit9, sd/mmc1 reset, 0:assert, 1:de-assert */ __u32 Sd2:1; /*bit10, sd/mmc2 reset, 0:assert, 1:de-assert */ __u32 Sd3:1; /*bit11, sd/mmc3 reset, 0:assert, 1:de-assert */ __u32 Nand1:1; /*bit12, nand1 reset, 0:assert, 1:de-assert */ __u32 Nand0:1; /*bit13, nand0 reset, 0:assert, 1:de-assert */ __u32 Sdram:1; /*bit14, sdram AHB reset, 0:assert, 1:de-assert */ __u32 reserved3:2; /*bit15, reserved */ __u32 Gmac:1; /*bit17, Gmac reset, 0:assert, 1:de-assert */ __u32 Ts:1; /*bit18, ts reset, 0:assert, 1:de-assert */ __u32 HsTmr:1; /*bit19, hstimer reset, 0:assert, 1:de-assert */ __u32 Spi0:1; /*bit20, spi0 reset, 0:assert, 1:de-assert */ __u32 Spi1:1; /*bit21, spi1 reset, 0:assert, 1:de-assert */ __u32 Spi2:1; /*bit22, spi2 reset, 0:assert, 1:de-assert */ __u32 Spi3:1; /*bit23, spi3 reset, 0:assert, 1:de-assert */ __u32 Otg:1; /*bit24, usb otg reset, 0:assert, 1:de-assert */ __u32 reserved4:1; /*bit25, reserved */ __u32 Ehci0:1; /*bit26, usb EHCI0 reset, 0:assert, 1:de-assert */ __u32 Ehci1:1; /*bit27, usb EHCI1 reset, 0:assert, 1:de-assert */ __u32 reserved5:1; /*bit28, reserved */ __u32 Ohci0:1; /*bit29, usb OHCI0 reset, 0:assert, 1:de-assert */ __u32 Ohci1:1; /*bit30, usb OHCI1 reset, 0:assert, 1:de-assert */ __u32 Ohci2:1; /*bit31, usb OHCI2 reset, 0:assert, 1:de-assert */ } __ccmu_mod_rst_reg02c0_t; typedef struct __CCMU_MOD_RST_REG02C4 { __u32 Ve:1; /*bit0, ve reset, 0:assert, 1:de-assert */ __u32 reserved0:3; /*bit1, reserved */ __u32 Lcd0:1; /*bit4, lcd0 reset, 0:assert, 1:de-assert */ __u32 Lcd1:1; /*bit5, lcd1 reset, 0:assert, 1:de-assert */ __u32 reserved1:2; /*bit6, reserved */ __u32 Csi0:1; /*bit8, lcd0 reset, 0:assert, 1:de-assert */ __u32 Csi1:1; /*bit9, lcd1 reset, 0:assert, 1:de-assert */ __u32 reserved2:1; /*bit10, reserved */ __u32 Hdmi:1; /*bit11, hdmi reset, 0:assert, 1:de-assert */ __u32 Be0:1; /*bit12, be0 reset, 0:assert, 1:de-assert */ __u32 Be1:1; /*bit13, be1 reset, 0:assert, 1:de-assert */ __u32 Fe0:1; /*bit14, fe0 reset, 0:assert, 1:de-assert */ __u32 Fe1:1; /*bit15, fe1 reset, 0:assert, 1:de-assert */ __u32 reserved3:2; /*bit16, reserved */ __u32 Mp:1; /*bit18, mp reset, 0:assert, 1:de-assert */ __u32 reserved4:1; /*bit19, reserved */ __u32 Gpu:1; /*bit20, gpu reset, 0:assert, 1:de-assert */ __u32 MsgBox:1; /*bit21, msg-box reset, 0:assert, 1:de-assert */ __u32 SpinLock:1; /*bit22, spin-lock reset, 0:assert, 1:de-assert */ __u32 Deu0:1; /*bit23, deu0 reset, 0:assert, 1:de-assert */ __u32 Deu1:1; /*bit24, deu1 reset, 0:assert, 1:de-assert */ __u32 Drc0:1; /*bit25, drc0 reset, 0:assert, 1:de-assert */ __u32 Drc1:1; /*bit26, drc1 reset, 0:assert, 1:de-assert */ __u32 MtcAcc:1; /*bit27, mtc-acc reset, 0:assert, 1:de-assert */ __u32 reserved5:4; /*bit28, reserved */ } __ccmu_mod_rst_reg02c4_t; typedef struct __CCMU_MOD_RST_REG02C8 { __u32 Lvds:1; /*bit0, lvds reset, 0:assert, 1:de-assert */ __u32 reserved:31; /*bit1, reserved */ } __ccmu_mod_rst_reg02c8_t; typedef struct __CCMU_MOD_RST_REG02D0 { __u32 Adda:1; /*bit0, audio codec reset, 0:assert, 1:de-assert */ __u32 Spdif:1; /*bit1, spdif reset, 0:assert, 1:de-assert */ __u32 reserved0:3; /*bit2, reserved */ __u32 Pio:1; /*bit5, pio reset, 0:assert, 1:de-assert */ __u32 reserved1:6; /*bit6, reserved */ __u32 I2s0:1; /*bit12, i2s-0 reset, 0:assert, 1:de-assert */ __u32 I2s1:1; /*bit13, i2s-1 reset, 0:assert, 1:de-assert */ __u32 reserved2:18; /*bit14, reserved */ } __ccmu_mod_rst_reg02d0_t; typedef struct __CCMU_MOD_RST_REG02D8 { __u32 Twi0:1; /*bit0, twi0 reset, 0:assert, 1:de-assert */ __u32 Twi1:1; /*bit1, twi1 reset, 0:assert, 1:de-assert */ __u32 Twi2:1; /*bit2, twi2 reset, 0:assert, 1:de-assert */ __u32 Twi3:1; /*bit3, twi3 reset, 0:assert, 1:de-assert */ __u32 reserved0:12; /*bit4, reserved */ __u32 Uart0:1; /*bit16, uart0 reset, 0:assert, 1:de-assert */ __u32 Uart1:1; /*bit17, uart1 reset, 0:assert, 1:de-assert */ __u32 Uart2:1; /*bit18, uart2 reset, 0:assert, 1:de-assert */ __u32 Uart3:1; /*bit19, uart3 reset, 0:assert, 1:de-assert */ __u32 Uart4:1; /*bit20, uart4 reset, 0:assert, 1:de-assert */ __u32 Uart5:1; /*bit21, uart5 reset, 0:assert, 1:de-assert */ __u32 reserved1:10; /*bit22, reserved */ } __ccmu_mod_rst_reg02d8_t; typedef struct __CCMU_CLK_OUT { __u32 reserved0:8; /*bit0, reserved */ __u32 DivM:5; /*bit8, clock output divide factor m */ __u32 reserved1:7; /*bit13, reserved */ __u32 DivN:2; /*bit20, clock output divide factor n */ __u32 reserved2:2; /*bit22, reserved */ __u32 ClkSrc:4; /*bit24, clock out source select */ __u32 reserved3:3; /*bit28, reserved */ __u32 ClkEn:1; /*bit31, clock out enable */ } __ccmu_clk_out_t; typedef struct __CCMU_REG_LIST { volatile __ccmu_pll1_reg0000_t Pll1Ctl; /*0x0000, PLL1 control */ volatile __u32 reserved0; /*0x0004, reserved */ volatile __ccmu_pll2_reg0008_t Pll2Ctl; /*0x0008, PLL2 control */ volatile __u32 reserved1; /*0x000c, reserved */ volatile __ccmu_media_pll_t Pll3Ctl; /*0x0010, PLL3 control */ volatile __u32 reserved2; /*0x0014, reserved */ volatile __ccmu_media_pll_t Pll4Ctl; /*0x0018, PLL4 control */ volatile __u32 reserved3; /*0x001c, reserved */ volatile __ccmu_pll5_reg0020_t Pll5Ctl; /*0x0020, PLL5 control */ volatile __u32 reserved4; /*0x0024, reserved */ volatile __ccmu_pll6_reg0028_t Pll6Ctl; /*0x0028, PLL6 control */ volatile __u32 reserved5; /*0x002c, reserved */ volatile __ccmu_media_pll_t Pll7Ctl; /*0x0030, PLL7 control */ volatile __u32 reserved6; /*0x0034, reserved */ volatile __ccmu_media_pll_t Pll8Ctl; /*0x0038, PLL8 control */ volatile __u32 reserved7; /*0x003c, reserved */ volatile __ccmu_mipi_pll_reg0040_t MipiPllCtl; /*0x0040, MIPI PLL control */ volatile __ccmu_media_pll_t Pll9Ctl; /*0x0044, PLL9 control */ volatile __ccmu_media_pll_t Pll10Ctl; /*0x0048, PLL10 control */ volatile __u32 reserved8; /*0x004c, reserved */ volatile __ccmu_sysclk_ratio_reg0050_t SysClkDiv; /*0x0050, system clock divide ratio */ volatile __ccmu_ahb1_ratio_reg0054_t Ahb1Div; /*0x0054, ahb1/apb1 clock divide ratio */ volatile __ccmu_apb2_ratio_reg0058_t Apb2Div; /*0x0058, apb2 clock divide ratio */ volatile __ccmu_axi_gate_reg005c_t AxiGate; /*0x005c, axi clock gating */ volatile __ccmu_ahb1_gate0_reg0060_t AhbGate0; /*0x0060, ahb clock gate 0 */ volatile __ccmu_ahb1_gate1_reg0064_t AhbGate1; /*0x0064, ahb clock gate 1 */ volatile __ccmu_apb1_gate_reg0068_t Apb1Gate; /*0x0068, apb1 clock gate */ volatile __ccmu_apb2_gate_reg006c_t Apb2Gate; /*0x006c, apb2 clock gate */ volatile __u32 reserved9[4]; /*0x0070, reserved */ volatile __ccmu_module0_clk_t Nand0; /*0x0080, nand controller 0 clock */ volatile __ccmu_module0_clk_t Nand1; /*0x0084, nand controller 1 clock */ volatile __ccmu_module0_clk_t Sd0; /*0x0088, sd/mmc controller 0 clock */ volatile __ccmu_module0_clk_t Sd1; /*0x008c, sd/mmc controller 1 clock */ volatile __ccmu_module0_clk_t Sd2; /*0x0090, sd/mmc controller 2 clock */ volatile __ccmu_module0_clk_t Sd3; /*0x0094, sd/mmc controller 3 clock */ volatile __ccmu_module0_clk_t Ts; /*0x0098, TS controller clock */ volatile __ccmu_module0_clk_t Ss; /*0x009c, SS controller clock */ volatile __ccmu_module0_clk_t Spi0; /*0x00a0, spi controller 0 clock */ volatile __ccmu_module0_clk_t Spi1; /*0x00a4, spi controller 1 clock */ volatile __ccmu_module0_clk_t Spi2; /*0x00a8, spi controller 2 clock */ volatile __ccmu_module0_clk_t Spi3; /*0x00ac, spi controller 3 clock */ volatile __ccmu_module1_clk_t I2s0; /*0x00b0, I2s-0 clock */ volatile __ccmu_module1_clk_t I2s1; /*0x00b4, I2s-1 clock */ volatile __u32 reserved10[2]; /*0x00b8, reserved */ volatile __ccmu_module1_clk_t Spdif; /*0x00c0, SPDIF clock */ volatile __u32 reserved11[2]; /*0x00c4, reserved */ volatile __ccmu_usb_clk_reg00cc_t Usb; /*0x00cc, usb clock */ volatile __ccmu_gmac_clk_reg00d0_t Gmac; /*0x00d0, gmac clock */ volatile __u32 reserved12[7]; /*0x00d4, reserved */ volatile __ccmu_module0_clk_t Mdfs; /*0x00f0, mdfs clock */ volatile __ccmu_dram_cfg_reg00f4_t DramCfg; /*0x00f4, dram configuration clock */ volatile __u32 reserved13[2]; /*0x00f8, reserved */ volatile __ccmu_dram_gate_reg0100_t DramGate; /*0x0100, dram module clock */ volatile __ccmu_disp_clk_t Be0; /*0x0104, BE0 module clock */ volatile __ccmu_disp_clk_t Be1; /*0x0108, BE1 module clock */ volatile __ccmu_disp_clk_t Fe0; /*0x010c, FE0 module clock */ volatile __ccmu_disp_clk_t Fe1; /*0x0110, FE1 module clock */ volatile __ccmu_disp_clk_t Mp; /*0x0114, MP module clock */ volatile __ccmu_disp_clk_t Lcd0Ch0; /*0x0118, LCD0 CH0 module clock */ volatile __ccmu_disp_clk_t Lcd1Ch0; /*0x011c, LCD1 CH0 module clock */ volatile __u32 reserved14[3]; /*0x0120, reserved */ volatile __ccmu_disp_clk_t Lcd0Ch1; /*0x012c, LCD0 CH1 module clock */ volatile __ccmu_disp_clk_t Lcd1Ch1; /*0x0130, LCD1 CH1 module clock */ volatile __ccmu_csi_clk_t Csi0; /*0x0134, csi0 module clock */ volatile __ccmu_csi_clk_t Csi1; /*0x0138, csi1 module clock */ volatile __ccmu_ve_clk_reg013c_t Ve; /*0x013c, ve module clock */ volatile __ccmu_module1_clk_t Adda; /*0x0140, adda module clock */ volatile __ccmu_module_clk_t Avs; /*0x0144, avs module clock */ volatile __ccmu_module1_clk_t Dmic; /*0x0148, digtal mic module clock */ volatile __u32 reserved15; /*0x014c, reserved */ volatile __ccmu_hdmi_clk_reg0150_t Hdmi; /*0x0150, hdmi module clock */ volatile __ccmu_module1_clk_t Ps; /*0x0154, ps module clock */ volatile __ccmu_module0_clk_t MtcAcc; /*0x0158, MTC ACC clock */ volatile __ccmu_module0_clk_t MBus0; /*0x015C, MBUS controller 0 clock */ volatile __ccmu_module0_clk_t MBus1; /*0x0160, MBUS controller 1 clock */ volatile __u32 reserved16; /*0x0164, reserved */ volatile __ccmu_mipi_clk_t MipiDsi; /*0x0168, MIPI DSI clock */ volatile __ccmu_mipi_clk_t MipiCsi; /*0x016C, MIPI CSI clock */ volatile __u32 reserved17[4]; /*0x0170, reserved */ volatile __ccmu_module0_clk_t IepDrc0; /*0x0180, IEP DRC0 clock */ volatile __ccmu_module0_clk_t IepDrc1; /*0x0184, IEP DRC1 clock */ volatile __ccmu_module0_clk_t IepDeu0; /*0x0188, IEP DEU0 clock */ volatile __ccmu_module0_clk_t IepDeu1; /*0x018c, IEP DEU1 clock */ volatile __u32 reserved18[4]; /*0x0190, reserved */ volatile __ccmu_module0_clk_t GpuCore; /*0x01A0, GPU Core clock */ volatile __ccmu_module0_clk_t GpuMem; /*0x01A4, GPU Memory clock */ volatile __ccmu_module0_clk_t GpuHyd; /*0x01A8, GPU hyd clock */ volatile __u32 reserved19[21]; /*0x01AC, reserved */ volatile __ccmu_plllock_reg0200_t PllLock; /*0x0200, pll lock time */ volatile __u32 Pll1Lock; /*0x0204, pll1 lock time */ volatile __u32 reserved201[6]; /*0x0208-0x21c, reserved */ volatile __u32 PllxBias[11]; /*0x220-0x248, pllx bias reg */ volatile __u32 reserved202; /*0x24c, reserved */ volatile __u32 Pll1Tun; /*0x250, pll1 tun reg */ volatile __u32 reserved203[3]; /*0x254-0x25c, reserved */ volatile __u32 Pll5Tun; /*0x260, pll5 tun reg */ volatile __u32 reserved204[3]; /*0x264-0x26c, reserved */ volatile __u32 MipiPllTun; /*0x270, mipi pll tun reg */ volatile __u32 reserved205[3]; /*0x274-0x27c, reserved */ volatile __u32 reserved206[16]; /*0x0280-0x2bc, reserved */ volatile __ccmu_mod_rst_reg02c0_t AhbReset0; /*0x02c0, AHB1 module reset register 0 */ volatile __ccmu_mod_rst_reg02c4_t AhbReset1; /*0x02c4, AHB1 module reset register 1 */ volatile __ccmu_mod_rst_reg02c8_t AhbReset2; /*0x02c8, AHB1 module reset register 2 */ volatile __u32 reserved21; /*0x02cc, reserved */ volatile __ccmu_mod_rst_reg02d0_t Apb1Reset; /*0x02d0, APB1 module reset register */ volatile __u32 reserved22; /*0x02d4, reserved */ volatile __ccmu_mod_rst_reg02d8_t Apb2Reset; /*0x02d8, APB2 module reset register */ volatile __u32 reserved23[9]; /*0x02dc, reserved */ volatile __ccmu_clk_out_t ClkOutA; /*0x0300, pll lock time */ volatile __ccmu_clk_out_t ClkOutB; /*0x0304, pll lock time */ volatile __ccmu_clk_out_t ClkOutC; /*0x0308, pll lock time */ } __ccmu_reg_list_t; #endif /* #ifndef __MEM_CCMU_SUN8IW1P1_H__ */