/* linux/arch/arm/mach-exynos4/include/mach/regs-clock.h
 *
 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * EXYNOS4 - Clock register definitions
 *
 * 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.
*/

#ifndef __ASM_ARCH_REGS_CLOCK_H
#define __ASM_ARCH_REGS_CLOCK_H __FILE__

#include <plat/cpu.h>
#include <mach/map.h>

#define EXYNOS_CLKREG(x)			(S5P_VA_CMU + (x))

#define EXYNOS4_CLKDIV_LEFTBUS			EXYNOS_CLKREG(0x04500)
#define EXYNOS4_CLKDIV_STAT_LEFTBUS		EXYNOS_CLKREG(0x04600)
#define EXYNOS4_CLKGATE_IP_LEFTBUS		EXYNOS_CLKREG(0x04800)

#define EXYNOS4_CLKDIV_RIGHTBUS			EXYNOS_CLKREG(0x08500)
#define EXYNOS4_CLKDIV_STAT_RIGHTBUS		EXYNOS_CLKREG(0x08600)
#define EXYNOS4_CLKGATE_IP_RIGHTBUS		EXYNOS_CLKREG(0x08800)

#define EXYNOS4_EPLL_LOCK			EXYNOS_CLKREG(0x0C010)
#define EXYNOS4_VPLL_LOCK			EXYNOS_CLKREG(0x0C020)

#define EXYNOS4_EPLL_CON0			EXYNOS_CLKREG(0x0C110)
#define EXYNOS4_EPLL_CON1			EXYNOS_CLKREG(0x0C114)
#define EXYNOS4_VPLL_CON0			EXYNOS_CLKREG(0x0C120)
#define EXYNOS4_VPLL_CON1			EXYNOS_CLKREG(0x0C124)

#define EXYNOS4_CLKSRC_TOP0			EXYNOS_CLKREG(0x0C210)
#define EXYNOS4_CLKSRC_TOP1			EXYNOS_CLKREG(0x0C214)
#define EXYNOS4_CLKSRC_CAM			EXYNOS_CLKREG(0x0C220)
#define EXYNOS4_CLKSRC_TV			EXYNOS_CLKREG(0x0C224)
#define EXYNOS4_CLKSRC_MFC			EXYNOS_CLKREG(0x0C228)
#define EXYNOS4_CLKSRC_G3D			EXYNOS_CLKREG(0x0C22C)
#define EXYNOS4_CLKSRC_IMAGE			EXYNOS_CLKREG(0x0C230)
#define EXYNOS4_CLKSRC_LCD0			EXYNOS_CLKREG(0x0C234)
#define EXYNOS4_CLKSRC_MAUDIO			EXYNOS_CLKREG(0x0C23C)
#define EXYNOS4_CLKSRC_FSYS			EXYNOS_CLKREG(0x0C240)
#define EXYNOS4_CLKSRC_PERIL0			EXYNOS_CLKREG(0x0C250)
#define EXYNOS4_CLKSRC_PERIL1			EXYNOS_CLKREG(0x0C254)

#define EXYNOS4_CLKSRC_MASK_TOP			EXYNOS_CLKREG(0x0C310)
#define EXYNOS4_CLKSRC_MASK_CAM			EXYNOS_CLKREG(0x0C320)
#define EXYNOS4_CLKSRC_MASK_TV			EXYNOS_CLKREG(0x0C324)
#define EXYNOS4_CLKSRC_MASK_LCD0		EXYNOS_CLKREG(0x0C334)
#define EXYNOS4_CLKSRC_MASK_MAUDIO		EXYNOS_CLKREG(0x0C33C)
#define EXYNOS4_CLKSRC_MASK_FSYS		EXYNOS_CLKREG(0x0C340)
#define EXYNOS4_CLKSRC_MASK_PERIL0		EXYNOS_CLKREG(0x0C350)
#define EXYNOS4_CLKSRC_MASK_PERIL1		EXYNOS_CLKREG(0x0C354)

