/*
 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
 * Author: Rahul Sharma <rahul.sharma@samsung.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Common Clock Framework support for Exynos5260 SoC.
 */

#ifndef __CLK_EXYNOS5260_H
#define __CLK_EXYNOS5260_H

/*
*Registers for CMU_AUD
*/
#define MUX_SEL_AUD				0x0200
#define MUX_ENABLE_AUD				0x0300
#define MUX_STAT_AUD				0x0400
#define MUX_IGNORE_AUD				0x0500
#define DIV_AUD0				0x0600
#define DIV_AUD1				0x0604
#define DIV_STAT_AUD0				0x0700
#define DIV_STAT_AUD1				0x0704
#define EN_ACLK_AUD				0x0800
#define EN_PCLK_AUD				0x0900
#define EN_SCLK_AUD				0x0a00
#define EN_IP_AUD				0x0b00

/*
*Registers for CMU_DISP
*/
#define MUX_SEL_DISP0				0x0200
#define MUX_SEL_DISP1				0x0204
#define MUX_SEL_DISP2				0x0208
#define MUX_SEL_DISP3				0x020C
#define MUX_SEL_DISP4				0x0210
#define MUX_ENABLE_DISP0			0x0300
#define MUX_ENABLE_DISP1			0x0304
#define MUX_ENABLE_DISP2			0x0308
#define MUX_ENABLE_DISP3			0x030c
#define MUX_ENABLE_DISP4			0x0310
#define MUX_STAT_DISP0				0x0400
#define MUX_STAT_DISP1				0x0404
#define MUX_STAT_DISP2				0x0408
#define MUX_STAT_DISP3				0x040c
#define MUX_STAT_DISP4				0x0410
#define MUX_IGNORE_DISP0			0x0500
#define MUX_IGNORE_DISP1			0x0504
#define MUX_IGNORE_DISP2			0x0508
#define MUX_IGNORE_DISP3			0x050c
#define MUX_IGNORE_DISP4			0x0510
#define DIV_DISP				0x0600
#define DIV_STAT_DISP				0x0700
#define EN_ACLK_DISP				0x0800
#define EN_PCLK_DISP				0x0900
#define EN_SCLK_DISP0				0x0a00
#define EN_SCLK_DISP1				0x0a04
#define EN_IP_DISP				0x0b00
#define EN_IP_DISP_BUS				0x0b04


/*
*Registers for CMU_EGL
*/
#define EGL_PLL_LOCK				0x0000
#define EGL_DPLL_LOCK				0x0004
#define EGL_PLL_CON0				0x0100
#define EGL_PLL_CON1				0x0104
#define EGL_PLL_FREQ_DET			0x010c
#define EGL_DPLL_CON0				0x0110
#define EGL_DPLL_CON1				0x0114
#define EGL_DPLL_FREQ_DET			0x011c
#define MUX_SEL_EGL				0x0200
#define MUX_ENABLE_EGL				0x0300
#define MUX_STAT_EGL				0x0400
#define DIV_EGL					0x0600
#define DIV_EGL_PLL_FDET			0x0604
#define DIV_STAT_EGL				0x0700
#define DIV_STAT_EGL_PLL_FDET			0x0704
#define EN_ACLK_EGL				0x0800
#define EN_PCLK_EGL				0x0900
#define EN_SCLK_EGL				0x0a00
#define EN_IP_EGL				0x0b00
#define CLKOUT_CMU_EGL				0x0c00
#define CLKOUT_CMU_EGL_DIV_STAT			0x0c04
#define ARMCLK_STOPCTRL				0x1000
#define EAGLE_EMA_CTRL				0x1008
#define EAGLE_EMA_STATUS			0x100c
#define PWR_CTRL				0x1020
#define PWR_CTRL2				0x1024
#define CLKSTOP_CTRL				0x1028
#define INTR_SPREAD_EN				0x1080
#define INTR_SPREAD_USE_STANDBYWFI		0x1084
#define INTR_SPREAD_BLOCKING_DURATION		0x1088
#define CMU_EGL_SPARE0				0x2000
#define CMU_EGL_SPARE1				0x2004
#define CMU_EGL_SPARE2				0x2008
#define CMU_EGL_SPARE3				0x200c
#define CMU_EGL_SPARE4				0x2010

