Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /*
0003  * Common powerdomain framework functions
0004  *
0005  * Copyright (C) 2010-2011 Texas Instruments, Inc.
0006  * Copyright (C) 2010 Nokia Corporation
0007  *
0008  * Derived from mach-omap2/powerdomain.c written by Paul Walmsley
0009  */
0010 
0011 #include <linux/errno.h>
0012 #include <linux/kernel.h>
0013 #include <linux/bug.h>
0014 #include "pm.h"
0015 #include "cm.h"
0016 #include "cm-regbits-34xx.h"
0017 #include "prm-regbits-34xx.h"
0018 #include "prm-regbits-44xx.h"
0019 
0020 /*
0021  * OMAP3 and OMAP4 specific register bit initialisations
0022  * Notice that the names here are not according to each power
0023  * domain but the bit mapping used applies to all of them
0024  */
0025 /* OMAP3 and OMAP4 Memory Onstate Masks (common across all power domains) */
0026 #define OMAP_MEM0_ONSTATE_MASK OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK
0027 #define OMAP_MEM1_ONSTATE_MASK OMAP3430_L1FLATMEMONSTATE_MASK
0028 #define OMAP_MEM2_ONSTATE_MASK OMAP3430_SHAREDL2CACHEFLATONSTATE_MASK
0029 #define OMAP_MEM3_ONSTATE_MASK OMAP3430_L2FLATMEMONSTATE_MASK
0030 #define OMAP_MEM4_ONSTATE_MASK OMAP4430_OCP_NRET_BANK_ONSTATE_MASK
0031 
0032 /* OMAP3 and OMAP4 Memory Retstate Masks (common across all power domains) */
0033 #define OMAP_MEM0_RETSTATE_MASK OMAP3430_SHAREDL1CACHEFLATRETSTATE_MASK
0034 #define OMAP_MEM1_RETSTATE_MASK OMAP3430_L1FLATMEMRETSTATE_MASK
0035 #define OMAP_MEM2_RETSTATE_MASK OMAP3430_SHAREDL2CACHEFLATRETSTATE_MASK
0036 #define OMAP_MEM3_RETSTATE_MASK OMAP3430_L2FLATMEMRETSTATE_MASK
0037 #define OMAP_MEM4_RETSTATE_MASK OMAP4430_OCP_NRET_BANK_RETSTATE_MASK
0038 
0039 /* OMAP3 and OMAP4 Memory Status bits */
0040 #define OMAP_MEM0_STATEST_MASK OMAP3430_SHAREDL1CACHEFLATSTATEST_MASK
0041 #define OMAP_MEM1_STATEST_MASK OMAP3430_L1FLATMEMSTATEST_MASK
0042 #define OMAP_MEM2_STATEST_MASK OMAP3430_SHAREDL2CACHEFLATSTATEST_MASK
0043 #define OMAP_MEM3_STATEST_MASK OMAP3430_L2FLATMEMSTATEST_MASK
0044 #define OMAP_MEM4_STATEST_MASK OMAP4430_OCP_NRET_BANK_STATEST_MASK
0045 
0046 /* Common Internal functions used across OMAP rev's*/
0047 u32 omap2_pwrdm_get_mem_bank_onstate_mask(u8 bank)
0048 {
0049     switch (bank) {
0050     case 0:
0051         return OMAP_MEM0_ONSTATE_MASK;
0052     case 1:
0053         return OMAP_MEM1_ONSTATE_MASK;
0054     case 2:
0055         return OMAP_MEM2_ONSTATE_MASK;
0056     case 3:
0057         return OMAP_MEM3_ONSTATE_MASK;
0058     case 4:
0059         return OMAP_MEM4_ONSTATE_MASK;
0060     default:
0061         WARN_ON(1); /* should never happen */
0062         return -EEXIST;
0063     }
0064     return 0;
0065 }
0066 
0067 u32 omap2_pwrdm_get_mem_bank_retst_mask(u8 bank)
0068 {
0069     switch (bank) {
0070     case 0:
0071         return OMAP_MEM0_RETSTATE_MASK;
0072     case 1:
0073         return OMAP_MEM1_RETSTATE_MASK;
0074     case 2:
0075         return OMAP_MEM2_RETSTATE_MASK;
0076     case 3:
0077         return OMAP_MEM3_RETSTATE_MASK;
0078     case 4:
0079         return OMAP_MEM4_RETSTATE_MASK;
0080     default:
0081         WARN_ON(1); /* should never happen */
0082         return -EEXIST;
0083     }
0084     return 0;
0085 }
0086 
0087 u32 omap2_pwrdm_get_mem_bank_stst_mask(u8 bank)
0088 {
0089     switch (bank) {
0090     case 0:
0091         return OMAP_MEM0_STATEST_MASK;
0092     case 1:
0093         return OMAP_MEM1_STATEST_MASK;
0094     case 2:
0095         return OMAP_MEM2_STATEST_MASK;
0096     case 3:
0097         return OMAP_MEM3_STATEST_MASK;
0098     case 4:
0099         return OMAP_MEM4_STATEST_MASK;
0100     default:
0101         WARN_ON(1); /* should never happen */
0102         return -EEXIST;
0103     }
0104     return 0;
0105 }
0106