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

powerdomains2xxx_data.c (2855B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * OMAP2XXX powerdomain definitions
      4 *
      5 * Copyright (C) 2007-2008, 2011 Texas Instruments, Inc.
      6 * Copyright (C) 2007-2011 Nokia Corporation
      7 *
      8 * Paul Walmsley, Jouni Högander
      9 */
     10
     11#include <linux/kernel.h>
     12#include <linux/init.h>
     13
     14#include "soc.h"
     15#include "powerdomain.h"
     16#include "powerdomains2xxx_3xxx_data.h"
     17
     18#include "prcm-common.h"
     19#include "prm2xxx_3xxx.h"
     20#include "prm-regbits-24xx.h"
     21
     22/* 24XX powerdomains and dependencies */
     23
     24/* Powerdomains */
     25
     26static struct powerdomain dsp_pwrdm = {
     27	.name		  = "dsp_pwrdm",
     28	.prcm_offs	  = OMAP24XX_DSP_MOD,
     29	.pwrsts		  = PWRSTS_OFF_RET_ON,
     30	.pwrsts_logic_ret = PWRSTS_RET,
     31	.banks		  = 1,
     32	.pwrsts_mem_ret	  = {
     33		[0] = PWRSTS_RET,
     34	},
     35	.pwrsts_mem_on	  = {
     36		[0] = PWRSTS_ON,
     37	},
     38	.voltdm		  = { .name = "core" },
     39};
     40
     41static struct powerdomain mpu_24xx_pwrdm = {
     42	.name		  = "mpu_pwrdm",
     43	.prcm_offs	  = MPU_MOD,
     44	.pwrsts		  = PWRSTS_OFF_RET_ON,
     45	.pwrsts_logic_ret = PWRSTS_OFF_RET,
     46	.banks		  = 1,
     47	.pwrsts_mem_ret	  = {
     48		[0] = PWRSTS_RET,
     49	},
     50	.pwrsts_mem_on	  = {
     51		[0] = PWRSTS_ON,
     52	},
     53	.voltdm		  = { .name = "core" },
     54};
     55
     56static struct powerdomain core_24xx_pwrdm = {
     57	.name		  = "core_pwrdm",
     58	.prcm_offs	  = CORE_MOD,
     59	.pwrsts		  = PWRSTS_OFF_RET_ON,
     60	.pwrsts_logic_ret = PWRSTS_RET,
     61	.banks		  = 3,
     62	.pwrsts_mem_ret	  = {
     63		[0] = PWRSTS_OFF_RET,	 /* MEM1RETSTATE */
     64		[1] = PWRSTS_OFF_RET,	 /* MEM2RETSTATE */
     65		[2] = PWRSTS_OFF_RET,	 /* MEM3RETSTATE */
     66	},
     67	.pwrsts_mem_on	  = {
     68		[0] = PWRSTS_OFF_RET_ON, /* MEM1ONSTATE */
     69		[1] = PWRSTS_OFF_RET_ON, /* MEM2ONSTATE */
     70		[2] = PWRSTS_OFF_RET_ON, /* MEM3ONSTATE */
     71	},
     72	.voltdm		  = { .name = "core" },
     73};
     74
     75
     76/*
     77 * 2430-specific powerdomains
     78 */
     79
     80/* XXX 2430 KILLDOMAINWKUP bit?  No current users apparently */
     81
     82static struct powerdomain mdm_pwrdm = {
     83	.name		  = "mdm_pwrdm",
     84	.prcm_offs	  = OMAP2430_MDM_MOD,
     85	.pwrsts		  = PWRSTS_OFF_RET_ON,
     86	.pwrsts_logic_ret = PWRSTS_RET,
     87	.banks		  = 1,
     88	.pwrsts_mem_ret	  = {
     89		[0] = PWRSTS_RET, /* MEMRETSTATE */
     90	},
     91	.pwrsts_mem_on	  = {
     92		[0] = PWRSTS_ON,  /* MEMONSTATE */
     93	},
     94	.voltdm		  = { .name = "core" },
     95};
     96
     97/*
     98 *
     99 */
    100
    101static struct powerdomain *powerdomains_omap24xx[] __initdata = {
    102	&wkup_omap2_pwrdm,
    103	&gfx_omap2_pwrdm,
    104	&dsp_pwrdm,
    105	&mpu_24xx_pwrdm,
    106	&core_24xx_pwrdm,
    107	NULL
    108};
    109
    110static struct powerdomain *powerdomains_omap2430[] __initdata = {
    111	&mdm_pwrdm,
    112	NULL
    113};
    114
    115void __init omap242x_powerdomains_init(void)
    116{
    117	if (!cpu_is_omap2420())
    118		return;
    119
    120	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
    121	pwrdm_register_pwrdms(powerdomains_omap24xx);
    122	pwrdm_complete_init();
    123}
    124
    125void __init omap243x_powerdomains_init(void)
    126{
    127	if (!cpu_is_omap2430())
    128		return;
    129
    130	pwrdm_register_platform_funcs(&omap2_pwrdm_operations);
    131	pwrdm_register_pwrdms(powerdomains_omap24xx);
    132	pwrdm_register_pwrdms(powerdomains_omap2430);
    133	pwrdm_complete_init();
    134}