/*
*Registers for CMU_FSYS
*/

#define MUX_SEL_FSYS0				0x0200
#define MUX_SEL_FSYS1				0x0204
#define MUX_ENABLE_FSYS0			0x0300
#define MUX_ENABLE_FSYS1			0x0304
#define MUX_STAT_FSYS0				0x0400
#define MUX_STAT_FSYS1				0x0404
#define MUX_IGNORE_FSYS0			0x0500
#define MUX_IGNORE_FSYS1			0x0504
#define EN_ACLK_FSYS				0x0800
#define EN_ACLK_FSYS_SECURE_RTIC		0x0804
#define EN_ACLK_FSYS_SECURE_SMMU_RTIC		0x0808
#define EN_PCLK_FSYS				0x0900
#define EN_SCLK_FSYS				0x0a00
#define EN_IP_FSYS				0x0b00
#define EN_IP_FSYS_SECURE_RTIC			0x0b04
#define EN_IP_FSYS_SECURE_SMMU_RTIC		0x0b08

/*
*Registers for CMU_G2D
*/

#define MUX_SEL_G2D				0x0200
#define MUX_ENABLE_G2D				0x0300
#define MUX_STAT_G2D				0x0400
#define DIV_G2D					0x0600
#define DIV_STAT_G2D				0x0700
#define EN_ACLK_G2D				0x0800
#define EN_ACLK_G2D_SECURE_SSS			0x0804
#define EN_ACLK_G2D_SECURE_SLIM_SSS		0x0808
#define EN_ACLK_G2D_SECURE_SMMU_SLIM_SSS	0x080c
#define EN_ACLK_G2D_SECURE_SMMU_SSS		0x0810
#define EN_ACLK_G2D_SECURE_SMMU_MDMA		0x0814
#define EN_ACLK_G2D_SECURE_SMMU_G2D		0x0818
#define EN_PCLK_G2D				0x0900
#define EN_PCLK_G2D_SECURE_SMMU_SLIM_SSS	0x0904
#define EN_PCLK_G2D_SECURE_SMMU_SSS		0x0908
#define EN_PCLK_G2D_SECURE_SMMU_MDMA		0x090c
#define EN_PCLK_G2D_SECURE_SMMU_G2D		0x0910
#define EN_IP_G2D				0x0b00
#define EN_IP_G2D_SECURE_SSS			0x0b04
#define EN_IP_G2D_SECURE_SLIM_SSS		0x0b08
#define EN_IP_G2D_SECURE_SMMU_SLIM_SSS		0x0b0c
#define EN_IP_G2D_SECURE_SMMU_SSS		0x0b10
#define EN_IP_G2D_SECURE_SMMU_MDMA		0x0b14
#define EN_IP_G2D_SECURE_SMMU_G2D		0x0b18

/*
*Registers for CMU_G3D
*/

#define G3D_PLL_LOCK				0x0000
#define G3D_PLL_CON0				0x0100
#define G3D_PLL_CON1				0x0104
#define G3D_PLL_FDET				0x010c
#define MUX_SEL_G3D				0x0200
#define MUX_EN_G3D				0x0300
#define MUX_STAT_G3D				0x0400
#define MUX_IGNORE_G3D				0x0500
#define DIV_G3D					0x0600
#define DIV_G3D_PLL_FDET			0x0604
#define DIV_STAT_G3D				0x0700
#define DIV_STAT_G3D_PLL_FDET			0x0704
#define EN_ACLK_G3D				0x0800
#define EN_PCLK_G3D				0x0900
#define EN_SCLK_G3D				0x0a00
#define EN_IP_G3D				0x0b00
#define CLKOUT_CMU_G3D				0x0c00
#define CLKOUT_CMU_G3D_DIV_STAT			0x0c04
#define G3DCLK_STOPCTRL				0x1000
#define G3D_EMA_CTRL				0x1008
#define G3D_EMA_STATUS				0x100c

