cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

clockdomains81xx_data.c (6295B)


      1/*
      2 * TI81XX Clock Domain data.
      3 *
      4 * Copyright (C) 2010 Texas Instruments, Inc. - https://www.ti.com/
      5 * Copyright (C) 2013 SKTB SKiT, http://www.skitlab.ru/
      6 *
      7 * This program is free software; you can redistribute it and/or
      8 * modify it under the terms of the GNU General Public License as
      9 * published by the Free Software Foundation version 2.
     10 *
     11 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
     12 * kind, whether express or implied; without even the implied warranty
     13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 * GNU General Public License for more details.
     15 */
     16
     17#ifndef __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_81XX_H
     18#define __ARCH_ARM_MACH_OMAP2_CLOCKDOMAINS_81XX_H
     19
     20#include <linux/kernel.h>
     21#include <linux/io.h>
     22
     23#include "clockdomain.h"
     24#include "cm81xx.h"
     25
     26/*
     27 * Note that 814x seems to have HWSUP_SWSUP for many clockdomains
     28 * while 816x does not. According to the TRM, 816x only has HWSUP
     29 * for ALWON_L3_FAST. Also note that the TI tree clockdomains81xx.h
     30 * seems to have the related ifdef the wrong way around claiming
     31 * 816x supports HWSUP while 814x does not. For now, we only set
     32 * HWSUP for ALWON_L3_FAST as that seems to be supported for both
     33 * dm814x and dm816x.
     34 */
     35
     36/* Common for 81xx */
     37
     38static struct clockdomain alwon_l3_slow_81xx_clkdm = {
     39	.name		= "alwon_l3s_clkdm",
     40	.pwrdm		= { .name = "alwon_pwrdm" },
     41	.cm_inst	= TI81XX_CM_ALWON_MOD,
     42	.clkdm_offs	= TI81XX_CM_ALWON_L3_SLOW_CLKDM,
     43	.flags		= CLKDM_CAN_SWSUP,
     44};
     45
     46static struct clockdomain alwon_l3_med_81xx_clkdm = {
     47	.name		= "alwon_l3_med_clkdm",
     48	.pwrdm		= { .name = "alwon_pwrdm" },
     49	.cm_inst	= TI81XX_CM_ALWON_MOD,
     50	.clkdm_offs	= TI81XX_CM_ALWON_L3_MED_CLKDM,
     51	.flags		= CLKDM_CAN_SWSUP,
     52};
     53
     54static struct clockdomain alwon_l3_fast_81xx_clkdm = {
     55	.name		= "alwon_l3_fast_clkdm",
     56	.pwrdm		= { .name = "alwon_pwrdm" },
     57	.cm_inst	= TI81XX_CM_ALWON_MOD,
     58	.clkdm_offs	= TI81XX_CM_ALWON_L3_FAST_CLKDM,
     59	.flags		= CLKDM_CAN_HWSUP_SWSUP,
     60};
     61
     62static struct clockdomain alwon_ethernet_81xx_clkdm = {
     63	.name		= "alwon_ethernet_clkdm",
     64	.pwrdm		= { .name = "alwon_pwrdm" },
     65	.cm_inst	= TI81XX_CM_ALWON_MOD,
     66	.clkdm_offs	= TI81XX_CM_ETHERNET_CLKDM,
     67	.flags		= CLKDM_CAN_SWSUP,
     68};
     69
     70static struct clockdomain mmu_81xx_clkdm = {
     71	.name		= "mmu_clkdm",
     72	.pwrdm		= { .name = "alwon_pwrdm" },
     73	.cm_inst	= TI81XX_CM_ALWON_MOD,
     74	.clkdm_offs	= TI81XX_CM_MMU_CLKDM,
     75	.flags		= CLKDM_CAN_SWSUP,
     76};
     77
     78static struct clockdomain mmu_cfg_81xx_clkdm = {
     79	.name		= "mmu_cfg_clkdm",
     80	.pwrdm		= { .name = "alwon_pwrdm" },
     81	.cm_inst	= TI81XX_CM_ALWON_MOD,
     82	.clkdm_offs	= TI81XX_CM_MMUCFG_CLKDM,
     83	.flags		= CLKDM_CAN_SWSUP,
     84};
     85
     86static struct clockdomain default_l3_slow_81xx_clkdm = {
     87	.name		= "default_l3_slow_clkdm",
     88	.pwrdm		= { .name = "default_pwrdm" },
     89	.cm_inst	= TI81XX_CM_DEFAULT_MOD,
     90	.clkdm_offs	= TI816X_CM_DEFAULT_L3_SLOW_CLKDM,
     91	.flags		= CLKDM_CAN_SWSUP,
     92};
     93
     94static struct clockdomain default_sata_81xx_clkdm = {
     95	.name		= "default_clkdm",
     96	.pwrdm		= { .name = "default_pwrdm" },
     97	.cm_inst	= TI81XX_CM_DEFAULT_MOD,
     98	.clkdm_offs	= TI816X_CM_DEFAULT_SATA_CLKDM,
     99	.flags		= CLKDM_CAN_SWSUP,
    100};
    101
    102/* 816x only */
    103
    104static struct clockdomain alwon_mpu_816x_clkdm = {
    105	.name		= "alwon_mpu_clkdm",
    106	.pwrdm		= { .name = "alwon_pwrdm" },
    107	.cm_inst	= TI81XX_CM_ALWON_MOD,
    108	.clkdm_offs	= TI81XX_CM_ALWON_MPU_CLKDM,
    109	.flags		= CLKDM_CAN_SWSUP,
    110};
    111
    112static struct clockdomain active_gem_816x_clkdm = {
    113	.name		= "active_gem_clkdm",
    114	.pwrdm		= { .name = "active_pwrdm" },
    115	.cm_inst	= TI81XX_CM_ACTIVE_MOD,
    116	.clkdm_offs	= TI816X_CM_ACTIVE_GEM_CLKDM,
    117	.flags		= CLKDM_CAN_SWSUP,
    118};
    119
    120static struct clockdomain ivahd0_816x_clkdm = {
    121	.name		= "ivahd0_clkdm",
    122	.pwrdm		= { .name = "ivahd0_pwrdm" },
    123	.cm_inst	= TI816X_CM_IVAHD0_MOD,
    124	.clkdm_offs	= TI816X_CM_IVAHD0_CLKDM,
    125	.flags		= CLKDM_CAN_SWSUP,
    126};
    127
    128static struct clockdomain ivahd1_816x_clkdm = {
    129	.name		= "ivahd1_clkdm",
    130	.pwrdm		= { .name = "ivahd1_pwrdm" },
    131	.cm_inst	= TI816X_CM_IVAHD1_MOD,
    132	.clkdm_offs	= TI816X_CM_IVAHD1_CLKDM,
    133	.flags		= CLKDM_CAN_SWSUP,
    134};
    135
    136static struct clockdomain ivahd2_816x_clkdm = {
    137	.name		= "ivahd2_clkdm",
    138	.pwrdm		= { .name = "ivahd2_pwrdm" },
    139	.cm_inst	= TI816X_CM_IVAHD2_MOD,
    140	.clkdm_offs	= TI816X_CM_IVAHD2_CLKDM,
    141	.flags		= CLKDM_CAN_SWSUP,
    142};
    143
    144static struct clockdomain sgx_816x_clkdm = {
    145	.name		= "sgx_clkdm",
    146	.pwrdm		= { .name = "sgx_pwrdm" },
    147	.cm_inst	= TI81XX_CM_SGX_MOD,
    148	.clkdm_offs	= TI816X_CM_SGX_CLKDM,
    149	.flags		= CLKDM_CAN_SWSUP,
    150};
    151
    152static struct clockdomain default_l3_med_816x_clkdm = {
    153	.name		= "default_l3_med_clkdm",
    154	.pwrdm		= { .name = "default_pwrdm" },
    155	.cm_inst	= TI81XX_CM_DEFAULT_MOD,
    156	.clkdm_offs	= TI816X_CM_DEFAULT_L3_MED_CLKDM,
    157	.flags		= CLKDM_CAN_SWSUP,
    158};
    159
    160static struct clockdomain default_ducati_816x_clkdm = {
    161	.name		= "default_ducati_clkdm",
    162	.pwrdm		= { .name = "default_pwrdm" },
    163	.cm_inst	= TI81XX_CM_DEFAULT_MOD,
    164	.clkdm_offs	= TI816X_CM_DEFAULT_DUCATI_CLKDM,
    165	.flags		= CLKDM_CAN_SWSUP,
    166};
    167
    168static struct clockdomain default_pci_816x_clkdm = {
    169	.name		= "default_pci_clkdm",
    170	.pwrdm		= { .name = "default_pwrdm" },
    171	.cm_inst	= TI81XX_CM_DEFAULT_MOD,
    172	.clkdm_offs	= TI816X_CM_DEFAULT_PCI_CLKDM,
    173	.flags		= CLKDM_CAN_SWSUP,
    174};
    175
    176static struct clockdomain *clockdomains_ti814x[] __initdata = {
    177	&alwon_l3_slow_81xx_clkdm,
    178	&alwon_l3_med_81xx_clkdm,
    179	&alwon_l3_fast_81xx_clkdm,
    180	&alwon_ethernet_81xx_clkdm,
    181	&mmu_81xx_clkdm,
    182	&mmu_cfg_81xx_clkdm,
    183	&default_l3_slow_81xx_clkdm,
    184	&default_sata_81xx_clkdm,
    185	NULL,
    186};
    187
    188void __init ti814x_clockdomains_init(void)
    189{
    190	clkdm_register_platform_funcs(&am33xx_clkdm_operations);
    191	clkdm_register_clkdms(clockdomains_ti814x);
    192	clkdm_complete_init();
    193}
    194
    195static struct clockdomain *clockdomains_ti816x[] __initdata = {
    196	&alwon_mpu_816x_clkdm,
    197	&alwon_l3_slow_81xx_clkdm,
    198	&alwon_l3_med_81xx_clkdm,
    199	&alwon_l3_fast_81xx_clkdm,
    200	&alwon_ethernet_81xx_clkdm,
    201	&mmu_81xx_clkdm,
    202	&mmu_cfg_81xx_clkdm,
    203	&active_gem_816x_clkdm,
    204	&ivahd0_816x_clkdm,
    205	&ivahd1_816x_clkdm,
    206	&ivahd2_816x_clkdm,
    207	&sgx_816x_clkdm,
    208	&default_l3_med_816x_clkdm,
    209	&default_ducati_816x_clkdm,
    210	&default_pci_816x_clkdm,
    211	&default_l3_slow_81xx_clkdm,
    212	&default_sata_81xx_clkdm,
    213	NULL,
    214};
    215
    216void __init ti816x_clockdomains_init(void)
    217{
    218	clkdm_register_platform_funcs(&am33xx_clkdm_operations);
    219	clkdm_register_clkdms(clockdomains_ti816x);
    220	clkdm_complete_init();
    221}
    222#endif