Linux Audio

Check our new training course

Open-source upstreaming

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