/*
*Registers for CMU_GSCL
*/

#define MUX_SEL_GSCL				0x0200
#define MUX_EN_GSCL				0x0300
#define MUX_STAT_GSCL				0x0400
#define MUX_IGNORE_GSCL				0x0500
#define DIV_GSCL				0x0600
#define DIV_STAT_GSCL				0x0700
#define EN_ACLK_GSCL				0x0800
#define EN_ACLK_GSCL_FIMC			0x0804
#define EN_ACLK_GSCL_SECURE_SMMU_GSCL0		0x0808
#define EN_ACLK_GSCL_SECURE_SMMU_GSCL1		0x080c
#define EN_ACLK_GSCL_SECURE_SMMU_MSCL0		0x0810
#define EN_ACLK_GSCL_SECURE_SMMU_MSCL1		0x0814
#define EN_PCLK_GSCL				0x0900
#define EN_PCLK_GSCL_FIMC			0x0904
#define EN_PCLK_GSCL_SECURE_SMMU_GSCL0		0x0908
#define EN_PCLK_GSCL_SECURE_SMMU_GSCL1		0x090c
#define EN_PCLK_GSCL_SECURE_SMMU_MSCL0		0x0910
#define EN_PCLK_GSCL_SECURE_SMMU_MSCL1		0x0914
#define EN_SCLK_GSCL				0x0a00
#define EN_SCLK_GSCL_FIMC			0x0a04
#define EN_IP_GSCL				0x0b00
#define EN_IP_GSCL_FIMC				0x0b04
#define EN_IP_GSCL_SECURE_SMMU_GSCL0		0x0b08
#define EN_IP_GSCL_SECURE_SMMU_GSCL1		0x0b0c
#define EN_IP_GSCL_SECURE_SMMU_MSCL0		0x0b10
#define EN_IP_GSCL_SECURE_SMMU_MSCL1		0x0b14

/*
*Registers for CMU_ISP
*/
#define MUX_SEL_ISP0				0x0200
#define MUX_SEL_ISP1				0x0204
#define MUX_ENABLE_ISP0				0x0300
#define MUX_ENABLE_ISP1				0x0304
#define MUX_STAT_ISP0				0x0400
#define MUX_STAT_ISP1				0x0404
#define MUX_IGNORE_ISP0				0x0500
#define MUX_IGNORE_ISP1				0x0504
#define DIV_ISP					0x0600
#define DIV_STAT_ISP				0x0700
#define EN_ACLK_ISP0				0x0800
#define EN_ACLK_ISP1				0x0804
#define EN_PCLK_ISP0				0x0900
#define EN_PCLK_ISP1				0x0904
#define EN_SCLK_ISP				0x0a00
#define EN_IP_ISP0				0x0b00
#define EN_IP_ISP1				0x0b04