#define EXYNOS4_CLKDIV_TOP			EXYNOS_CLKREG(0x0C510)
#define EXYNOS4_CLKDIV_CAM			EXYNOS_CLKREG(0x0C520)
#define EXYNOS4_CLKDIV_TV			EXYNOS_CLKREG(0x0C524)
#define EXYNOS4_CLKDIV_MFC			EXYNOS_CLKREG(0x0C528)
#define EXYNOS4_CLKDIV_G3D			EXYNOS_CLKREG(0x0C52C)
#define EXYNOS4_CLKDIV_IMAGE			EXYNOS_CLKREG(0x0C530)
#define EXYNOS4_CLKDIV_LCD0			EXYNOS_CLKREG(0x0C534)
#define EXYNOS4_CLKDIV_MAUDIO			EXYNOS_CLKREG(0x0C53C)
#define EXYNOS4_CLKDIV_FSYS0			EXYNOS_CLKREG(0x0C540)
#define EXYNOS4_CLKDIV_FSYS1			EXYNOS_CLKREG(0x0C544)
#define EXYNOS4_CLKDIV_FSYS2			EXYNOS_CLKREG(0x0C548)
#define EXYNOS4_CLKDIV_FSYS3			EXYNOS_CLKREG(0x0C54C)
#define EXYNOS4_CLKDIV_PERIL0			EXYNOS_CLKREG(0x0C550)
#define EXYNOS4_CLKDIV_PERIL1			EXYNOS_CLKREG(0x0C554)
#define EXYNOS4_CLKDIV_PERIL2			EXYNOS_CLKREG(0x0C558)
#define EXYNOS4_CLKDIV_PERIL3			EXYNOS_CLKREG(0x0C55C)
#define EXYNOS4_CLKDIV_PERIL4			EXYNOS_CLKREG(0x0C560)
#define EXYNOS4_CLKDIV_PERIL5			EXYNOS_CLKREG(0x0C564)
#define EXYNOS4_CLKDIV2_RATIO			EXYNOS_CLKREG(0x0C580)

#define EXYNOS4_CLKDIV_STAT_TOP			EXYNOS_CLKREG(0x0C610)
#define EXYNOS4_CLKDIV_STAT_MFC			EXYNOS_CLKREG(0x0C628)

#define EXYNOS4_CLKGATE_SCLKCAM			EXYNOS_CLKREG(0x0C820)
#define EXYNOS4_CLKGATE_IP_CAM			EXYNOS_CLKREG(0x0C920)
#define EXYNOS4_CLKGATE_IP_TV			EXYNOS_CLKREG(0x0C924)
#define EXYNOS4_CLKGATE_IP_MFC			EXYNOS_CLKREG(0x0C928)
#define EXYNOS4_CLKGATE_IP_G3D			EXYNOS_CLKREG(0x0C92C)
#define EXYNOS4_CLKGATE_IP_IMAGE		(soc_is_exynos4210() ? \
						EXYNOS_CLKREG(0x0C930) : \
						EXYNOS_CLKREG(0x04930))
#define EXYNOS4210_CLKGATE_IP_IMAGE		EXYNOS_CLKREG(0x0C930)
#define EXYNOS4212_CLKGATE_IP_IMAGE		EXYNOS_CLKREG(0x04930)
#define EXYNOS4_CLKGATE_IP_LCD0			EXYNOS_CLKREG(0x0C934)
#define EXYNOS4_CLKGATE_IP_FSYS			EXYNOS_CLKREG(0x0C940)
#define EXYNOS4_CLKGATE_IP_GPS			EXYNOS_CLKREG(0x0C94C)
#define EXYNOS4_CLKGATE_IP_PERIL		EXYNOS_CLKREG(0x0C950)
#define EXYNOS4_CLKGATE_IP_PERIR		(soc_is_exynos4210() ? \
						EXYNOS_CLKREG(0x0C960) : \
						EXYNOS_CLKREG(0x08960))
#define EXYNOS4210_CLKGATE_IP_PERIR		EXYNOS_CLKREG(0x0C960)
#define EXYNOS4212_CLKGATE_IP_PERIR		EXYNOS_CLKREG(0x08960)
#define EXYNOS4_CLKGATE_BLOCK			EXYNOS_CLKREG(0x0C970)

#define EXYNOS4_CLKSRC_MASK_DMC			EXYNOS_CLKREG(0x10300)
#define EXYNOS4_CLKSRC_DMC			EXYNOS_CLKREG(0x10200)
#define EXYNOS4_CLKDIV_DMC0			EXYNOS_CLKREG(0x10500)
#define EXYNOS4_CLKDIV_DMC1			EXYNOS_CLKREG(0x10504)
#define EXYNOS4_CLKDIV_STAT_DMC0		EXYNOS_CLKREG(0x10600)
#define EXYNOS4_CLKDIV_STAT_DMC1		EXYNOS_CLKREG(0x10604)
#define EXYNOS4_CLKGATE_IP_DMC			EXYNOS_CLKREG(0x10900)

#define EXYNOS4_DMC_PAUSE_CTRL			EXYNOS_CLKREG(0x11094)
#define EXYNOS4_DMC_PAUSE_ENABLE		(1 << 0)

#define EXYNOS4_APLL_LOCK			EXYNOS_CLKREG(0x14000)
#define EXYNOS4_MPLL_LOCK			(soc_is_exynos4210() ? \
						EXYNOS_CLKREG(0x14004) :  \
						EXYNOS_CLKREG(0x10008))
#define EXYNOS4_APLL_CON0			EXYNOS_CLKREG(0x14100)
#define EXYNOS4_APLL_CON1			EXYNOS_CLKREG(0x14104)
#define EXYNOS4_MPLL_CON0			(soc_is_exynos4210() ? \
						EXYNOS_CLKREG(0x14108) : \
						EXYNOS_CLKREG(0x10108))
