powerdomain-common.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Common powerdomain framework functions
  4. *
  5. * Copyright (C) 2010-2011 Texas Instruments, Inc.
  6. * Copyright (C) 2010 Nokia Corporation
  7. *
  8. * Derived from mach-omap2/powerdomain.c written by Paul Walmsley
  9. */
  10. #include <linux/errno.h>
  11. #include <linux/kernel.h>
  12. #include <linux/bug.h>
  13. #include "pm.h"
  14. #include "cm.h"
  15. #include "cm-regbits-34xx.h"
  16. #include "prm-regbits-34xx.h"
  17. #include "prm-regbits-44xx.h"
  18. /*
  19. * OMAP3 and OMAP4 specific register bit initialisations
  20. * Notice that the names here are not according to each power
  21. * domain but the bit mapping used applies to all of them
  22. */
  23. /* OMAP3 and OMAP4 Memory Onstate Masks (common across all power domains) */
  24. #define OMAP_MEM0_ONSTATE_MASK OMAP3430_SHAREDL1CACHEFLATONSTATE_MASK
  25. #define OMAP_MEM1_ONSTATE_MASK OMAP3430_L1FLATMEMONSTATE_MASK
  26. #define OMAP_MEM2_ONSTATE_MASK OMAP3430_SHAREDL2CACHEFLATONSTATE_MASK
  27. #define OMAP_MEM3_ONSTATE_MASK OMAP3430_L2FLATMEMONSTATE_MASK
  28. #define OMAP_MEM4_ONSTATE_MASK OMAP4430_OCP_NRET_BANK_ONSTATE_MASK
  29. /* OMAP3 and OMAP4 Memory Retstate Masks (common across all power domains) */
  30. #define OMAP_MEM0_RETSTATE_MASK OMAP3430_SHAREDL1CACHEFLATRETSTATE_MASK
  31. #define OMAP_MEM1_RETSTATE_MASK OMAP3430_L1FLATMEMRETSTATE_MASK
  32. #define OMAP_MEM2_RETSTATE_MASK OMAP3430_SHAREDL2CACHEFLATRETSTATE_MASK
  33. #define OMAP_MEM3_RETSTATE_MASK OMAP3430_L2FLATMEMRETSTATE_MASK
  34. #define OMAP_MEM4_RETSTATE_MASK OMAP4430_OCP_NRET_BANK_RETSTATE_MASK
  35. /* OMAP3 and OMAP4 Memory Status bits */
  36. #define OMAP_MEM0_STATEST_MASK OMAP3430_SHAREDL1CACHEFLATSTATEST_MASK
  37. #define OMAP_MEM1_STATEST_MASK OMAP3430_L1FLATMEMSTATEST_MASK
  38. #define OMAP_MEM2_STATEST_MASK OMAP3430_SHAREDL2CACHEFLATSTATEST_MASK
  39. #define OMAP_MEM3_STATEST_MASK OMAP3430_L2FLATMEMSTATEST_MASK
  40. #define OMAP_MEM4_STATEST_MASK OMAP4430_OCP_NRET_BANK_STATEST_MASK
  41. /* Common Internal functions used across OMAP rev's*/
  42. u32 omap2_pwrdm_get_mem_bank_onstate_mask(u8 bank)
  43. {
  44. switch (bank) {
  45. case 0:
  46. return OMAP_MEM0_ONSTATE_MASK;
  47. case 1:
  48. return OMAP_MEM1_ONSTATE_MASK;
  49. case 2:
  50. return OMAP_MEM2_ONSTATE_MASK;
  51. case 3:
  52. return OMAP_MEM3_ONSTATE_MASK;
  53. case 4:
  54. return OMAP_MEM4_ONSTATE_MASK;
  55. default:
  56. WARN_ON(1); /* should never happen */
  57. return -EEXIST;
  58. }
  59. return 0;
  60. }
  61. u32 omap2_pwrdm_get_mem_bank_retst_mask(u8 bank)
  62. {
  63. switch (bank) {
  64. case 0:
  65. return OMAP_MEM0_RETSTATE_MASK;
  66. case 1:
  67. return OMAP_MEM1_RETSTATE_MASK;
  68. case 2:
  69. return OMAP_MEM2_RETSTATE_MASK;
  70. case 3:
  71. return OMAP_MEM3_RETSTATE_MASK;
  72. case 4:
  73. return OMAP_MEM4_RETSTATE_MASK;
  74. default:
  75. WARN_ON(1); /* should never happen */
  76. return -EEXIST;
  77. }
  78. return 0;
  79. }
  80. u32 omap2_pwrdm_get_mem_bank_stst_mask(u8 bank)
  81. {
  82. switch (bank) {
  83. case 0:
  84. return OMAP_MEM0_STATEST_MASK;
  85. case 1:
  86. return OMAP_MEM1_STATEST_MASK;
  87. case 2:
  88. return OMAP_MEM2_STATEST_MASK;
  89. case 3:
  90. return OMAP_MEM3_STATEST_MASK;
  91. case 4:
  92. return OMAP_MEM4_STATEST_MASK;
  93. default:
  94. WARN_ON(1); /* should never happen */
  95. return -EEXIST;
  96. }
  97. return 0;
  98. }