/*
*Registers for CMU_KFC
*/
#define KFC_PLL_LOCK				0x0000
#define KFC_PLL_CON0				0x0100
#define KFC_PLL_CON1				0x0104
#define KFC_PLL_FDET				0x010c
#define MUX_SEL_KFC0				0x0200
#define MUX_SEL_KFC2				0x0208
#define MUX_ENABLE_KFC0				0x0300
#define MUX_ENABLE_KFC2				0x0308
#define MUX_STAT_KFC0				0x0400
#define MUX_STAT_KFC2				0x0408
#define DIV_KFC					0x0600
#define DIV_KFC_PLL_FDET			0x0604
#define DIV_STAT_KFC				0x0700
#define DIV_STAT_KFC_PLL_FDET			0x0704
#define EN_ACLK_KFC				0x0800
#define EN_PCLK_KFC				0x0900
#define EN_SCLK_KFC				0x0a00
#define EN_IP_KFC				0x0b00
#define CLKOUT_CMU_KFC				0x0c00
#define CLKOUT_CMU_KFC_DIV_STAT			0x0c04
#define ARMCLK_STOPCTRL_KFC			0x1000
#define ARM_EMA_CTRL				0x1008
#define ARM_EMA_STATUS				0x100c
#define PWR_CTRL_KFC				0x1020
#define PWR_CTRL2_KFC				0x1024
#define CLKSTOP_CTRL_KFC			0x1028
#define INTR_SPREAD_ENABLE_KFC			0x1080
#define INTR_SPREAD_USE_STANDBYWFI_KFC		0x1084
#define INTR_SPREAD_BLOCKING_DURATION_KFC	0x1088
#define CMU_KFC_SPARE0				0x2000
#define CMU_KFC_SPARE1				0x2004
#define CMU_KFC_SPARE2				0x2008
#define CMU_KFC_SPARE3				0x200c
#define CMU_KFC_SPARE4				0x2010

/*
*Registers for CMU_MFC
*/
#define MUX_SEL_MFC				0x0200
#define MUX_ENABLE_MFC				0x0300
#define MUX_STAT_MFC				0x0400
#define DIV_MFC					0x0600
#define DIV_STAT_MFC				0x0700
#define EN_ACLK_MFC				0x0800
#define EN_ACLK_SECURE_SMMU2_MFC		0x0804
#define EN_PCLK_MFC				0x0900
#define EN_PCLK_SECURE_SMMU2_MFC		0x0904
#define EN_IP_MFC				0x0b00
#define EN_IP_MFC_SECURE_SMMU2_MFC		0x0b04

/*
*Registers for CMU_MIF
*/
#define MEM_PLL_LOCK				0x0000
#define BUS_PLL_LOCK				0x0004
#define MEDIA_PLL_LOCK				0x0008
#define MEM_PLL_CON0				0x0100
#define MEM_PLL_CON1				0x0104
#define MEM_PLL_FDET				0x010c
#define BUS_PLL_CON0				0x0110
#define BUS_PLL_CON1				0x0114
#define BUS_PLL_FDET				0x011c
#define MEDIA_PLL_CON0				0x0120
#define MEDIA_PLL_CON1				0x0124
#define MEDIA_PLL_FDET				0x012c
#define MUX_SEL_MIF				0x0200
#define MUX_ENABLE_MIF				0x0300
#define MUX_STAT_MIF				0x0400
#define MUX_IGNORE_MIF				0x0500
#define DIV_MIF					0x0600
#define DIV_MIF_PLL_FDET			0x0604
#define DIV_STAT_MIF				0x0700
#define DIV_STAT_MIF_PLL_FDET			0x0704
#define EN_ACLK_MIF				0x0800
#define EN_ACLK_MIF_SECURE_DREX1_TZ		0x0804
#define EN_ACLK_MIF_SECURE_DREX0_TZ		0x0808
#define EN_ACLK_MIF_SECURE_INTMEM		0x080c
#define EN_PCLK_MIF				0x0900
#define EN_PCLK_MIF_SECURE_MONOCNT		0x0904
#define EN_PCLK_MIF_SECURE_RTC_APBIF		0x0908
#define EN_PCLK_MIF_SECURE_DREX1_TZ		0x090c
#define EN_PCLK_MIF_SECURE_DREX0_TZ		0x0910
#define EN_SCLK_MIF				0x0a00
#define EN_IP_MIF				0x0b00
#define EN_IP_MIF_SECURE_MONOCNT		0x0b04
#define EN_IP_MIF_SECURE_RTC_APBIF		0x0b08
#define EN_IP_MIF_SECURE_DREX1_TZ		0x0b0c
#define EN_IP_MIF_SECURE_DREX0_TZ		0x0b10
#define EN_IP_MIF_SECURE_INTEMEM		0x0b14
#define CLKOUT_CMU_MIF_DIV_STAT			0x0c04
#define DREX_FREQ_CTRL				0x1000
#define PAUSE					0x1004
#define DDRPHY_LOCK_CTRL			0x1008
#define CLKOUT_CMU_MIF				0xcb00

