ti-abb-regulator.txt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. Adaptive Body Bias(ABB) SoC internal LDO regulator for Texas Instruments SoCs
  2. Required Properties:
  3. - compatible: Should be one of:
  4. - "ti,abb-v1" for older SoCs like OMAP3
  5. - "ti,abb-v2" for newer SoCs like OMAP4, OMAP5
  6. - "ti,abb-v3" for a generic definition where setup and control registers are
  7. provided (example: DRA7)
  8. - reg: Address and length of the register set for the device. It contains
  9. the information of registers in the same order as described by reg-names
  10. - reg-names: Should contain the reg names
  11. - "base-address" - contains base address of ABB module (ti,abb-v1,ti,abb-v2)
  12. - "control-address" - contains control register address of ABB module (ti,abb-v3)
  13. - "setup-address" - contains setup register address of ABB module (ti,abb-v3)
  14. - "int-address" - contains address of interrupt register for ABB module
  15. (also see Optional properties)
  16. - #address-cell: should be 0
  17. - #size-cell: should be 0
  18. - clocks: should point to the clock node used by ABB module
  19. - ti,settling-time: Settling time in uSecs from SoC documentation for ABB module
  20. to settle down(target time for SR2_WTCNT_VALUE).
  21. - ti,clock-cycles: SoC specific data about count of system ti,clock-cycles used for
  22. computing settling time from SoC Documentation for ABB module(clock
  23. cycles for SR2_WTCNT_VALUE).
  24. - ti,tranxdone-status-mask: Mask to the int-register to write-to-clear mask
  25. indicating LDO tranxdone (operation complete).
  26. - ti,abb_info: An array of 6-tuples u32 items providing information about ABB
  27. configuration needed per operational voltage of the device.
  28. Each item consists of the following in the same order:
  29. volt: voltage in uV - Only used to index ABB information.
  30. ABB mode: one of the following:
  31. 0-bypass
  32. 1-Forward Body Bias(FBB)
  33. 3-Reverse Body Bias(RBB)
  34. efuse: (see Optional properties)
  35. RBB enable efuse Mask: (See Optional properties)
  36. FBB enable efuse Mask: (See Optional properties)
  37. Vset value efuse Mask: (See Optional properties)
  38. NOTE: If more than 1 entry is present, then regulator is setup to change
  39. voltage, allowing for various modes to be selected indexed off
  40. the regulator. Further, ABB LDOs are considered always-on by
  41. default.
  42. Optional Properties:
  43. - reg-names: In addition to the required properties, the following are optional
  44. - "efuse-address" - Contains efuse base address used to pick up ABB info.
  45. - "ldo-address" - Contains address of ABB LDO overide register address.
  46. "efuse-address" is required for this.
  47. - ti,ldovbb-vset-mask - Required if ldo-address is set, mask for LDO override
  48. register to provide override vset value.
  49. - ti,ldovbb-override-mask - Required if ldo-address is set, mask for LDO
  50. override register to enable override vset value.
  51. - ti,abb_opp_sel: Addendum to the description in required properties
  52. efuse: Mandatory if 'efuse-address' register is defined. Provides offset
  53. from efuse-address to pick up ABB characteristics. Set to 0 if
  54. 'efuse-address' is not defined.
  55. RBB enable efuse Mask: Optional if 'efuse-address' register is defined.
  56. 'ABB mode' is force set to RBB mode if value at "efuse-address"
  57. + efuse maps to RBB mask. Set to 0 to ignore this.
  58. FBB enable efuse Mask: Optional if 'efuse-address' register is defined.
  59. 'ABB mode' is force set to FBB mode if value at "efuse-address"
  60. + efuse maps to FBB mask (valid only if RBB mask does not match)
  61. Set to 0 to ignore this.
  62. Vset value efuse Mask: Mandatory if ldo-address is set. Picks up from
  63. efuse the value to set in 'ti,ldovbb-vset-mask' at ldo-address.
  64. Example #1: Simplest configuration (no efuse data, hard coded ABB table):
  65. abb_x: regulator-abb-x {
  66. compatible = "ti,abb-v1";
  67. regulator-name = "abb_x";
  68. #address-cell = <0>;
  69. #size-cells = <0>;
  70. reg = <0x483072f0 0x8>, <0x48306818 0x4>;
  71. reg-names = "base-address", "int-address";
  72. ti,tranxdone-status-mask = <0x4000000>;
  73. clocks = <&sysclk>;
  74. ti,settling-time = <30>;
  75. ti,clock-cycles = <8>;
  76. ti,abb_info = <
  77. /* uV ABB efuse rbb_m fbb_m vset_m */
  78. 1012500 0 0 0 0 0 /* Bypass */
  79. 1200000 3 0 0 0 0 /* RBB mandatory */
  80. 1320000 1 0 0 0 0 /* FBB mandatory */
  81. >;
  82. };
  83. Example #2: Efuse bits contain ABB mode setting (no LDO override capability)
  84. abb_y: regulator-abb-y {
  85. compatible = "ti,abb-v2";
  86. regulator-name = "abb_y";
  87. #address-cell = <0>;
  88. #size-cells = <0>;
  89. reg = <0x4a307bd0 0x8>, <0x4a306014 0x4>, <0x4A002268 0x8>;
  90. reg-names = "base-address", "int-address", "efuse-address";
  91. ti,tranxdone-status-mask = <0x4000000>;
  92. clocks = <&sysclk>;
  93. ti,settling-time = <50>;
  94. ti,clock-cycles = <16>;
  95. ti,abb_info = <
  96. /* uV ABB efuse rbb_m fbb_m vset_m */
  97. 975000 0 0 0 0 0 /* Bypass */
  98. 1012500 0 0 0x40000 0 0 /* RBB optional */
  99. 1200000 0 0x4 0 0x40000 0 /* FBB optional */
  100. 1320000 1 0 0 0 0 /* FBB mandatory */
  101. >;
  102. };
  103. Example #3: Efuse bits contain ABB mode setting and LDO override capability
  104. abb_z: regulator-abb-z {
  105. compatible = "ti,abb-v2";
  106. regulator-name = "abb_z";
  107. #address-cell = <0>;
  108. #size-cells = <0>;
  109. reg = <0x4ae07ce4 0x8>, <0x4ae06010 0x4>,
  110. <0x4a002194 0x8>, <0x4ae0C314 0x4>;
  111. reg-names = "base-address", "int-address",
  112. "efuse-address", "ldo-address";
  113. ti,tranxdone-status-mask = <0x8000000>;
  114. /* LDOVBBMM_MUX_CTRL */
  115. ti,ldovbb-override-mask = <0x400>;
  116. /* LDOVBBMM_VSET_OUT */
  117. ti,ldovbb-vset-mask = <0x1F>;
  118. clocks = <&sysclk>;
  119. ti,settling-time = <50>;
  120. ti,clock-cycles = <16>;
  121. ti,abb_info = <
  122. /* uV ABB efuse rbb_m fbb_m vset_m */
  123. 975000 0 0 0 0 0 /* Bypass */
  124. 1200000 0 0x4 0 0x40000 0x1f00 /* FBB optional, vset */
  125. >;
  126. };