/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * OMAP44xx Clock Management register bits
 *
 * Copyright (C) 2009-2012 Texas Instruments, Inc.
 * Copyright (C) 2009-2010 Nokia Corporation
 *
 * Paul Walmsley (paul@pwsan.com)
 * Rajendra Nayak (rnayak@ti.com)
 * Benoit Cousson (b-cousson@ti.com)
 *
 * This file is automatically generated from the OMAP hardware databases.
 * We respectfully ask that any modifications to this file be coordinated
 * with the public linux-omap@vger.kernel.org mailing list and the
 * authors above to ensure that the autogeneration scripts are kept
 * up-to-date with the file contents.
 */

#ifndef __ARCH_ARM_MACH_OMAP2_CM_REGBITS_44XX_H
#define __ARCH_ARM_MACH_OMAP2_CM_REGBITS_44XX_H

#define OMAP4430_ABE_STATDEP_SHIFT				3
#define OMAP4430_AUTO_DPLL_MODE_MASK				(0x7 << 0)
#define OMAP4430_CLKSEL_SHIFT					24
#define OMAP4430_CLKSEL_WIDTH					0x1
#define OMAP4430_CLKSEL_MASK					(1 << 24)
#define OMAP4430_CLKSEL_0_0_SHIFT				0
#define OMAP4430_CLKSEL_0_0_WIDTH				0x1
#define OMAP4430_CLKSEL_0_1_SHIFT				0
#define OMAP4430_CLKSEL_0_1_WIDTH				0x2
#define OMAP4430_CLKSEL_24_25_SHIFT				24
#define OMAP4430_CLKSEL_24_25_WIDTH				0x2
#define OMAP4430_CLKSEL_60M_SHIFT				24
#define OMAP4430_CLKSEL_60M_WIDTH				0x1
#define OMAP4430_CLKSEL_AESS_FCLK_SHIFT				24
#define OMAP4430_CLKSEL_AESS_FCLK_WIDTH				0x1
#define OMAP4430_CLKSEL_CORE_SHIFT				0
#define OMAP4430_CLKSEL_CORE_WIDTH				0x1
#define OMAP4430_CLKSEL_DIV_SHIFT				24
#define OMAP4430_CLKSEL_DIV_WIDTH				0x1
#define OMAP4430_CLKSEL_FCLK_SHIFT				24
#define OMAP4430_CLKSEL_FCLK_WIDTH				0x2
#define OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT			25
#define OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH			0x1
#define OMAP4430_CLKSEL_L3_SHIFT				4
#define OMAP4430_CLKSEL_L3_WIDTH				0x1
#define OMAP4430_CLKSEL_L4_SHIFT				8
#define OMAP4430_CLKSEL_L4_WIDTH				0x1
#define OMAP4430_CLKSEL_OPP_SHIFT				0
#define OMAP4430_CLKSEL_OPP_WIDTH				0x2
#define OMAP4430_CLKSEL_PMD_STM_CLK_SHIFT			27
#define OMAP4430_CLKSEL_PMD_STM_CLK_WIDTH			0x3
#define OMAP4430_CLKSEL_PMD_TRACE_CLK_MASK			(0x7 << 24)
#define OMAP4430_CLKSEL_SGX_FCLK_MASK				(1 << 24)
#define OMAP4430_CLKSEL_SOURCE_MASK				(0x3 << 24)
#define OMAP4430_CLKSEL_SOURCE_24_24_MASK			(1 << 24)
#define OMAP4430_CLKSEL_UTMI_P1_SHIFT				24
#define OMAP4430_CLKSEL_UTMI_P1_WIDTH				0x1
#define OMAP4430_CLKSEL_UTMI_P2_SHIFT				25
#define OMAP4430_CLKSEL_UTMI_P2_WIDTH				0x1
#define OMAP4430_CLKTRCTRL_SHIFT				0
#define OMAP4430_CLKTRCTRL_MASK					(0x3 << 0)
#define OMAP4430_DPLL_BYP_CLKSEL_SHIFT				23
#define OMAP4430_DPLL_BYP_CLKSEL_WIDTH				0x1
#define OMAP4430_DPLL_CLKOUTHIF_DIV_MASK			(0x1f << 0)
#define OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT			8
#define OMAP4430_DPLL_CLKOUTX2_GATE_CTRL_MASK			(1 << 10)
#define OMAP4430_DPLL_CLKOUT_DIV_SHIFT				0
#define OMAP4430_DPLL_CLKOUT_DIV_WIDTH				0x5
#define OMAP4430_DPLL_CLKOUT_DIV_MASK				(0x1f << 0)
#define OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK			(0x7f << 0)
#define OMAP4430_DPLL_CLKOUT_GATE_CTRL_MASK			(1 << 8)
#define OMAP4430_DPLL_DIV_MASK					(0x7f << 0)
#define OMAP4430_DPLL_DIV_0_7_MASK				(0xff << 0)
#define OMAP4430_DPLL_EN_MASK					(0x7 << 0)
#define OMAP4430_DPLL_LPMODE_EN_MASK				(1 << 10)
#define OMAP4430_DPLL_MULT_MASK					(0x7ff << 8)
#define OMAP4430_DPLL_MULT_USB_MASK				(0xfff << 8)
#define OMAP4430_DPLL_REGM4XEN_MASK				(1 << 11)
#define OMAP4430_DPLL_SD_DIV_MASK				(0xff << 24)
#define OMAP4430_DSS_STATDEP_SHIFT				8
#define OMAP4430_DUCATI_STATDEP_SHIFT				0
#define OMAP4430_GFX_STATDEP_SHIFT				10
#define OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK			(0x1f << 0)
#define OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK			(0x1f << 0)
#define OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK			(0x1f << 0)
#define OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK			(0x1f << 0)
#define OMAP4430_IDLEST_SHIFT					16
#define OMAP4430_IDLEST_MASK					(0x3 << 16)
#define OMAP4430_IVAHD_STATDEP_SHIFT				2
#define OMAP4430_L3INIT_STATDEP_SHIFT				7
#define OMAP4430_L3_1_STATDEP_SHIFT				5
#define OMAP4430_L3_2_STATDEP_SHIFT				6
#define OMAP4430_L4CFG_STATDEP_SHIFT				12
#define OMAP4430_L4PER_STATDEP_SHIFT				13
#define OMAP4430_L4SEC_STATDEP_SHIFT				14
#define OMAP4430_L4WKUP_STATDEP_SHIFT				15
#define OMAP4430_MEMIF_STATDEP_SHIFT				4
#define OMAP4430_MODULEMODE_SHIFT				0
#define OMAP4430_MODULEMODE_MASK				(0x3 << 0)
#define OMAP4430_OPTFCLKEN_48MHZ_CLK_SHIFT			9
#define OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT			8
#define OMAP4430_OPTFCLKEN_CLK32K_SHIFT				8
#define OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT			8
#define OMAP4430_OPTFCLKEN_DBCLK_SHIFT				8
#define OMAP4430_OPTFCLKEN_DSSCLK_SHIFT				8
#define OMAP4430_OPTFCLKEN_FCLK_SHIFT				8
#define OMAP4430_OPTFCLKEN_FCLK0_SHIFT				8
#define OMAP4430_OPTFCLKEN_FCLK1_SHIFT				9
#define OMAP4430_OPTFCLKEN_FCLK2_SHIFT				10
#define OMAP4430_OPTFCLKEN_FUNC48MCLK_SHIFT			15
#define OMAP4430_OPTFCLKEN_HSIC480M_P1_CLK_SHIFT		13
#define OMAP4430_OPTFCLKEN_HSIC480M_P2_CLK_SHIFT		14
#define OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT			11
#define OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT			12
#define OMAP4430_OPTFCLKEN_PER24MC_GFCLK_SHIFT			8
#define OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT		9
#define OMAP4430_OPTFCLKEN_PHY_48M_SHIFT			8
#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT			10
#define OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT		11
#define OMAP4430_OPTFCLKEN_SYS_CLK_SHIFT			10
#define OMAP4460_OPTFCLKEN_TS_FCLK_SHIFT			8
#define OMAP4430_OPTFCLKEN_TV_CLK_SHIFT				11
#define OMAP4430_OPTFCLKEN_USB_CH0_CLK_SHIFT			8
#define OMAP4430_OPTFCLKEN_USB_CH1_CLK_SHIFT			9
#define OMAP4430_OPTFCLKEN_USB_CH2_CLK_SHIFT			10
#define OMAP4430_OPTFCLKEN_UTMI_P1_CLK_SHIFT			8
#define OMAP4430_OPTFCLKEN_UTMI_P2_CLK_SHIFT			9
#define OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT			10
#define OMAP4430_OPTFCLKEN_XCLK_SHIFT				8
#define OMAP4430_PAD_CLKS_GATE_SHIFT				8
#define OMAP4430_PMD_STM_MUX_CTRL_SHIFT				20
#define OMAP4430_PMD_STM_MUX_CTRL_WIDTH				0x2
#define OMAP4430_PMD_TRACE_MUX_CTRL_SHIFT			22
#define OMAP4430_PMD_TRACE_MUX_CTRL_WIDTH			0x2
#define OMAP4430_SCALE_FCLK_SHIFT				0
#define OMAP4430_SCALE_FCLK_WIDTH				0x1
#define OMAP4430_SLIMBUS_CLK_GATE_SHIFT				10
#define OMAP4430_ST_DPLL_CLK_MASK				(1 << 0)
#define OMAP4430_SYS_CLKSEL_SHIFT				0
#define OMAP4430_SYS_CLKSEL_WIDTH				0x3
#define OMAP4430_TESLA_STATDEP_SHIFT				1
#endif