/*
*Registers for CMU_PERI
*/
#define MUX_SEL_PERI				0x0200
#define MUX_SEL_PERI1				0x0204
#define MUX_ENABLE_PERI				0x0300
#define MUX_ENABLE_PERI1			0x0304
#define MUX_STAT_PERI				0x0400
#define MUX_STAT_PERI1				0x0404
#define MUX_IGNORE_PERI				0x0500
#define MUX_IGNORE_PERI1			0x0504
#define DIV_PERI				0x0600
#define DIV_STAT_PERI				0x0700
#define EN_PCLK_PERI0				0x0800
#define EN_PCLK_PERI1				0x0804
#define EN_PCLK_PERI2				0x0808
#define EN_PCLK_PERI3				0x080c
#define EN_PCLK_PERI_SECURE_CHIPID		0x0810
#define EN_PCLK_PERI_SECURE_PROVKEY0		0x0814
#define EN_PCLK_PERI_SECURE_PROVKEY1		0x0818
#define EN_PCLK_PERI_SECURE_SECKEY		0x081c
#define EN_PCLK_PERI_SECURE_ANTIRBKCNT		0x0820
#define EN_PCLK_PERI_SECURE_TOP_RTC		0x0824
#define EN_PCLK_PERI_SECURE_TZPC		0x0828
#define EN_SCLK_PERI				0x0a00
#define EN_SCLK_PERI_SECURE_TOP_RTC		0x0a04
#define EN_IP_PERI0				0x0b00
#define EN_IP_PERI1				0x0b04
#define EN_IP_PERI2				0x0b08
#define EN_IP_PERI_SECURE_CHIPID		0x0b0c
#define EN_IP_PERI_SECURE_PROVKEY0		0x0b10
#define EN_IP_PERI_SECURE_PROVKEY1		0x0b14
#define EN_IP_PERI_SECURE_SECKEY		0x0b18
#define EN_IP_PERI_SECURE_ANTIRBKCNT		0x0b1c
#define EN_IP_PERI_SECURE_TOP_RTC		0x0b20
#define EN_IP_PERI_SECURE_TZPC			0x0b24

