blob: 08d4299a4cb45aa9ea1ff8822a66bcf16f581ea9 [file] [log] [blame]
/*
* arch/arm/mach-omap2/clockdomains81xx.h
*
* TI81XX Clock Domain data.
*
* Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.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 version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS81XX_H
#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS81XX_H
#include "cm.h"
#include "cm81xx.h"
#include "cm-regbits-81xx.h"
/*
* TODO:
* - Add other domains as required
* - Fill up associated powerdomans (especially ALWON powerdomains are NULL at
* the moment
* - Consider dependencies across domains (probably not applicable till now)
*/
#ifdef CONFIG_ARCH_TI81XX
/*
* Common TI81XX
*/
static struct clockdomain alwon_l3_slow_81xx_clkdm = {
.name = "alwon_l3_slow_clkdm",
.pwrdm = { .name = "alwon_pwrdm" },
.cm_inst = TI81XX_CM_ALWON_MOD,
.clkdm_offs = TI81XX_CM_ALWON_L3_SLOW_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X | CHIP_IS_TI814X),
};
static struct clockdomain alwon_ethernet_81xx_clkdm = {
.name = "alwon_ethernet_clkdm",
.pwrdm = { .name = "alwon_pwrdm" },
.cm_inst = TI81XX_CM_ALWON_MOD,
.clkdm_offs = TI81XX_CM_ETHERNET_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X | CHIP_IS_TI814X),
};
static struct clockdomain mmu_81xx_clkdm = {
.name = "mmu_clkdm",
.pwrdm = { .name = "alwon_pwrdm" },
.cm_inst = TI81XX_CM_ALWON_MOD,
.clkdm_offs = TI81XX_CM_MMU_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X | CHIP_IS_TI814X),
};
static struct clockdomain mmu_cfg_81xx_clkdm = {
.name = "mmu_cfg_clkdm",
.pwrdm = { .name = "alwon_pwrdm" },
.cm_inst = TI81XX_CM_ALWON_MOD,
.clkdm_offs = TI81XX_CM_MMUCFG_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X | CHIP_IS_TI814X),
};
/*
* TI814X only
*/
static struct clockdomain gem_814x_clkdm = {
.name = "gem_clkdm",
.pwrdm = { .name = "gem_pwrdm" },
.cm_inst = TI814X_CM_DSP_MOD,
.clkdm_offs = TI814X_CM_DSP_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
static struct clockdomain ivahd_814x_clkdm = {
.name = "ivahd_clkdm",
.pwrdm = { .name = "ivahd_pwrdm" },
.cm_inst = TI814X_CM_HDVICP_MOD,
.clkdm_offs = TI814X_CM_HDVICP_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* ISS is inside ISP */
static struct clockdomain isp_814x_clkdm = {
.name = "isp_clkdm",
.pwrdm = { .name = "isp_pwrdm" },
.cm_inst = TI814X_CM_ALWON2_MOD,
.clkdm_offs = TI814X_CM_ALWON2_MC_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* GFX clock domain */
static struct clockdomain sgx_814x_clkdm = {
.name = "sgx_clkdm",
.pwrdm = { .name = "sgx_pwrdm" },
.cm_inst = TI814X_CM_GFX_MOD,
.clkdm_offs = TI814X_CM_GFX_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* DSS clock domain */
static struct clockdomain hdvpss_814x_clkdm = {
.name = "hdvpss_clkdm",
.pwrdm = { .name = "hdvpss_pwrdm" },
.cm_inst = TI814X_CM_HDVPSS_MOD,
.clkdm_offs = TI814X_CM_HDVPSS_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* L3 med clock domain */
static struct clockdomain alwon2_l3_med_814x_clkdm = {
.name = "alwon2_l3_med_clkdm",
.pwrdm = { .name = "alwon2_pwrdm" },
.cm_inst = TI814X_CM_ALWON2_MOD,
.clkdm_offs = TI814X_CM_ALWON2_L3_MED_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* PCIe clock domain */
static struct clockdomain alwon2_pcie_814x_clkdm = {
.name = "alwon2_pcie_clkdm",
.pwrdm = { .name = "alwon2_pwrdm" },
.cm_inst = TI814X_CM_ALWON2_MOD,
.clkdm_offs = TI814X_CM_ALWON2_PCI_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/* USB clock domain */
static struct clockdomain alwon2_usb_814x_clkdm = {
.name = "alwon2_usb_clkdm",
.pwrdm = { .name = "alwon2_pwrdm" },
.cm_inst = TI814X_CM_ALWON2_MOD,
.clkdm_offs = TI814X_CM_ALWON2_L3_SLOW_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI814X),
};
/*
* TI816X only
*/
static struct clockdomain alwon_mpu_816x_clkdm = {
.name = "alwon_mpu_clkdm",
.pwrdm = { .name = "alwon_pwrdm" },
.cm_inst = TI81XX_CM_ALWON_MOD,
.clkdm_offs = TI81XX_CM_ALWON_MPU_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain active_gem_816x_clkdm = {
.name = "active_gem_clkdm",
.pwrdm = { .name = "active_pwrdm" },
.cm_inst = TI816X_CM_ACTIVE_MOD,
.clkdm_offs = TI816X_CM_ACTIVE_GEM_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain ivahd0_816x_clkdm = {
.name = "ivahd0_clkdm",
.pwrdm = { .name = "ivahd0_pwrdm" },
.cm_inst = TI816X_CM_IVAHD0_MOD,
.clkdm_offs = TI816X_CM_IVAHD0_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain ivahd1_816x_clkdm = {
.name = "ivahd1_clkdm",
.pwrdm = { .name = "ivahd1_pwrdm" },
.cm_inst = TI816X_CM_IVAHD1_MOD,
.clkdm_offs = TI816X_CM_IVAHD1_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain ivahd2_816x_clkdm = {
.name = "ivahd2_clkdm",
.pwrdm = { .name = "ivahd2_pwrdm" },
.cm_inst = TI816X_CM_IVAHD2_MOD,
.clkdm_offs = TI816X_CM_IVAHD2_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain sgx_816x_clkdm = {
.name = "sgx_clkdm",
.pwrdm = { .name = "sgx_pwrdm" },
.cm_inst = TI816X_CM_SGX_MOD,
.clkdm_offs = TI816X_CM_SGX_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain default_l3_med_816x_clkdm = {
.name = "default_l3_med_clkdm",
.pwrdm = { .name = "default_pwrdm" },
.cm_inst = TI816X_CM_DEFAULT_MOD,
.clkdm_offs = TI816X_CM_DEFAULT_L3_MED_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain default_ducati_816x_clkdm = {
.name = "default_ducati_clkdm",
.pwrdm = { .name = "default_pwrdm" },
.cm_inst = TI816X_CM_DEFAULT_MOD,
.clkdm_offs = TI816X_CM_DEFAULT_DUCATI_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain default_pcie_816x_clkdm = {
.name = "default_pcie_clkdm",
.pwrdm = { .name = "default_pwrdm" },
.cm_inst = TI816X_CM_DEFAULT_MOD,
.clkdm_offs = TI816X_CM_DEFAULT_PCI_CLKDM,
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
static struct clockdomain default_usb_816x_clkdm = {
.name = "default_usb_clkdm",
.pwrdm = { .name = "default_pwrdm" },
.cm_inst = TI816X_CM_DEFAULT_MOD,
.clkdm_offs = TI816X_CM_DEFAULT_L3_SLOW_CLKDM, /* FIXME */
.clktrctrl_mask = TI81XX_CLKTRCTRL_MASK,
.flags = CLKDM_CAN_HWSUP_SWSUP,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_TI816X),
};
#endif /* CONFIG_ARCH_TI81XX */
#endif