/*
*Registers for CMU_TOP
*/
#define DISP_PLL_LOCK				0x0000
#define AUD_PLL_LOCK				0x0004
#define DISP_PLL_CON0				0x0100
#define DISP_PLL_CON1				0x0104
#define DISP_PLL_FDET				0x0108
#define AUD_PLL_CON0				0x0110
#define AUD_PLL_CON1				0x0114
#define AUD_PLL_CON2				0x0118
#define AUD_PLL_FDET				0x011c
#define MUX_SEL_TOP_PLL0			0x0200
#define MUX_SEL_TOP_MFC				0x0204
#define MUX_SEL_TOP_G2D				0x0208
#define MUX_SEL_TOP_GSCL			0x020c
#define MUX_SEL_TOP_ISP10			0x0214
#define MUX_SEL_TOP_ISP11			0x0218
#define MUX_SEL_TOP_DISP0			0x021c
#define MUX_SEL_TOP_DISP1			0x0220
#define MUX_SEL_TOP_BUS				0x0224
#define MUX_SEL_TOP_PERI0			0x0228
#define MUX_SEL_TOP_PERI1			0x022c
#define MUX_SEL_TOP_FSYS			0x0230
#define MUX_ENABLE_TOP_PLL0			0x0300
#define MUX_ENABLE_TOP_MFC			0x0304
#define MUX_ENABLE_TOP_G2D			0x0308
#define MUX_ENABLE_TOP_GSCL			0x030c
#define MUX_ENABLE_TOP_ISP10			0x0314
#define MUX_ENABLE_TOP_ISP11			0x0318
#define MUX_ENABLE_TOP_DISP0			0x031c
#define MUX_ENABLE_TOP_DISP1			0x0320
#define MUX_ENABLE_TOP_BUS			0x0324
#define MUX_ENABLE_TOP_PERI0			0x0328
#define MUX_ENABLE_TOP_PERI1			0x032c
#define MUX_ENABLE_TOP_FSYS			0x0330
#define MUX_STAT_TOP_PLL0			0x0400
#define MUX_STAT_TOP_MFC			0x0404
#define MUX_STAT_TOP_G2D			0x0408
#define MUX_STAT_TOP_GSCL			0x040c
#define MUX_STAT_TOP_ISP10			0x0414
#define MUX_STAT_TOP_ISP11			0x0418
#define MUX_STAT_TOP_DISP0			0x041c
#define MUX_STAT_TOP_DISP1			0x0420
#define MUX_STAT_TOP_BUS			0x0424
#define MUX_STAT_TOP_PERI0			0x0428
#define MUX_STAT_TOP_PERI1			0x042c
#define MUX_STAT_TOP_FSYS			0x0430
#define MUX_IGNORE_TOP_PLL0			0x0500
#define MUX_IGNORE_TOP_MFC			0x0504
#define MUX_IGNORE_TOP_G2D			0x0508
#define MUX_IGNORE_TOP_GSCL			0x050c
#define MUX_IGNORE_TOP_ISP10			0x0514
#define MUX_IGNORE_TOP_ISP11			0x0518
#define MUX_IGNORE_TOP_DISP0			0x051c
#define MUX_IGNORE_TOP_DISP1			0x0520
#define MUX_IGNORE_TOP_BUS			0x0524
#define MUX_IGNORE_TOP_PERI0			0x0528
#define MUX_IGNORE_TOP_PERI1			0x052c
#define MUX_IGNORE_TOP_FSYS			0x0530
#define DIV_TOP_G2D_MFC				0x0600
#define DIV_TOP_GSCL_ISP0			0x0604
#define DIV_TOP_ISP10				0x0608
#define DIV_TOP_ISP11				0x060c
#define DIV_TOP_DISP				0x0610
#define DIV_TOP_BUS				0x0614
#define DIV_TOP_PERI0				0x0618
#define DIV_TOP_PERI1				0x061c
#define DIV_TOP_PERI2				0x0620
#define DIV_TOP_FSYS0				0x0624
#define DIV_TOP_FSYS1				0x0628
#define DIV_TOP_HPM				0x062c
#define DIV_TOP_PLL_FDET			0x0630
#define DIV_STAT_TOP_G2D_MFC			0x0700
#define DIV_STAT_TOP_GSCL_ISP0			0x0704
#define DIV_STAT_TOP_ISP10			0x0708
#define DIV_STAT_TOP_ISP11			0x070c
#define DIV_STAT_TOP_DISP			0x0710
#define DIV_STAT_TOP_BUS			0x0714
#define DIV_STAT_TOP_PERI0			0x0718
#define DIV_STAT_TOP_PERI1			0x071c
#define DIV_STAT_TOP_PERI2			0x0720
#define DIV_STAT_TOP_FSYS0			0x0724
#define DIV_STAT_TOP_FSYS1			0x0728
#define DIV_STAT_TOP_HPM			0x072c
#define DIV_STAT_TOP_PLL_FDET			0x0730
#define EN_ACLK_TOP				0x0800
#define EN_SCLK_TOP				0x0a00
#define EN_IP_TOP				0x0b00
#define CLKOUT_CMU_TOP				0x0c00
#define CLKOUT_CMU_TOP_DIV_STAT			0x0c04

#endif /*__CLK_EXYNOS5260_H */