Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tags 'tb-mfd-asoc-v5.14-1', 'tb-mfd-gpio-regulator-v5.14' and 'tb-mfd-regulator-rtc-v5.14' into ibs-for-mfd-merged

Immutable branch between MFD and ASoC due for the v5.14 merge window

Immutable branch between MFD, GPIO and Regulator due for the v5.14 merge window

Immutable branch between MFD, Regulator and RTC due for the v5.14 merge window

+2520 -59
+1
Documentation/devicetree/bindings/mfd/mt6397.txt
··· 21 21 compatible: 22 22 "mediatek,mt6323" for PMIC MT6323 23 23 "mediatek,mt6358" for PMIC MT6358 24 + "mediatek,mt6359" for PMIC MT6359 24 25 "mediatek,mt6397" for PMIC MT6397 25 26 26 27 Optional subnodes:
+385
Documentation/devicetree/bindings/regulator/mt6359-regulator.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/regulator/mt6359-regulator.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: MT6359 Regulator from MediaTek Integrated 8 + 9 + maintainers: 10 + - Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com> 11 + 12 + description: | 13 + List of regulators provided by this controller. It is named 14 + according to its regulator type, buck_<name> and ldo_<name>. 15 + MT6359 regulators node should be sub node of the MT6397 MFD node. 16 + 17 + patternProperties: 18 + "^buck_v(s1|gpu11|modem|pu|core|s2|pa|proc2|proc1|core_sshub)$": 19 + type: object 20 + $ref: "regulator.yaml#" 21 + 22 + properties: 23 + regulator-name: 24 + pattern: "^v(s1|gpu11|modem|pu|core|s2|pa|proc2|proc1|core_sshub)$" 25 + 26 + unevaluatedProperties: false 27 + 28 + "^ldo_v(ibr|rf12|usb|camio|efuse|xo22)$": 29 + type: object 30 + $ref: "regulator.yaml#" 31 + 32 + properties: 33 + regulator-name: 34 + pattern: "^v(ibr|rf12|usb|camio|efuse|xo22)$" 35 + 36 + unevaluatedProperties: false 37 + 38 + "^ldo_v(rfck|emc|a12|a09|ufs|bbck)$": 39 + type: object 40 + $ref: "regulator.yaml#" 41 + 42 + properties: 43 + regulator-name: 44 + pattern: "^v(rfck|emc|a12|a09|ufs|bbck)$" 45 + 46 + unevaluatedProperties: false 47 + 48 + "^ldo_vcn(18|13|33_1_bt|13_1_wifi|33_2_bt|33_2_wifi)$": 49 + type: object 50 + $ref: "regulator.yaml#" 51 + 52 + properties: 53 + regulator-name: 54 + pattern: "^vcn(18|13|33_1_bt|13_1_wifi|33_2_bt|33_2_wifi)$" 55 + 56 + unevaluatedProperties: false 57 + 58 + "^ldo_vsram_(proc2|others|md|proc1|others_sshub)$": 59 + type: object 60 + $ref: "regulator.yaml#" 61 + 62 + properties: 63 + regulator-name: 64 + pattern: "^vsram_(proc2|others|md|proc1|others_sshub)$" 65 + 66 + unevaluatedProperties: false 67 + 68 + "^ldo_v(fe|bif|io)28$": 69 + type: object 70 + $ref: "regulator.yaml#" 71 + 72 + properties: 73 + regulator-name: 74 + pattern: "^v(fe|bif|io)28$" 75 + 76 + unevaluatedProperties: false 77 + 78 + "^ldo_v(aud|io|aux|rf|m)18$": 79 + type: object 80 + $ref: "regulator.yaml#" 81 + 82 + properties: 83 + regulator-name: 84 + pattern: "^v(aud|io|aux|rf|m)18$" 85 + 86 + unevaluatedProperties: false 87 + 88 + "^ldo_vsim[12]$": 89 + type: object 90 + $ref: "regulator.yaml#" 91 + 92 + properties: 93 + regulator-name: 94 + pattern: "^vsim[12]$" 95 + 96 + required: 97 + - regulator-name 98 + 99 + unevaluatedProperties: false 100 + 101 + additionalProperties: false 102 + 103 + examples: 104 + - | 105 + pmic { 106 + regulators { 107 + mt6359_vs1_buck_reg: buck_vs1 { 108 + regulator-name = "vs1"; 109 + regulator-min-microvolt = <800000>; 110 + regulator-max-microvolt = <2200000>; 111 + regulator-enable-ramp-delay = <0>; 112 + regulator-always-on; 113 + }; 114 + mt6359_vgpu11_buck_reg: buck_vgpu11 { 115 + regulator-name = "vgpu11"; 116 + regulator-min-microvolt = <400000>; 117 + regulator-max-microvolt = <1193750>; 118 + regulator-ramp-delay = <5000>; 119 + regulator-enable-ramp-delay = <200>; 120 + regulator-allowed-modes = <0 1 2>; 121 + }; 122 + mt6359_vmodem_buck_reg: buck_vmodem { 123 + regulator-name = "vmodem"; 124 + regulator-min-microvolt = <400000>; 125 + regulator-max-microvolt = <1100000>; 126 + regulator-ramp-delay = <10760>; 127 + regulator-enable-ramp-delay = <200>; 128 + }; 129 + mt6359_vpu_buck_reg: buck_vpu { 130 + regulator-name = "vpu"; 131 + regulator-min-microvolt = <400000>; 132 + regulator-max-microvolt = <1193750>; 133 + regulator-ramp-delay = <5000>; 134 + regulator-enable-ramp-delay = <200>; 135 + regulator-allowed-modes = <0 1 2>; 136 + }; 137 + mt6359_vcore_buck_reg: buck_vcore { 138 + regulator-name = "vcore"; 139 + regulator-min-microvolt = <400000>; 140 + regulator-max-microvolt = <1300000>; 141 + regulator-ramp-delay = <5000>; 142 + regulator-enable-ramp-delay = <200>; 143 + regulator-allowed-modes = <0 1 2>; 144 + }; 145 + mt6359_vs2_buck_reg: buck_vs2 { 146 + regulator-name = "vs2"; 147 + regulator-min-microvolt = <800000>; 148 + regulator-max-microvolt = <1600000>; 149 + regulator-enable-ramp-delay = <0>; 150 + regulator-always-on; 151 + }; 152 + mt6359_vpa_buck_reg: buck_vpa { 153 + regulator-name = "vpa"; 154 + regulator-min-microvolt = <500000>; 155 + regulator-max-microvolt = <3650000>; 156 + regulator-enable-ramp-delay = <300>; 157 + }; 158 + mt6359_vproc2_buck_reg: buck_vproc2 { 159 + regulator-name = "vproc2"; 160 + regulator-min-microvolt = <400000>; 161 + regulator-max-microvolt = <1193750>; 162 + regulator-ramp-delay = <7500>; 163 + regulator-enable-ramp-delay = <200>; 164 + regulator-allowed-modes = <0 1 2>; 165 + }; 166 + mt6359_vproc1_buck_reg: buck_vproc1 { 167 + regulator-name = "vproc1"; 168 + regulator-min-microvolt = <400000>; 169 + regulator-max-microvolt = <1193750>; 170 + regulator-ramp-delay = <7500>; 171 + regulator-enable-ramp-delay = <200>; 172 + regulator-allowed-modes = <0 1 2>; 173 + }; 174 + mt6359_vcore_sshub_buck_reg: buck_vcore_sshub { 175 + regulator-name = "vcore_sshub"; 176 + regulator-min-microvolt = <400000>; 177 + regulator-max-microvolt = <1193750>; 178 + }; 179 + mt6359_vgpu11_sshub_buck_reg: buck_vgpu11_sshub { 180 + regulator-name = "vgpu11_sshub"; 181 + regulator-min-microvolt = <400000>; 182 + regulator-max-microvolt = <1193750>; 183 + }; 184 + mt6359_vaud18_ldo_reg: ldo_vaud18 { 185 + regulator-name = "vaud18"; 186 + regulator-min-microvolt = <1800000>; 187 + regulator-max-microvolt = <1800000>; 188 + regulator-enable-ramp-delay = <240>; 189 + }; 190 + mt6359_vsim1_ldo_reg: ldo_vsim1 { 191 + regulator-name = "vsim1"; 192 + regulator-min-microvolt = <1700000>; 193 + regulator-max-microvolt = <3100000>; 194 + }; 195 + mt6359_vibr_ldo_reg: ldo_vibr { 196 + regulator-name = "vibr"; 197 + regulator-min-microvolt = <1200000>; 198 + regulator-max-microvolt = <3300000>; 199 + }; 200 + mt6359_vrf12_ldo_reg: ldo_vrf12 { 201 + regulator-name = "vrf12"; 202 + regulator-min-microvolt = <1100000>; 203 + regulator-max-microvolt = <1300000>; 204 + }; 205 + mt6359_vusb_ldo_reg: ldo_vusb { 206 + regulator-name = "vusb"; 207 + regulator-min-microvolt = <3000000>; 208 + regulator-max-microvolt = <3000000>; 209 + regulator-enable-ramp-delay = <960>; 210 + regulator-always-on; 211 + }; 212 + mt6359_vsram_proc2_ldo_reg: ldo_vsram_proc2 { 213 + regulator-name = "vsram_proc2"; 214 + regulator-min-microvolt = <500000>; 215 + regulator-max-microvolt = <1293750>; 216 + regulator-ramp-delay = <7500>; 217 + regulator-enable-ramp-delay = <240>; 218 + regulator-always-on; 219 + }; 220 + mt6359_vio18_ldo_reg: ldo_vio18 { 221 + regulator-name = "vio18"; 222 + regulator-min-microvolt = <1700000>; 223 + regulator-max-microvolt = <1900000>; 224 + regulator-enable-ramp-delay = <960>; 225 + regulator-always-on; 226 + }; 227 + mt6359_vcamio_ldo_reg: ldo_vcamio { 228 + regulator-name = "vcamio"; 229 + regulator-min-microvolt = <1700000>; 230 + regulator-max-microvolt = <1900000>; 231 + }; 232 + mt6359_vcn18_ldo_reg: ldo_vcn18 { 233 + regulator-name = "vcn18"; 234 + regulator-min-microvolt = <1800000>; 235 + regulator-max-microvolt = <1800000>; 236 + regulator-enable-ramp-delay = <240>; 237 + }; 238 + mt6359_vfe28_ldo_reg: ldo_vfe28 { 239 + regulator-name = "vfe28"; 240 + regulator-min-microvolt = <2800000>; 241 + regulator-max-microvolt = <2800000>; 242 + regulator-enable-ramp-delay = <120>; 243 + }; 244 + mt6359_vcn13_ldo_reg: ldo_vcn13 { 245 + regulator-name = "vcn13"; 246 + regulator-min-microvolt = <900000>; 247 + regulator-max-microvolt = <1300000>; 248 + }; 249 + mt6359_vcn33_1_bt_ldo_reg: ldo_vcn33_1_bt { 250 + regulator-name = "vcn33_1_bt"; 251 + regulator-min-microvolt = <2800000>; 252 + regulator-max-microvolt = <3500000>; 253 + }; 254 + mt6359_vcn33_1_wifi_ldo_reg: ldo_vcn33_1_wifi { 255 + regulator-name = "vcn33_1_wifi"; 256 + regulator-min-microvolt = <2800000>; 257 + regulator-max-microvolt = <3500000>; 258 + }; 259 + mt6359_vaux18_ldo_reg: ldo_vaux18 { 260 + regulator-name = "vaux18"; 261 + regulator-min-microvolt = <1800000>; 262 + regulator-max-microvolt = <1800000>; 263 + regulator-enable-ramp-delay = <240>; 264 + regulator-always-on; 265 + }; 266 + mt6359_vsram_others_ldo_reg: ldo_vsram_others { 267 + regulator-name = "vsram_others"; 268 + regulator-min-microvolt = <500000>; 269 + regulator-max-microvolt = <1293750>; 270 + regulator-ramp-delay = <5000>; 271 + regulator-enable-ramp-delay = <240>; 272 + }; 273 + mt6359_vefuse_ldo_reg: ldo_vefuse { 274 + regulator-name = "vefuse"; 275 + regulator-min-microvolt = <1700000>; 276 + regulator-max-microvolt = <2000000>; 277 + }; 278 + mt6359_vxo22_ldo_reg: ldo_vxo22 { 279 + regulator-name = "vxo22"; 280 + regulator-min-microvolt = <1800000>; 281 + regulator-max-microvolt = <2200000>; 282 + regulator-always-on; 283 + }; 284 + mt6359_vrfck_ldo_reg: ldo_vrfck { 285 + regulator-name = "vrfck"; 286 + regulator-min-microvolt = <1500000>; 287 + regulator-max-microvolt = <1700000>; 288 + }; 289 + mt6359_vrfck_1_ldo_reg: ldo_vrfck_1 { 290 + regulator-name = "vrfck"; 291 + regulator-min-microvolt = <1240000>; 292 + regulator-max-microvolt = <1600000>; 293 + }; 294 + mt6359_vbif28_ldo_reg: ldo_vbif28 { 295 + regulator-name = "vbif28"; 296 + regulator-min-microvolt = <2800000>; 297 + regulator-max-microvolt = <2800000>; 298 + regulator-enable-ramp-delay = <240>; 299 + }; 300 + mt6359_vio28_ldo_reg: ldo_vio28 { 301 + regulator-name = "vio28"; 302 + regulator-min-microvolt = <2800000>; 303 + regulator-max-microvolt = <3300000>; 304 + regulator-always-on; 305 + }; 306 + mt6359_vemc_ldo_reg: ldo_vemc { 307 + regulator-name = "vemc"; 308 + regulator-min-microvolt = <2900000>; 309 + regulator-max-microvolt = <3300000>; 310 + }; 311 + mt6359_vemc_1_ldo_reg: ldo_vemc_1 { 312 + regulator-name = "vemc"; 313 + regulator-min-microvolt = <2500000>; 314 + regulator-max-microvolt = <3300000>; 315 + }; 316 + mt6359_vcn33_2_bt_ldo_reg: ldo_vcn33_2_bt { 317 + regulator-name = "vcn33_2_bt"; 318 + regulator-min-microvolt = <2800000>; 319 + regulator-max-microvolt = <3500000>; 320 + }; 321 + mt6359_vcn33_2_wifi_ldo_reg: ldo_vcn33_2_wifi { 322 + regulator-name = "vcn33_2_wifi"; 323 + regulator-min-microvolt = <2800000>; 324 + regulator-max-microvolt = <3500000>; 325 + }; 326 + mt6359_va12_ldo_reg: ldo_va12 { 327 + regulator-name = "va12"; 328 + regulator-min-microvolt = <1200000>; 329 + regulator-max-microvolt = <1300000>; 330 + regulator-always-on; 331 + }; 332 + mt6359_va09_ldo_reg: ldo_va09 { 333 + regulator-name = "va09"; 334 + regulator-min-microvolt = <800000>; 335 + regulator-max-microvolt = <1200000>; 336 + }; 337 + mt6359_vrf18_ldo_reg: ldo_vrf18 { 338 + regulator-name = "vrf18"; 339 + regulator-min-microvolt = <1700000>; 340 + regulator-max-microvolt = <1810000>; 341 + }; 342 + mt6359_vsram_md_ldo_reg: ldo_vsram_md { 343 + regulator-name = "vsram_md"; 344 + regulator-min-microvolt = <500000>; 345 + regulator-max-microvolt = <1293750>; 346 + regulator-ramp-delay = <10760>; 347 + regulator-enable-ramp-delay = <240>; 348 + }; 349 + mt6359_vufs_ldo_reg: ldo_vufs { 350 + regulator-name = "vufs"; 351 + regulator-min-microvolt = <1700000>; 352 + regulator-max-microvolt = <1900000>; 353 + }; 354 + mt6359_vm18_ldo_reg: ldo_vm18 { 355 + regulator-name = "vm18"; 356 + regulator-min-microvolt = <1700000>; 357 + regulator-max-microvolt = <1900000>; 358 + regulator-always-on; 359 + }; 360 + mt6359_vbbck_ldo_reg: ldo_vbbck { 361 + regulator-name = "vbbck"; 362 + regulator-min-microvolt = <1100000>; 363 + regulator-max-microvolt = <1200000>; 364 + }; 365 + mt6359_vsram_proc1_ldo_reg: ldo_vsram_proc1 { 366 + regulator-name = "vsram_proc1"; 367 + regulator-min-microvolt = <500000>; 368 + regulator-max-microvolt = <1293750>; 369 + regulator-ramp-delay = <7500>; 370 + regulator-enable-ramp-delay = <240>; 371 + regulator-always-on; 372 + }; 373 + mt6359_vsim2_ldo_reg: ldo_vsim2 { 374 + regulator-name = "vsim2"; 375 + regulator-min-microvolt = <1700000>; 376 + regulator-max-microvolt = <3100000>; 377 + }; 378 + mt6359_vsram_others_sshub_ldo: ldo_vsram_others_sshub { 379 + regulator-name = "vsram_others_sshub"; 380 + regulator-min-microvolt = <500000>; 381 + regulator-max-microvolt = <1293750>; 382 + }; 383 + }; 384 + }; 385 + ...
+3 -3
drivers/gpio/gpio-lp87565.c
··· 123 123 return regmap_update_bits(gpio->map, 124 124 LP87565_REG_GPIO_CONFIG, 125 125 BIT(offset + 126 - __ffs(LP87565_GOIO1_OD)), 126 + __ffs(LP87565_GPIO1_OD)), 127 127 BIT(offset + 128 - __ffs(LP87565_GOIO1_OD))); 128 + __ffs(LP87565_GPIO1_OD))); 129 129 case PIN_CONFIG_DRIVE_PUSH_PULL: 130 130 return regmap_update_bits(gpio->map, 131 131 LP87565_REG_GPIO_CONFIG, 132 132 BIT(offset + 133 - __ffs(LP87565_GOIO1_OD)), 0); 133 + __ffs(LP87565_GPIO1_OD)), 0); 134 134 default: 135 135 return -ENOTSUPP; 136 136 }
+62 -27
drivers/mfd/mt6358-irq.c
··· 5 5 #include <linux/interrupt.h> 6 6 #include <linux/mfd/mt6358/core.h> 7 7 #include <linux/mfd/mt6358/registers.h> 8 + #include <linux/mfd/mt6359/core.h> 9 + #include <linux/mfd/mt6359/registers.h> 8 10 #include <linux/mfd/mt6397/core.h> 9 11 #include <linux/module.h> 10 12 #include <linux/of.h> ··· 15 13 #include <linux/platform_device.h> 16 14 #include <linux/regmap.h> 17 15 18 - static struct irq_top_t mt6358_ints[] = { 16 + #define MTK_PMIC_REG_WIDTH 16 17 + 18 + static const struct irq_top_t mt6358_ints[] = { 19 19 MT6358_TOP_GEN(BUCK), 20 20 MT6358_TOP_GEN(LDO), 21 21 MT6358_TOP_GEN(PSC), ··· 26 22 MT6358_TOP_GEN(HK), 27 23 MT6358_TOP_GEN(AUD), 28 24 MT6358_TOP_GEN(MISC), 25 + }; 26 + 27 + static const struct irq_top_t mt6359_ints[] = { 28 + MT6359_TOP_GEN(BUCK), 29 + MT6359_TOP_GEN(LDO), 30 + MT6359_TOP_GEN(PSC), 31 + MT6359_TOP_GEN(SCK), 32 + MT6359_TOP_GEN(BM), 33 + MT6359_TOP_GEN(HK), 34 + MT6359_TOP_GEN(AUD), 35 + MT6359_TOP_GEN(MISC), 36 + }; 37 + 38 + static struct pmic_irq_data mt6358_irqd = { 39 + .num_top = ARRAY_SIZE(mt6358_ints), 40 + .num_pmic_irqs = MT6358_IRQ_NR, 41 + .top_int_status_reg = MT6358_TOP_INT_STATUS0, 42 + .pmic_ints = mt6358_ints, 43 + }; 44 + 45 + static struct pmic_irq_data mt6359_irqd = { 46 + .num_top = ARRAY_SIZE(mt6359_ints), 47 + .num_pmic_irqs = MT6359_IRQ_NR, 48 + .top_int_status_reg = MT6359_TOP_INT_STATUS0, 49 + .pmic_ints = mt6359_ints, 29 50 }; 30 51 31 52 static void pmic_irq_enable(struct irq_data *data) ··· 91 62 /* Find out the IRQ group */ 92 63 top_gp = 0; 93 64 while ((top_gp + 1) < irqd->num_top && 94 - i >= mt6358_ints[top_gp + 1].hwirq_base) 65 + i >= irqd->pmic_ints[top_gp + 1].hwirq_base) 95 66 top_gp++; 96 67 97 68 /* Find the IRQ registers */ 98 - gp_offset = i - mt6358_ints[top_gp].hwirq_base; 99 - int_regs = gp_offset / MT6358_REG_WIDTH; 100 - shift = gp_offset % MT6358_REG_WIDTH; 101 - en_reg = mt6358_ints[top_gp].en_reg + 102 - (mt6358_ints[top_gp].en_reg_shift * int_regs); 69 + gp_offset = i - irqd->pmic_ints[top_gp].hwirq_base; 70 + int_regs = gp_offset / MTK_PMIC_REG_WIDTH; 71 + shift = gp_offset % MTK_PMIC_REG_WIDTH; 72 + en_reg = irqd->pmic_ints[top_gp].en_reg + 73 + (irqd->pmic_ints[top_gp].en_reg_shift * int_regs); 103 74 104 75 regmap_update_bits(chip->regmap, en_reg, BIT(shift), 105 76 irqd->enable_hwirq[i] << shift); ··· 124 95 unsigned int irq_status, sta_reg, status; 125 96 unsigned int hwirq, virq; 126 97 int i, j, ret; 98 + struct pmic_irq_data *irqd = chip->irq_data; 127 99 128 - for (i = 0; i < mt6358_ints[top_gp].num_int_regs; i++) { 129 - sta_reg = mt6358_ints[top_gp].sta_reg + 130 - mt6358_ints[top_gp].sta_reg_shift * i; 100 + for (i = 0; i < irqd->pmic_ints[top_gp].num_int_regs; i++) { 101 + sta_reg = irqd->pmic_ints[top_gp].sta_reg + 102 + irqd->pmic_ints[top_gp].sta_reg_shift * i; 131 103 132 104 ret = regmap_read(chip->regmap, sta_reg, &irq_status); 133 105 if (ret) { ··· 144 114 do { 145 115 j = __ffs(status); 146 116 147 - hwirq = mt6358_ints[top_gp].hwirq_base + 148 - MT6358_REG_WIDTH * i + j; 117 + hwirq = irqd->pmic_ints[top_gp].hwirq_base + 118 + MTK_PMIC_REG_WIDTH * i + j; 149 119 150 120 virq = irq_find_mapping(chip->irq_domain, hwirq); 151 121 if (virq) ··· 161 131 static irqreturn_t mt6358_irq_handler(int irq, void *data) 162 132 { 163 133 struct mt6397_chip *chip = data; 164 - struct pmic_irq_data *mt6358_irq_data = chip->irq_data; 134 + struct pmic_irq_data *irqd = chip->irq_data; 165 135 unsigned int bit, i, top_irq_status = 0; 166 136 int ret; 167 137 168 138 ret = regmap_read(chip->regmap, 169 - mt6358_irq_data->top_int_status_reg, 139 + irqd->top_int_status_reg, 170 140 &top_irq_status); 171 141 if (ret) { 172 142 dev_err(chip->dev, ··· 174 144 return IRQ_NONE; 175 145 } 176 146 177 - for (i = 0; i < mt6358_irq_data->num_top; i++) { 178 - bit = BIT(mt6358_ints[i].top_offset); 147 + for (i = 0; i < irqd->num_top; i++) { 148 + bit = BIT(irqd->pmic_ints[i].top_offset); 179 149 if (top_irq_status & bit) { 180 150 mt6358_irq_sp_handler(chip, i); 181 151 top_irq_status &= ~bit; ··· 210 180 int i, j, ret; 211 181 struct pmic_irq_data *irqd; 212 182 213 - irqd = devm_kzalloc(chip->dev, sizeof(*irqd), GFP_KERNEL); 214 - if (!irqd) 215 - return -ENOMEM; 183 + switch (chip->chip_id) { 184 + case MT6358_CHIP_ID: 185 + chip->irq_data = &mt6358_irqd; 186 + break; 216 187 217 - chip->irq_data = irqd; 188 + case MT6359_CHIP_ID: 189 + chip->irq_data = &mt6359_irqd; 190 + break; 191 + 192 + default: 193 + dev_err(chip->dev, "unsupported chip: 0x%x\n", chip->chip_id); 194 + return -ENODEV; 195 + } 218 196 219 197 mutex_init(&chip->irqlock); 220 - irqd->top_int_status_reg = MT6358_TOP_INT_STATUS0; 221 - irqd->num_pmic_irqs = MT6358_IRQ_NR; 222 - irqd->num_top = ARRAY_SIZE(mt6358_ints); 223 - 198 + irqd = chip->irq_data; 224 199 irqd->enable_hwirq = devm_kcalloc(chip->dev, 225 200 irqd->num_pmic_irqs, 226 201 sizeof(*irqd->enable_hwirq), ··· 242 207 243 208 /* Disable all interrupts for initializing */ 244 209 for (i = 0; i < irqd->num_top; i++) { 245 - for (j = 0; j < mt6358_ints[i].num_int_regs; j++) 210 + for (j = 0; j < irqd->pmic_ints[i].num_int_regs; j++) 246 211 regmap_write(chip->regmap, 247 - mt6358_ints[i].en_reg + 248 - mt6358_ints[i].en_reg_shift * j, 0); 212 + irqd->pmic_ints[i].en_reg + 213 + irqd->pmic_ints[i].en_reg_shift * j, 0); 249 214 } 250 215 251 216 chip->irq_domain = irq_domain_add_linear(chip->dev->of_node,
+24
drivers/mfd/mt6397-core.c
··· 13 13 #include <linux/mfd/core.h> 14 14 #include <linux/mfd/mt6323/core.h> 15 15 #include <linux/mfd/mt6358/core.h> 16 + #include <linux/mfd/mt6359/core.h> 16 17 #include <linux/mfd/mt6397/core.h> 17 18 #include <linux/mfd/mt6323/registers.h> 18 19 #include <linux/mfd/mt6358/registers.h> 20 + #include <linux/mfd/mt6359/registers.h> 19 21 #include <linux/mfd/mt6397/registers.h> 20 22 21 23 #define MT6323_RTC_BASE 0x8000 ··· 101 99 }, 102 100 }; 103 101 102 + static const struct mfd_cell mt6359_devs[] = { 103 + { .name = "mt6359-regulator", }, 104 + { 105 + .name = "mt6359-rtc", 106 + .num_resources = ARRAY_SIZE(mt6358_rtc_resources), 107 + .resources = mt6358_rtc_resources, 108 + .of_compatible = "mediatek,mt6358-rtc", 109 + }, 110 + { .name = "mt6359-sound", }, 111 + }; 112 + 104 113 static const struct mfd_cell mt6397_devs[] = { 105 114 { 106 115 .name = "mt6397-rtc", ··· 159 146 .cid_shift = 8, 160 147 .cells = mt6358_devs, 161 148 .cell_size = ARRAY_SIZE(mt6358_devs), 149 + .irq_init = mt6358_irq_init, 150 + }; 151 + 152 + static const struct chip_data mt6359_core = { 153 + .cid_addr = MT6359_SWCID, 154 + .cid_shift = 8, 155 + .cells = mt6359_devs, 156 + .cell_size = ARRAY_SIZE(mt6359_devs), 162 157 .irq_init = mt6358_irq_init, 163 158 }; 164 159 ··· 239 218 }, { 240 219 .compatible = "mediatek,mt6358", 241 220 .data = &mt6358_core, 221 + }, { 222 + .compatible = "mediatek,mt6359", 223 + .data = &mt6359_core, 242 224 }, { 243 225 .compatible = "mediatek,mt6397", 244 226 .data = &mt6397_core,
+9
drivers/regulator/Kconfig
··· 779 779 This driver supports the control of different power rails of device 780 780 through regulator interface. 781 781 782 + config REGULATOR_MT6359 783 + tristate "MediaTek MT6359 PMIC" 784 + depends on MFD_MT6397 785 + help 786 + Say y here to select this option to enable the power regulator of 787 + MediaTek MT6359 PMIC. 788 + This driver supports the control of different power rails of device 789 + through regulator interface. 790 + 782 791 config REGULATOR_MT6360 783 792 tristate "MT6360 SubPMIC Regulator" 784 793 depends on MFD_MT6360
+1
drivers/regulator/Makefile
··· 94 94 obj-$(CONFIG_REGULATOR_MT6315) += mt6315-regulator.o 95 95 obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o 96 96 obj-$(CONFIG_REGULATOR_MT6358) += mt6358-regulator.o 97 + obj-$(CONFIG_REGULATOR_MT6359) += mt6359-regulator.o 97 98 obj-$(CONFIG_REGULATOR_MT6360) += mt6360-regulator.o 98 99 obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o 99 100 obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o
+11
drivers/regulator/lp87565-regulator.c
··· 11 11 12 12 #include <linux/mfd/lp87565.h> 13 13 14 + enum LP87565_regulator_id { 15 + /* BUCK's */ 16 + LP87565_BUCK_0, 17 + LP87565_BUCK_1, 18 + LP87565_BUCK_2, 19 + LP87565_BUCK_3, 20 + LP87565_BUCK_10, 21 + LP87565_BUCK_23, 22 + LP87565_BUCK_3210, 23 + }; 24 + 14 25 #define LP87565_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, \ 15 26 _er, _em, _ev, _delay, _lr, _cr) \ 16 27 [_id] = { \
+1036
drivers/regulator/mt6359-regulator.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + // 3 + // Copyright (c) 2021 MediaTek Inc. 4 + 5 + #include <linux/platform_device.h> 6 + #include <linux/mfd/mt6359/registers.h> 7 + #include <linux/mfd/mt6359p/registers.h> 8 + #include <linux/mfd/mt6397/core.h> 9 + #include <linux/module.h> 10 + #include <linux/of_device.h> 11 + #include <linux/regmap.h> 12 + #include <linux/regulator/driver.h> 13 + #include <linux/regulator/machine.h> 14 + #include <linux/regulator/mt6359-regulator.h> 15 + #include <linux/regulator/of_regulator.h> 16 + 17 + #define MT6359_BUCK_MODE_AUTO 0 18 + #define MT6359_BUCK_MODE_FORCE_PWM 1 19 + #define MT6359_BUCK_MODE_NORMAL 0 20 + #define MT6359_BUCK_MODE_LP 2 21 + 22 + /* 23 + * MT6359 regulators' information 24 + * 25 + * @desc: standard fields of regulator description. 26 + * @status_reg: for query status of regulators. 27 + * @qi: Mask for query enable signal status of regulators. 28 + * @modeset_reg: for operating AUTO/PWM mode register. 29 + * @modeset_mask: MASK for operating modeset register. 30 + * @modeset_shift: SHIFT for operating modeset register. 31 + */ 32 + struct mt6359_regulator_info { 33 + struct regulator_desc desc; 34 + u32 status_reg; 35 + u32 qi; 36 + u32 modeset_reg; 37 + u32 modeset_mask; 38 + u32 modeset_shift; 39 + u32 lp_mode_reg; 40 + u32 lp_mode_mask; 41 + u32 lp_mode_shift; 42 + }; 43 + 44 + #define MT6359_BUCK(match, _name, min, max, step, min_sel, \ 45 + volt_ranges, _enable_reg, _status_reg, \ 46 + _vsel_reg, _vsel_mask, \ 47 + _lp_mode_reg, _lp_mode_shift, \ 48 + _modeset_reg, _modeset_shift) \ 49 + [MT6359_ID_##_name] = { \ 50 + .desc = { \ 51 + .name = #_name, \ 52 + .of_match = of_match_ptr(match), \ 53 + .regulators_node = of_match_ptr("regulators"), \ 54 + .ops = &mt6359_volt_range_ops, \ 55 + .type = REGULATOR_VOLTAGE, \ 56 + .id = MT6359_ID_##_name, \ 57 + .owner = THIS_MODULE, \ 58 + .uV_step = (step), \ 59 + .linear_min_sel = (min_sel), \ 60 + .n_voltages = ((max) - (min)) / (step) + 1, \ 61 + .min_uV = (min), \ 62 + .linear_ranges = volt_ranges, \ 63 + .n_linear_ranges = ARRAY_SIZE(volt_ranges), \ 64 + .vsel_reg = _vsel_reg, \ 65 + .vsel_mask = _vsel_mask, \ 66 + .enable_reg = _enable_reg, \ 67 + .enable_mask = BIT(0), \ 68 + .of_map_mode = mt6359_map_mode, \ 69 + }, \ 70 + .status_reg = _status_reg, \ 71 + .qi = BIT(0), \ 72 + .lp_mode_reg = _lp_mode_reg, \ 73 + .lp_mode_mask = BIT(_lp_mode_shift), \ 74 + .lp_mode_shift = _lp_mode_shift, \ 75 + .modeset_reg = _modeset_reg, \ 76 + .modeset_mask = BIT(_modeset_shift), \ 77 + .modeset_shift = _modeset_shift \ 78 + } 79 + 80 + #define MT6359_LDO_LINEAR(match, _name, min, max, step, min_sel,\ 81 + volt_ranges, _enable_reg, _status_reg, \ 82 + _vsel_reg, _vsel_mask) \ 83 + [MT6359_ID_##_name] = { \ 84 + .desc = { \ 85 + .name = #_name, \ 86 + .of_match = of_match_ptr(match), \ 87 + .regulators_node = of_match_ptr("regulators"), \ 88 + .ops = &mt6359_volt_range_ops, \ 89 + .type = REGULATOR_VOLTAGE, \ 90 + .id = MT6359_ID_##_name, \ 91 + .owner = THIS_MODULE, \ 92 + .uV_step = (step), \ 93 + .linear_min_sel = (min_sel), \ 94 + .n_voltages = ((max) - (min)) / (step) + 1, \ 95 + .min_uV = (min), \ 96 + .linear_ranges = volt_ranges, \ 97 + .n_linear_ranges = ARRAY_SIZE(volt_ranges), \ 98 + .vsel_reg = _vsel_reg, \ 99 + .vsel_mask = _vsel_mask, \ 100 + .enable_reg = _enable_reg, \ 101 + .enable_mask = BIT(0), \ 102 + }, \ 103 + .status_reg = _status_reg, \ 104 + .qi = BIT(0), \ 105 + } 106 + 107 + #define MT6359_LDO(match, _name, _volt_table, \ 108 + _enable_reg, _enable_mask, _status_reg, \ 109 + _vsel_reg, _vsel_mask, _en_delay) \ 110 + [MT6359_ID_##_name] = { \ 111 + .desc = { \ 112 + .name = #_name, \ 113 + .of_match = of_match_ptr(match), \ 114 + .regulators_node = of_match_ptr("regulators"), \ 115 + .ops = &mt6359_volt_table_ops, \ 116 + .type = REGULATOR_VOLTAGE, \ 117 + .id = MT6359_ID_##_name, \ 118 + .owner = THIS_MODULE, \ 119 + .n_voltages = ARRAY_SIZE(_volt_table), \ 120 + .volt_table = _volt_table, \ 121 + .vsel_reg = _vsel_reg, \ 122 + .vsel_mask = _vsel_mask, \ 123 + .enable_reg = _enable_reg, \ 124 + .enable_mask = BIT(_enable_mask), \ 125 + .enable_time = _en_delay, \ 126 + }, \ 127 + .status_reg = _status_reg, \ 128 + .qi = BIT(0), \ 129 + } 130 + 131 + #define MT6359_REG_FIXED(match, _name, _enable_reg, \ 132 + _status_reg, _fixed_volt) \ 133 + [MT6359_ID_##_name] = { \ 134 + .desc = { \ 135 + .name = #_name, \ 136 + .of_match = of_match_ptr(match), \ 137 + .regulators_node = of_match_ptr("regulators"), \ 138 + .ops = &mt6359_volt_fixed_ops, \ 139 + .type = REGULATOR_VOLTAGE, \ 140 + .id = MT6359_ID_##_name, \ 141 + .owner = THIS_MODULE, \ 142 + .n_voltages = 1, \ 143 + .enable_reg = _enable_reg, \ 144 + .enable_mask = BIT(0), \ 145 + .fixed_uV = (_fixed_volt), \ 146 + }, \ 147 + .status_reg = _status_reg, \ 148 + .qi = BIT(0), \ 149 + } 150 + 151 + #define MT6359P_LDO1(match, _name, _ops, _volt_table, \ 152 + _enable_reg, _enable_mask, _status_reg, \ 153 + _vsel_reg, _vsel_mask) \ 154 + [MT6359_ID_##_name] = { \ 155 + .desc = { \ 156 + .name = #_name, \ 157 + .of_match = of_match_ptr(match), \ 158 + .regulators_node = of_match_ptr("regulators"), \ 159 + .ops = &_ops, \ 160 + .type = REGULATOR_VOLTAGE, \ 161 + .id = MT6359_ID_##_name, \ 162 + .owner = THIS_MODULE, \ 163 + .n_voltages = ARRAY_SIZE(_volt_table), \ 164 + .volt_table = _volt_table, \ 165 + .vsel_reg = _vsel_reg, \ 166 + .vsel_mask = _vsel_mask, \ 167 + .enable_reg = _enable_reg, \ 168 + .enable_mask = BIT(_enable_mask), \ 169 + }, \ 170 + .status_reg = _status_reg, \ 171 + .qi = BIT(0), \ 172 + } 173 + 174 + static const struct linear_range mt_volt_range1[] = { 175 + REGULATOR_LINEAR_RANGE(800000, 0, 0x70, 12500), 176 + }; 177 + 178 + static const struct linear_range mt_volt_range2[] = { 179 + REGULATOR_LINEAR_RANGE(400000, 0, 0x7f, 6250), 180 + }; 181 + 182 + static const struct linear_range mt_volt_range3[] = { 183 + REGULATOR_LINEAR_RANGE(400000, 0, 0x70, 6250), 184 + }; 185 + 186 + static const struct linear_range mt_volt_range4[] = { 187 + REGULATOR_LINEAR_RANGE(800000, 0, 0x40, 12500), 188 + }; 189 + 190 + static const struct linear_range mt_volt_range5[] = { 191 + REGULATOR_LINEAR_RANGE(500000, 0, 0x3F, 50000), 192 + }; 193 + 194 + static const struct linear_range mt_volt_range6[] = { 195 + REGULATOR_LINEAR_RANGE(500000, 0, 0x7f, 6250), 196 + }; 197 + 198 + static const struct linear_range mt_volt_range7[] = { 199 + REGULATOR_LINEAR_RANGE(500000, 0, 0x7f, 6250), 200 + }; 201 + 202 + static const struct linear_range mt_volt_range8[] = { 203 + REGULATOR_LINEAR_RANGE(506250, 0, 0x7f, 6250), 204 + }; 205 + 206 + static const u32 vsim1_voltages[] = { 207 + 0, 0, 0, 1700000, 1800000, 0, 0, 0, 2700000, 0, 0, 3000000, 3100000, 208 + }; 209 + 210 + static const u32 vibr_voltages[] = { 211 + 1200000, 1300000, 1500000, 0, 1800000, 2000000, 0, 0, 2700000, 2800000, 212 + 0, 3000000, 0, 3300000, 213 + }; 214 + 215 + static const u32 vrf12_voltages[] = { 216 + 0, 0, 1100000, 1200000, 1300000, 217 + }; 218 + 219 + static const u32 volt18_voltages[] = { 220 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700000, 1800000, 1900000, 221 + }; 222 + 223 + static const u32 vcn13_voltages[] = { 224 + 900000, 1000000, 0, 1200000, 1300000, 225 + }; 226 + 227 + static const u32 vcn33_voltages[] = { 228 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2800000, 0, 0, 0, 3300000, 3400000, 3500000, 229 + }; 230 + 231 + static const u32 vefuse_voltages[] = { 232 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700000, 1800000, 1900000, 2000000, 233 + }; 234 + 235 + static const u32 vxo22_voltages[] = { 236 + 1800000, 0, 0, 0, 2200000, 237 + }; 238 + 239 + static const u32 vrfck_voltages[] = { 240 + 0, 0, 1500000, 0, 0, 0, 0, 1600000, 0, 0, 0, 0, 1700000, 241 + }; 242 + 243 + static const u32 vrfck_voltages_1[] = { 244 + 1240000, 1600000, 245 + }; 246 + 247 + static const u32 vio28_voltages[] = { 248 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2800000, 2900000, 3000000, 3100000, 3300000, 249 + }; 250 + 251 + static const u32 vemc_voltages[] = { 252 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2900000, 3000000, 0, 3300000, 253 + }; 254 + 255 + static const u32 vemc_voltages_1[] = { 256 + 0, 0, 0, 0, 0, 0, 0, 0, 2500000, 2800000, 2900000, 3000000, 3100000, 257 + 3300000, 258 + }; 259 + 260 + static const u32 va12_voltages[] = { 261 + 0, 0, 0, 0, 0, 0, 1200000, 1300000, 262 + }; 263 + 264 + static const u32 va09_voltages[] = { 265 + 0, 0, 800000, 900000, 0, 0, 1200000, 266 + }; 267 + 268 + static const u32 vrf18_voltages[] = { 269 + 0, 0, 0, 0, 0, 1700000, 1800000, 1810000, 270 + }; 271 + 272 + static const u32 vbbck_voltages[] = { 273 + 0, 0, 0, 0, 1100000, 0, 0, 0, 1150000, 0, 0, 0, 1200000, 274 + }; 275 + 276 + static const u32 vsim2_voltages[] = { 277 + 0, 0, 0, 1700000, 1800000, 0, 0, 0, 2700000, 0, 0, 3000000, 3100000, 278 + }; 279 + 280 + static inline unsigned int mt6359_map_mode(unsigned int mode) 281 + { 282 + switch (mode) { 283 + case MT6359_BUCK_MODE_NORMAL: 284 + return REGULATOR_MODE_NORMAL; 285 + case MT6359_BUCK_MODE_FORCE_PWM: 286 + return REGULATOR_MODE_FAST; 287 + case MT6359_BUCK_MODE_LP: 288 + return REGULATOR_MODE_IDLE; 289 + default: 290 + return REGULATOR_MODE_INVALID; 291 + } 292 + } 293 + 294 + static int mt6359_get_status(struct regulator_dev *rdev) 295 + { 296 + int ret; 297 + u32 regval; 298 + struct mt6359_regulator_info *info = rdev_get_drvdata(rdev); 299 + 300 + ret = regmap_read(rdev->regmap, info->status_reg, &regval); 301 + if (ret != 0) { 302 + dev_err(&rdev->dev, "Failed to get enable reg: %d\n", ret); 303 + return ret; 304 + } 305 + 306 + if (regval & info->qi) 307 + return REGULATOR_STATUS_ON; 308 + else 309 + return REGULATOR_STATUS_OFF; 310 + } 311 + 312 + static unsigned int mt6359_regulator_get_mode(struct regulator_dev *rdev) 313 + { 314 + struct mt6359_regulator_info *info = rdev_get_drvdata(rdev); 315 + int ret, regval; 316 + 317 + ret = regmap_read(rdev->regmap, info->modeset_reg, &regval); 318 + if (ret != 0) { 319 + dev_err(&rdev->dev, 320 + "Failed to get mt6359 buck mode: %d\n", ret); 321 + return ret; 322 + } 323 + 324 + if ((regval & info->modeset_mask) >> info->modeset_shift == 325 + MT6359_BUCK_MODE_FORCE_PWM) 326 + return REGULATOR_MODE_FAST; 327 + 328 + ret = regmap_read(rdev->regmap, info->lp_mode_reg, &regval); 329 + if (ret != 0) { 330 + dev_err(&rdev->dev, 331 + "Failed to get mt6359 buck lp mode: %d\n", ret); 332 + return ret; 333 + } 334 + 335 + if (regval & info->lp_mode_mask) 336 + return REGULATOR_MODE_IDLE; 337 + else 338 + return REGULATOR_MODE_NORMAL; 339 + } 340 + 341 + static int mt6359_regulator_set_mode(struct regulator_dev *rdev, 342 + unsigned int mode) 343 + { 344 + struct mt6359_regulator_info *info = rdev_get_drvdata(rdev); 345 + int ret = 0, val; 346 + int curr_mode; 347 + 348 + curr_mode = mt6359_regulator_get_mode(rdev); 349 + switch (mode) { 350 + case REGULATOR_MODE_FAST: 351 + val = MT6359_BUCK_MODE_FORCE_PWM; 352 + val <<= info->modeset_shift; 353 + ret = regmap_update_bits(rdev->regmap, 354 + info->modeset_reg, 355 + info->modeset_mask, 356 + val); 357 + break; 358 + case REGULATOR_MODE_NORMAL: 359 + if (curr_mode == REGULATOR_MODE_FAST) { 360 + val = MT6359_BUCK_MODE_AUTO; 361 + val <<= info->modeset_shift; 362 + ret = regmap_update_bits(rdev->regmap, 363 + info->modeset_reg, 364 + info->modeset_mask, 365 + val); 366 + } else if (curr_mode == REGULATOR_MODE_IDLE) { 367 + val = MT6359_BUCK_MODE_NORMAL; 368 + val <<= info->lp_mode_shift; 369 + ret = regmap_update_bits(rdev->regmap, 370 + info->lp_mode_reg, 371 + info->lp_mode_mask, 372 + val); 373 + udelay(100); 374 + } 375 + break; 376 + case REGULATOR_MODE_IDLE: 377 + val = MT6359_BUCK_MODE_LP >> 1; 378 + val <<= info->lp_mode_shift; 379 + ret = regmap_update_bits(rdev->regmap, 380 + info->lp_mode_reg, 381 + info->lp_mode_mask, 382 + val); 383 + break; 384 + default: 385 + return -EINVAL; 386 + } 387 + 388 + if (ret != 0) { 389 + dev_err(&rdev->dev, 390 + "Failed to set mt6359 buck mode: %d\n", ret); 391 + } 392 + 393 + return ret; 394 + } 395 + 396 + static int mt6359p_vemc_set_voltage_sel(struct regulator_dev *rdev, 397 + u32 sel) 398 + { 399 + struct mt6359_regulator_info *info = rdev_get_drvdata(rdev); 400 + int ret; 401 + u32 val = 0; 402 + 403 + sel <<= ffs(info->desc.vsel_mask) - 1; 404 + ret = regmap_write(rdev->regmap, MT6359P_TMA_KEY_ADDR, TMA_KEY); 405 + if (ret) 406 + return ret; 407 + 408 + ret = regmap_read(rdev->regmap, MT6359P_VM_MODE_ADDR, &val); 409 + if (ret) 410 + return ret; 411 + 412 + switch (val) { 413 + case 0: 414 + /* If HW trapping is 0, use VEMC_VOSEL_0 */ 415 + ret = regmap_update_bits(rdev->regmap, 416 + info->desc.vsel_reg, 417 + info->desc.vsel_mask, sel); 418 + break; 419 + case 1: 420 + /* If HW trapping is 1, use VEMC_VOSEL_1 */ 421 + ret = regmap_update_bits(rdev->regmap, 422 + info->desc.vsel_reg + 0x2, 423 + info->desc.vsel_mask, sel); 424 + break; 425 + default: 426 + return -EINVAL; 427 + } 428 + 429 + if (ret) 430 + return ret; 431 + 432 + ret = regmap_write(rdev->regmap, MT6359P_TMA_KEY_ADDR, 0); 433 + return ret; 434 + } 435 + 436 + static int mt6359p_vemc_get_voltage_sel(struct regulator_dev *rdev) 437 + { 438 + struct mt6359_regulator_info *info = rdev_get_drvdata(rdev); 439 + int ret; 440 + u32 val = 0; 441 + 442 + ret = regmap_read(rdev->regmap, MT6359P_VM_MODE_ADDR, &val); 443 + if (ret) 444 + return ret; 445 + switch (val) { 446 + case 0: 447 + /* If HW trapping is 0, use VEMC_VOSEL_0 */ 448 + ret = regmap_read(rdev->regmap, 449 + info->desc.vsel_reg, &val); 450 + break; 451 + case 1: 452 + /* If HW trapping is 1, use VEMC_VOSEL_1 */ 453 + ret = regmap_read(rdev->regmap, 454 + info->desc.vsel_reg + 0x2, &val); 455 + break; 456 + default: 457 + return -EINVAL; 458 + } 459 + if (ret) 460 + return ret; 461 + 462 + val &= info->desc.vsel_mask; 463 + val >>= ffs(info->desc.vsel_mask) - 1; 464 + 465 + return val; 466 + } 467 + 468 + static const struct regulator_ops mt6359_volt_range_ops = { 469 + .list_voltage = regulator_list_voltage_linear_range, 470 + .map_voltage = regulator_map_voltage_linear_range, 471 + .set_voltage_sel = regulator_set_voltage_sel_regmap, 472 + .get_voltage_sel = regulator_get_voltage_sel_regmap, 473 + .set_voltage_time_sel = regulator_set_voltage_time_sel, 474 + .enable = regulator_enable_regmap, 475 + .disable = regulator_disable_regmap, 476 + .is_enabled = regulator_is_enabled_regmap, 477 + .get_status = mt6359_get_status, 478 + .set_mode = mt6359_regulator_set_mode, 479 + .get_mode = mt6359_regulator_get_mode, 480 + }; 481 + 482 + static const struct regulator_ops mt6359_volt_table_ops = { 483 + .list_voltage = regulator_list_voltage_table, 484 + .map_voltage = regulator_map_voltage_iterate, 485 + .set_voltage_sel = regulator_set_voltage_sel_regmap, 486 + .get_voltage_sel = regulator_get_voltage_sel_regmap, 487 + .set_voltage_time_sel = regulator_set_voltage_time_sel, 488 + .enable = regulator_enable_regmap, 489 + .disable = regulator_disable_regmap, 490 + .is_enabled = regulator_is_enabled_regmap, 491 + .get_status = mt6359_get_status, 492 + }; 493 + 494 + static const struct regulator_ops mt6359_volt_fixed_ops = { 495 + .enable = regulator_enable_regmap, 496 + .disable = regulator_disable_regmap, 497 + .is_enabled = regulator_is_enabled_regmap, 498 + .get_status = mt6359_get_status, 499 + }; 500 + 501 + static const struct regulator_ops mt6359p_vemc_ops = { 502 + .list_voltage = regulator_list_voltage_table, 503 + .map_voltage = regulator_map_voltage_iterate, 504 + .set_voltage_sel = mt6359p_vemc_set_voltage_sel, 505 + .get_voltage_sel = mt6359p_vemc_get_voltage_sel, 506 + .set_voltage_time_sel = regulator_set_voltage_time_sel, 507 + .enable = regulator_enable_regmap, 508 + .disable = regulator_disable_regmap, 509 + .is_enabled = regulator_is_enabled_regmap, 510 + .get_status = mt6359_get_status, 511 + }; 512 + 513 + /* The array is indexed by id(MT6359_ID_XXX) */ 514 + static struct mt6359_regulator_info mt6359_regulators[] = { 515 + MT6359_BUCK("buck_vs1", VS1, 800000, 2200000, 12500, 0, 516 + mt_volt_range1, MT6359_RG_BUCK_VS1_EN_ADDR, 517 + MT6359_DA_VS1_EN_ADDR, MT6359_RG_BUCK_VS1_VOSEL_ADDR, 518 + MT6359_RG_BUCK_VS1_VOSEL_MASK << 519 + MT6359_RG_BUCK_VS1_VOSEL_SHIFT, 520 + MT6359_RG_BUCK_VS1_LP_ADDR, MT6359_RG_BUCK_VS1_LP_SHIFT, 521 + MT6359_RG_VS1_FPWM_ADDR, MT6359_RG_VS1_FPWM_SHIFT), 522 + MT6359_BUCK("buck_vgpu11", VGPU11, 400000, 1193750, 6250, 0, 523 + mt_volt_range2, MT6359_RG_BUCK_VGPU11_EN_ADDR, 524 + MT6359_DA_VGPU11_EN_ADDR, MT6359_RG_BUCK_VGPU11_VOSEL_ADDR, 525 + MT6359_RG_BUCK_VGPU11_VOSEL_MASK << 526 + MT6359_RG_BUCK_VGPU11_VOSEL_SHIFT, 527 + MT6359_RG_BUCK_VGPU11_LP_ADDR, 528 + MT6359_RG_BUCK_VGPU11_LP_SHIFT, 529 + MT6359_RG_VGPU11_FCCM_ADDR, MT6359_RG_VGPU11_FCCM_SHIFT), 530 + MT6359_BUCK("buck_vmodem", VMODEM, 400000, 1100000, 6250, 0, 531 + mt_volt_range3, MT6359_RG_BUCK_VMODEM_EN_ADDR, 532 + MT6359_DA_VMODEM_EN_ADDR, MT6359_RG_BUCK_VMODEM_VOSEL_ADDR, 533 + MT6359_RG_BUCK_VMODEM_VOSEL_MASK << 534 + MT6359_RG_BUCK_VMODEM_VOSEL_SHIFT, 535 + MT6359_RG_BUCK_VMODEM_LP_ADDR, 536 + MT6359_RG_BUCK_VMODEM_LP_SHIFT, 537 + MT6359_RG_VMODEM_FCCM_ADDR, MT6359_RG_VMODEM_FCCM_SHIFT), 538 + MT6359_BUCK("buck_vpu", VPU, 400000, 1193750, 6250, 0, 539 + mt_volt_range2, MT6359_RG_BUCK_VPU_EN_ADDR, 540 + MT6359_DA_VPU_EN_ADDR, MT6359_RG_BUCK_VPU_VOSEL_ADDR, 541 + MT6359_RG_BUCK_VPU_VOSEL_MASK << 542 + MT6359_RG_BUCK_VPU_VOSEL_SHIFT, 543 + MT6359_RG_BUCK_VPU_LP_ADDR, MT6359_RG_BUCK_VPU_LP_SHIFT, 544 + MT6359_RG_VPU_FCCM_ADDR, MT6359_RG_VPU_FCCM_SHIFT), 545 + MT6359_BUCK("buck_vcore", VCORE, 400000, 1193750, 6250, 0, 546 + mt_volt_range2, MT6359_RG_BUCK_VCORE_EN_ADDR, 547 + MT6359_DA_VCORE_EN_ADDR, MT6359_RG_BUCK_VCORE_VOSEL_ADDR, 548 + MT6359_RG_BUCK_VCORE_VOSEL_MASK << 549 + MT6359_RG_BUCK_VCORE_VOSEL_SHIFT, 550 + MT6359_RG_BUCK_VCORE_LP_ADDR, MT6359_RG_BUCK_VCORE_LP_SHIFT, 551 + MT6359_RG_VCORE_FCCM_ADDR, MT6359_RG_VCORE_FCCM_SHIFT), 552 + MT6359_BUCK("buck_vs2", VS2, 800000, 1600000, 12500, 0, 553 + mt_volt_range4, MT6359_RG_BUCK_VS2_EN_ADDR, 554 + MT6359_DA_VS2_EN_ADDR, MT6359_RG_BUCK_VS2_VOSEL_ADDR, 555 + MT6359_RG_BUCK_VS2_VOSEL_MASK << 556 + MT6359_RG_BUCK_VS2_VOSEL_SHIFT, 557 + MT6359_RG_BUCK_VS2_LP_ADDR, MT6359_RG_BUCK_VS2_LP_SHIFT, 558 + MT6359_RG_VS2_FPWM_ADDR, MT6359_RG_VS2_FPWM_SHIFT), 559 + MT6359_BUCK("buck_vpa", VPA, 500000, 3650000, 50000, 0, 560 + mt_volt_range5, MT6359_RG_BUCK_VPA_EN_ADDR, 561 + MT6359_DA_VPA_EN_ADDR, MT6359_RG_BUCK_VPA_VOSEL_ADDR, 562 + MT6359_RG_BUCK_VPA_VOSEL_MASK << 563 + MT6359_RG_BUCK_VPA_VOSEL_SHIFT, 564 + MT6359_RG_BUCK_VPA_LP_ADDR, MT6359_RG_BUCK_VPA_LP_SHIFT, 565 + MT6359_RG_VPA_MODESET_ADDR, MT6359_RG_VPA_MODESET_SHIFT), 566 + MT6359_BUCK("buck_vproc2", VPROC2, 400000, 1193750, 6250, 0, 567 + mt_volt_range2, MT6359_RG_BUCK_VPROC2_EN_ADDR, 568 + MT6359_DA_VPROC2_EN_ADDR, MT6359_RG_BUCK_VPROC2_VOSEL_ADDR, 569 + MT6359_RG_BUCK_VPROC2_VOSEL_MASK << 570 + MT6359_RG_BUCK_VPROC2_VOSEL_SHIFT, 571 + MT6359_RG_BUCK_VPROC2_LP_ADDR, 572 + MT6359_RG_BUCK_VPROC2_LP_SHIFT, 573 + MT6359_RG_VPROC2_FCCM_ADDR, MT6359_RG_VPROC2_FCCM_SHIFT), 574 + MT6359_BUCK("buck_vproc1", VPROC1, 400000, 1193750, 6250, 0, 575 + mt_volt_range2, MT6359_RG_BUCK_VPROC1_EN_ADDR, 576 + MT6359_DA_VPROC1_EN_ADDR, MT6359_RG_BUCK_VPROC1_VOSEL_ADDR, 577 + MT6359_RG_BUCK_VPROC1_VOSEL_MASK << 578 + MT6359_RG_BUCK_VPROC1_VOSEL_SHIFT, 579 + MT6359_RG_BUCK_VPROC1_LP_ADDR, 580 + MT6359_RG_BUCK_VPROC1_LP_SHIFT, 581 + MT6359_RG_VPROC1_FCCM_ADDR, MT6359_RG_VPROC1_FCCM_SHIFT), 582 + MT6359_BUCK("buck_vcore_sshub", VCORE_SSHUB, 400000, 1193750, 6250, 0, 583 + mt_volt_range2, MT6359_RG_BUCK_VCORE_SSHUB_EN_ADDR, 584 + MT6359_DA_VCORE_EN_ADDR, 585 + MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_ADDR, 586 + MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_MASK << 587 + MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_SHIFT, 588 + MT6359_RG_BUCK_VCORE_LP_ADDR, MT6359_RG_BUCK_VCORE_LP_SHIFT, 589 + MT6359_RG_VCORE_FCCM_ADDR, MT6359_RG_VCORE_FCCM_SHIFT), 590 + MT6359_REG_FIXED("ldo_vaud18", VAUD18, MT6359_RG_LDO_VAUD18_EN_ADDR, 591 + MT6359_DA_VAUD18_B_EN_ADDR, 1800000), 592 + MT6359_LDO("ldo_vsim1", VSIM1, vsim1_voltages, 593 + MT6359_RG_LDO_VSIM1_EN_ADDR, MT6359_RG_LDO_VSIM1_EN_SHIFT, 594 + MT6359_DA_VSIM1_B_EN_ADDR, MT6359_RG_VSIM1_VOSEL_ADDR, 595 + MT6359_RG_VSIM1_VOSEL_MASK << MT6359_RG_VSIM1_VOSEL_SHIFT, 596 + 480), 597 + MT6359_LDO("ldo_vibr", VIBR, vibr_voltages, 598 + MT6359_RG_LDO_VIBR_EN_ADDR, MT6359_RG_LDO_VIBR_EN_SHIFT, 599 + MT6359_DA_VIBR_B_EN_ADDR, MT6359_RG_VIBR_VOSEL_ADDR, 600 + MT6359_RG_VIBR_VOSEL_MASK << MT6359_RG_VIBR_VOSEL_SHIFT, 601 + 240), 602 + MT6359_LDO("ldo_vrf12", VRF12, vrf12_voltages, 603 + MT6359_RG_LDO_VRF12_EN_ADDR, MT6359_RG_LDO_VRF12_EN_SHIFT, 604 + MT6359_DA_VRF12_B_EN_ADDR, MT6359_RG_VRF12_VOSEL_ADDR, 605 + MT6359_RG_VRF12_VOSEL_MASK << MT6359_RG_VRF12_VOSEL_SHIFT, 606 + 120), 607 + MT6359_REG_FIXED("ldo_vusb", VUSB, MT6359_RG_LDO_VUSB_EN_0_ADDR, 608 + MT6359_DA_VUSB_B_EN_ADDR, 3000000), 609 + MT6359_LDO_LINEAR("ldo_vsram_proc2", VSRAM_PROC2, 500000, 1293750, 6250, 610 + 0, mt_volt_range6, MT6359_RG_LDO_VSRAM_PROC2_EN_ADDR, 611 + MT6359_DA_VSRAM_PROC2_B_EN_ADDR, 612 + MT6359_RG_LDO_VSRAM_PROC2_VOSEL_ADDR, 613 + MT6359_RG_LDO_VSRAM_PROC2_VOSEL_MASK << 614 + MT6359_RG_LDO_VSRAM_PROC2_VOSEL_SHIFT), 615 + MT6359_LDO("ldo_vio18", VIO18, volt18_voltages, 616 + MT6359_RG_LDO_VIO18_EN_ADDR, MT6359_RG_LDO_VIO18_EN_SHIFT, 617 + MT6359_DA_VIO18_B_EN_ADDR, MT6359_RG_VIO18_VOSEL_ADDR, 618 + MT6359_RG_VIO18_VOSEL_MASK << MT6359_RG_VIO18_VOSEL_SHIFT, 619 + 960), 620 + MT6359_LDO("ldo_vcamio", VCAMIO, volt18_voltages, 621 + MT6359_RG_LDO_VCAMIO_EN_ADDR, MT6359_RG_LDO_VCAMIO_EN_SHIFT, 622 + MT6359_DA_VCAMIO_B_EN_ADDR, MT6359_RG_VCAMIO_VOSEL_ADDR, 623 + MT6359_RG_VCAMIO_VOSEL_MASK << MT6359_RG_VCAMIO_VOSEL_SHIFT, 624 + 1290), 625 + MT6359_REG_FIXED("ldo_vcn18", VCN18, MT6359_RG_LDO_VCN18_EN_ADDR, 626 + MT6359_DA_VCN18_B_EN_ADDR, 1800000), 627 + MT6359_REG_FIXED("ldo_vfe28", VFE28, MT6359_RG_LDO_VFE28_EN_ADDR, 628 + MT6359_DA_VFE28_B_EN_ADDR, 2800000), 629 + MT6359_LDO("ldo_vcn13", VCN13, vcn13_voltages, 630 + MT6359_RG_LDO_VCN13_EN_ADDR, MT6359_RG_LDO_VCN13_EN_SHIFT, 631 + MT6359_DA_VCN13_B_EN_ADDR, MT6359_RG_VCN13_VOSEL_ADDR, 632 + MT6359_RG_VCN13_VOSEL_MASK << MT6359_RG_VCN13_VOSEL_SHIFT, 633 + 240), 634 + MT6359_LDO("ldo_vcn33_1_bt", VCN33_1_BT, vcn33_voltages, 635 + MT6359_RG_LDO_VCN33_1_EN_0_ADDR, 636 + MT6359_RG_LDO_VCN33_1_EN_0_SHIFT, 637 + MT6359_DA_VCN33_1_B_EN_ADDR, MT6359_RG_VCN33_1_VOSEL_ADDR, 638 + MT6359_RG_VCN33_1_VOSEL_MASK << 639 + MT6359_RG_VCN33_1_VOSEL_SHIFT, 240), 640 + MT6359_LDO("ldo_vcn33_1_wifi", VCN33_1_WIFI, vcn33_voltages, 641 + MT6359_RG_LDO_VCN33_1_EN_1_ADDR, 642 + MT6359_RG_LDO_VCN33_1_EN_1_SHIFT, 643 + MT6359_DA_VCN33_1_B_EN_ADDR, MT6359_RG_VCN33_1_VOSEL_ADDR, 644 + MT6359_RG_VCN33_1_VOSEL_MASK << 645 + MT6359_RG_VCN33_1_VOSEL_SHIFT, 240), 646 + MT6359_REG_FIXED("ldo_vaux18", VAUX18, MT6359_RG_LDO_VAUX18_EN_ADDR, 647 + MT6359_DA_VAUX18_B_EN_ADDR, 1800000), 648 + MT6359_LDO_LINEAR("ldo_vsram_others", VSRAM_OTHERS, 500000, 1293750, 649 + 6250, 0, mt_volt_range6, 650 + MT6359_RG_LDO_VSRAM_OTHERS_EN_ADDR, 651 + MT6359_DA_VSRAM_OTHERS_B_EN_ADDR, 652 + MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_ADDR, 653 + MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_MASK << 654 + MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_SHIFT), 655 + MT6359_LDO("ldo_vefuse", VEFUSE, vefuse_voltages, 656 + MT6359_RG_LDO_VEFUSE_EN_ADDR, MT6359_RG_LDO_VEFUSE_EN_SHIFT, 657 + MT6359_DA_VEFUSE_B_EN_ADDR, MT6359_RG_VEFUSE_VOSEL_ADDR, 658 + MT6359_RG_VEFUSE_VOSEL_MASK << MT6359_RG_VEFUSE_VOSEL_SHIFT, 659 + 240), 660 + MT6359_LDO("ldo_vxo22", VXO22, vxo22_voltages, 661 + MT6359_RG_LDO_VXO22_EN_ADDR, MT6359_RG_LDO_VXO22_EN_SHIFT, 662 + MT6359_DA_VXO22_B_EN_ADDR, MT6359_RG_VXO22_VOSEL_ADDR, 663 + MT6359_RG_VXO22_VOSEL_MASK << MT6359_RG_VXO22_VOSEL_SHIFT, 664 + 120), 665 + MT6359_LDO("ldo_vrfck", VRFCK, vrfck_voltages, 666 + MT6359_RG_LDO_VRFCK_EN_ADDR, MT6359_RG_LDO_VRFCK_EN_SHIFT, 667 + MT6359_DA_VRFCK_B_EN_ADDR, MT6359_RG_VRFCK_VOSEL_ADDR, 668 + MT6359_RG_VRFCK_VOSEL_MASK << MT6359_RG_VRFCK_VOSEL_SHIFT, 669 + 480), 670 + MT6359_REG_FIXED("ldo_vbif28", VBIF28, MT6359_RG_LDO_VBIF28_EN_ADDR, 671 + MT6359_DA_VBIF28_B_EN_ADDR, 2800000), 672 + MT6359_LDO("ldo_vio28", VIO28, vio28_voltages, 673 + MT6359_RG_LDO_VIO28_EN_ADDR, MT6359_RG_LDO_VIO28_EN_SHIFT, 674 + MT6359_DA_VIO28_B_EN_ADDR, MT6359_RG_VIO28_VOSEL_ADDR, 675 + MT6359_RG_VIO28_VOSEL_MASK << MT6359_RG_VIO28_VOSEL_SHIFT, 676 + 240), 677 + MT6359_LDO("ldo_vemc", VEMC, vemc_voltages, 678 + MT6359_RG_LDO_VEMC_EN_ADDR, MT6359_RG_LDO_VEMC_EN_SHIFT, 679 + MT6359_DA_VEMC_B_EN_ADDR, MT6359_RG_VEMC_VOSEL_ADDR, 680 + MT6359_RG_VEMC_VOSEL_MASK << MT6359_RG_VEMC_VOSEL_SHIFT, 681 + 240), 682 + MT6359_LDO("ldo_vcn33_2_bt", VCN33_2_BT, vcn33_voltages, 683 + MT6359_RG_LDO_VCN33_2_EN_0_ADDR, 684 + MT6359_RG_LDO_VCN33_2_EN_0_SHIFT, 685 + MT6359_DA_VCN33_2_B_EN_ADDR, MT6359_RG_VCN33_2_VOSEL_ADDR, 686 + MT6359_RG_VCN33_2_VOSEL_MASK << 687 + MT6359_RG_VCN33_2_VOSEL_SHIFT, 240), 688 + MT6359_LDO("ldo_vcn33_2_wifi", VCN33_2_WIFI, vcn33_voltages, 689 + MT6359_RG_LDO_VCN33_2_EN_1_ADDR, 690 + MT6359_RG_LDO_VCN33_2_EN_1_SHIFT, 691 + MT6359_DA_VCN33_2_B_EN_ADDR, MT6359_RG_VCN33_2_VOSEL_ADDR, 692 + MT6359_RG_VCN33_2_VOSEL_MASK << 693 + MT6359_RG_VCN33_2_VOSEL_SHIFT, 240), 694 + MT6359_LDO("ldo_va12", VA12, va12_voltages, 695 + MT6359_RG_LDO_VA12_EN_ADDR, MT6359_RG_LDO_VA12_EN_SHIFT, 696 + MT6359_DA_VA12_B_EN_ADDR, MT6359_RG_VA12_VOSEL_ADDR, 697 + MT6359_RG_VA12_VOSEL_MASK << MT6359_RG_VA12_VOSEL_SHIFT, 698 + 240), 699 + MT6359_LDO("ldo_va09", VA09, va09_voltages, 700 + MT6359_RG_LDO_VA09_EN_ADDR, MT6359_RG_LDO_VA09_EN_SHIFT, 701 + MT6359_DA_VA09_B_EN_ADDR, MT6359_RG_VA09_VOSEL_ADDR, 702 + MT6359_RG_VA09_VOSEL_MASK << MT6359_RG_VA09_VOSEL_SHIFT, 703 + 240), 704 + MT6359_LDO("ldo_vrf18", VRF18, vrf18_voltages, 705 + MT6359_RG_LDO_VRF18_EN_ADDR, MT6359_RG_LDO_VRF18_EN_SHIFT, 706 + MT6359_DA_VRF18_B_EN_ADDR, MT6359_RG_VRF18_VOSEL_ADDR, 707 + MT6359_RG_VRF18_VOSEL_MASK << MT6359_RG_VRF18_VOSEL_SHIFT, 708 + 120), 709 + MT6359_LDO_LINEAR("ldo_vsram_md", VSRAM_MD, 500000, 1100000, 6250, 710 + 0, mt_volt_range7, MT6359_RG_LDO_VSRAM_MD_EN_ADDR, 711 + MT6359_DA_VSRAM_MD_B_EN_ADDR, 712 + MT6359_RG_LDO_VSRAM_MD_VOSEL_ADDR, 713 + MT6359_RG_LDO_VSRAM_MD_VOSEL_MASK << 714 + MT6359_RG_LDO_VSRAM_MD_VOSEL_SHIFT), 715 + MT6359_LDO("ldo_vufs", VUFS, volt18_voltages, 716 + MT6359_RG_LDO_VUFS_EN_ADDR, MT6359_RG_LDO_VUFS_EN_SHIFT, 717 + MT6359_DA_VUFS_B_EN_ADDR, MT6359_RG_VUFS_VOSEL_ADDR, 718 + MT6359_RG_VUFS_VOSEL_MASK << MT6359_RG_VUFS_VOSEL_SHIFT, 719 + 1920), 720 + MT6359_LDO("ldo_vm18", VM18, volt18_voltages, 721 + MT6359_RG_LDO_VM18_EN_ADDR, MT6359_RG_LDO_VM18_EN_SHIFT, 722 + MT6359_DA_VM18_B_EN_ADDR, MT6359_RG_VM18_VOSEL_ADDR, 723 + MT6359_RG_VM18_VOSEL_MASK << MT6359_RG_VM18_VOSEL_SHIFT, 724 + 1920), 725 + MT6359_LDO("ldo_vbbck", VBBCK, vbbck_voltages, 726 + MT6359_RG_LDO_VBBCK_EN_ADDR, MT6359_RG_LDO_VBBCK_EN_SHIFT, 727 + MT6359_DA_VBBCK_B_EN_ADDR, MT6359_RG_VBBCK_VOSEL_ADDR, 728 + MT6359_RG_VBBCK_VOSEL_MASK << MT6359_RG_VBBCK_VOSEL_SHIFT, 729 + 240), 730 + MT6359_LDO_LINEAR("ldo_vsram_proc1", VSRAM_PROC1, 500000, 1293750, 6250, 731 + 0, mt_volt_range6, MT6359_RG_LDO_VSRAM_PROC1_EN_ADDR, 732 + MT6359_DA_VSRAM_PROC1_B_EN_ADDR, 733 + MT6359_RG_LDO_VSRAM_PROC1_VOSEL_ADDR, 734 + MT6359_RG_LDO_VSRAM_PROC1_VOSEL_MASK << 735 + MT6359_RG_LDO_VSRAM_PROC1_VOSEL_SHIFT), 736 + MT6359_LDO("ldo_vsim2", VSIM2, vsim2_voltages, 737 + MT6359_RG_LDO_VSIM2_EN_ADDR, MT6359_RG_LDO_VSIM2_EN_SHIFT, 738 + MT6359_DA_VSIM2_B_EN_ADDR, MT6359_RG_VSIM2_VOSEL_ADDR, 739 + MT6359_RG_VSIM2_VOSEL_MASK << MT6359_RG_VSIM2_VOSEL_SHIFT, 740 + 480), 741 + MT6359_LDO_LINEAR("ldo_vsram_others_sshub", VSRAM_OTHERS_SSHUB, 742 + 500000, 1293750, 6250, 0, mt_volt_range6, 743 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_EN_ADDR, 744 + MT6359_DA_VSRAM_OTHERS_B_EN_ADDR, 745 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_ADDR, 746 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_MASK << 747 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_SHIFT), 748 + }; 749 + 750 + static struct mt6359_regulator_info mt6359p_regulators[] = { 751 + MT6359_BUCK("buck_vs1", VS1, 800000, 2200000, 12500, 0, 752 + mt_volt_range1, MT6359_RG_BUCK_VS1_EN_ADDR, 753 + MT6359_DA_VS1_EN_ADDR, MT6359_RG_BUCK_VS1_VOSEL_ADDR, 754 + MT6359_RG_BUCK_VS1_VOSEL_MASK << 755 + MT6359_RG_BUCK_VS1_VOSEL_SHIFT, 756 + MT6359_RG_BUCK_VS1_LP_ADDR, MT6359_RG_BUCK_VS1_LP_SHIFT, 757 + MT6359_RG_VS1_FPWM_ADDR, MT6359_RG_VS1_FPWM_SHIFT), 758 + MT6359_BUCK("buck_vgpu11", VGPU11, 400000, 1193750, 6250, 0, 759 + mt_volt_range2, MT6359_RG_BUCK_VGPU11_EN_ADDR, 760 + MT6359_DA_VGPU11_EN_ADDR, MT6359P_RG_BUCK_VGPU11_VOSEL_ADDR, 761 + MT6359_RG_BUCK_VGPU11_VOSEL_MASK << 762 + MT6359_RG_BUCK_VGPU11_VOSEL_SHIFT, 763 + MT6359_RG_BUCK_VGPU11_LP_ADDR, 764 + MT6359_RG_BUCK_VGPU11_LP_SHIFT, 765 + MT6359_RG_VGPU11_FCCM_ADDR, MT6359_RG_VGPU11_FCCM_SHIFT), 766 + MT6359_BUCK("buck_vmodem", VMODEM, 400000, 1100000, 6250, 0, 767 + mt_volt_range3, MT6359_RG_BUCK_VMODEM_EN_ADDR, 768 + MT6359_DA_VMODEM_EN_ADDR, MT6359_RG_BUCK_VMODEM_VOSEL_ADDR, 769 + MT6359_RG_BUCK_VMODEM_VOSEL_MASK << 770 + MT6359_RG_BUCK_VMODEM_VOSEL_SHIFT, 771 + MT6359_RG_BUCK_VMODEM_LP_ADDR, 772 + MT6359_RG_BUCK_VMODEM_LP_SHIFT, 773 + MT6359_RG_VMODEM_FCCM_ADDR, MT6359_RG_VMODEM_FCCM_SHIFT), 774 + MT6359_BUCK("buck_vpu", VPU, 400000, 1193750, 6250, 0, 775 + mt_volt_range2, MT6359_RG_BUCK_VPU_EN_ADDR, 776 + MT6359_DA_VPU_EN_ADDR, MT6359_RG_BUCK_VPU_VOSEL_ADDR, 777 + MT6359_RG_BUCK_VPU_VOSEL_MASK << 778 + MT6359_RG_BUCK_VPU_VOSEL_SHIFT, 779 + MT6359_RG_BUCK_VPU_LP_ADDR, MT6359_RG_BUCK_VPU_LP_SHIFT, 780 + MT6359_RG_VPU_FCCM_ADDR, MT6359_RG_VPU_FCCM_SHIFT), 781 + MT6359_BUCK("buck_vcore", VCORE, 506250, 1300000, 6250, 0, 782 + mt_volt_range8, MT6359_RG_BUCK_VCORE_EN_ADDR, 783 + MT6359_DA_VCORE_EN_ADDR, MT6359P_RG_BUCK_VCORE_VOSEL_ADDR, 784 + MT6359_RG_BUCK_VCORE_VOSEL_MASK << 785 + MT6359_RG_BUCK_VCORE_VOSEL_SHIFT, 786 + MT6359_RG_BUCK_VCORE_LP_ADDR, MT6359_RG_BUCK_VCORE_LP_SHIFT, 787 + MT6359_RG_VCORE_FCCM_ADDR, MT6359_RG_VCORE_FCCM_SHIFT), 788 + MT6359_BUCK("buck_vs2", VS2, 800000, 1600000, 12500, 0, 789 + mt_volt_range4, MT6359_RG_BUCK_VS2_EN_ADDR, 790 + MT6359_DA_VS2_EN_ADDR, MT6359_RG_BUCK_VS2_VOSEL_ADDR, 791 + MT6359_RG_BUCK_VS2_VOSEL_MASK << 792 + MT6359_RG_BUCK_VS2_VOSEL_SHIFT, 793 + MT6359_RG_BUCK_VS2_LP_ADDR, MT6359_RG_BUCK_VS2_LP_SHIFT, 794 + MT6359_RG_VS2_FPWM_ADDR, MT6359_RG_VS2_FPWM_SHIFT), 795 + MT6359_BUCK("buck_vpa", VPA, 500000, 3650000, 50000, 0, 796 + mt_volt_range5, MT6359_RG_BUCK_VPA_EN_ADDR, 797 + MT6359_DA_VPA_EN_ADDR, MT6359_RG_BUCK_VPA_VOSEL_ADDR, 798 + MT6359_RG_BUCK_VPA_VOSEL_MASK << 799 + MT6359_RG_BUCK_VPA_VOSEL_SHIFT, 800 + MT6359_RG_BUCK_VPA_LP_ADDR, MT6359_RG_BUCK_VPA_LP_SHIFT, 801 + MT6359_RG_VPA_MODESET_ADDR, MT6359_RG_VPA_MODESET_SHIFT), 802 + MT6359_BUCK("buck_vproc2", VPROC2, 400000, 1193750, 6250, 0, 803 + mt_volt_range2, MT6359_RG_BUCK_VPROC2_EN_ADDR, 804 + MT6359_DA_VPROC2_EN_ADDR, MT6359_RG_BUCK_VPROC2_VOSEL_ADDR, 805 + MT6359_RG_BUCK_VPROC2_VOSEL_MASK << 806 + MT6359_RG_BUCK_VPROC2_VOSEL_SHIFT, 807 + MT6359_RG_BUCK_VPROC2_LP_ADDR, 808 + MT6359_RG_BUCK_VPROC2_LP_SHIFT, 809 + MT6359_RG_VPROC2_FCCM_ADDR, MT6359_RG_VPROC2_FCCM_SHIFT), 810 + MT6359_BUCK("buck_vproc1", VPROC1, 400000, 1193750, 6250, 0, 811 + mt_volt_range2, MT6359_RG_BUCK_VPROC1_EN_ADDR, 812 + MT6359_DA_VPROC1_EN_ADDR, MT6359_RG_BUCK_VPROC1_VOSEL_ADDR, 813 + MT6359_RG_BUCK_VPROC1_VOSEL_MASK << 814 + MT6359_RG_BUCK_VPROC1_VOSEL_SHIFT, 815 + MT6359_RG_BUCK_VPROC1_LP_ADDR, 816 + MT6359_RG_BUCK_VPROC1_LP_SHIFT, 817 + MT6359_RG_VPROC1_FCCM_ADDR, MT6359_RG_VPROC1_FCCM_SHIFT), 818 + MT6359_BUCK("buck_vgpu11_sshub", VGPU11_SSHUB, 400000, 1193750, 6250, 0, 819 + mt_volt_range2, MT6359P_RG_BUCK_VGPU11_SSHUB_EN_ADDR, 820 + MT6359_DA_VGPU11_EN_ADDR, 821 + MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_ADDR, 822 + MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_MASK << 823 + MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_SHIFT, 824 + MT6359_RG_BUCK_VGPU11_LP_ADDR, 825 + MT6359_RG_BUCK_VGPU11_LP_SHIFT, 826 + MT6359_RG_VGPU11_FCCM_ADDR, MT6359_RG_VGPU11_FCCM_SHIFT), 827 + MT6359_REG_FIXED("ldo_vaud18", VAUD18, MT6359P_RG_LDO_VAUD18_EN_ADDR, 828 + MT6359P_DA_VAUD18_B_EN_ADDR, 1800000), 829 + MT6359_LDO("ldo_vsim1", VSIM1, vsim1_voltages, 830 + MT6359P_RG_LDO_VSIM1_EN_ADDR, MT6359P_RG_LDO_VSIM1_EN_SHIFT, 831 + MT6359P_DA_VSIM1_B_EN_ADDR, MT6359P_RG_VSIM1_VOSEL_ADDR, 832 + MT6359_RG_VSIM1_VOSEL_MASK << MT6359_RG_VSIM1_VOSEL_SHIFT, 833 + 480), 834 + MT6359_LDO("ldo_vibr", VIBR, vibr_voltages, 835 + MT6359P_RG_LDO_VIBR_EN_ADDR, MT6359P_RG_LDO_VIBR_EN_SHIFT, 836 + MT6359P_DA_VIBR_B_EN_ADDR, MT6359P_RG_VIBR_VOSEL_ADDR, 837 + MT6359_RG_VIBR_VOSEL_MASK << MT6359_RG_VIBR_VOSEL_SHIFT, 838 + 240), 839 + MT6359_LDO("ldo_vrf12", VRF12, vrf12_voltages, 840 + MT6359P_RG_LDO_VRF12_EN_ADDR, MT6359P_RG_LDO_VRF12_EN_SHIFT, 841 + MT6359P_DA_VRF12_B_EN_ADDR, MT6359P_RG_VRF12_VOSEL_ADDR, 842 + MT6359_RG_VRF12_VOSEL_MASK << MT6359_RG_VRF12_VOSEL_SHIFT, 843 + 480), 844 + MT6359_REG_FIXED("ldo_vusb", VUSB, MT6359P_RG_LDO_VUSB_EN_0_ADDR, 845 + MT6359P_DA_VUSB_B_EN_ADDR, 3000000), 846 + MT6359_LDO_LINEAR("ldo_vsram_proc2", VSRAM_PROC2, 500000, 1293750, 6250, 847 + 0, mt_volt_range6, MT6359P_RG_LDO_VSRAM_PROC2_EN_ADDR, 848 + MT6359P_DA_VSRAM_PROC2_B_EN_ADDR, 849 + MT6359P_RG_LDO_VSRAM_PROC2_VOSEL_ADDR, 850 + MT6359_RG_LDO_VSRAM_PROC2_VOSEL_MASK << 851 + MT6359_RG_LDO_VSRAM_PROC2_VOSEL_SHIFT), 852 + MT6359_LDO("ldo_vio18", VIO18, volt18_voltages, 853 + MT6359P_RG_LDO_VIO18_EN_ADDR, MT6359P_RG_LDO_VIO18_EN_SHIFT, 854 + MT6359P_DA_VIO18_B_EN_ADDR, MT6359P_RG_VIO18_VOSEL_ADDR, 855 + MT6359_RG_VIO18_VOSEL_MASK << MT6359_RG_VIO18_VOSEL_SHIFT, 856 + 960), 857 + MT6359_LDO("ldo_vcamio", VCAMIO, volt18_voltages, 858 + MT6359P_RG_LDO_VCAMIO_EN_ADDR, 859 + MT6359P_RG_LDO_VCAMIO_EN_SHIFT, 860 + MT6359P_DA_VCAMIO_B_EN_ADDR, MT6359P_RG_VCAMIO_VOSEL_ADDR, 861 + MT6359_RG_VCAMIO_VOSEL_MASK << MT6359_RG_VCAMIO_VOSEL_SHIFT, 862 + 1290), 863 + MT6359_REG_FIXED("ldo_vcn18", VCN18, MT6359P_RG_LDO_VCN18_EN_ADDR, 864 + MT6359P_DA_VCN18_B_EN_ADDR, 1800000), 865 + MT6359_REG_FIXED("ldo_vfe28", VFE28, MT6359P_RG_LDO_VFE28_EN_ADDR, 866 + MT6359P_DA_VFE28_B_EN_ADDR, 2800000), 867 + MT6359_LDO("ldo_vcn13", VCN13, vcn13_voltages, 868 + MT6359P_RG_LDO_VCN13_EN_ADDR, MT6359P_RG_LDO_VCN13_EN_SHIFT, 869 + MT6359P_DA_VCN13_B_EN_ADDR, MT6359P_RG_VCN13_VOSEL_ADDR, 870 + MT6359_RG_VCN13_VOSEL_MASK << MT6359_RG_VCN13_VOSEL_SHIFT, 871 + 240), 872 + MT6359_LDO("ldo_vcn33_1_bt", VCN33_1_BT, vcn33_voltages, 873 + MT6359P_RG_LDO_VCN33_1_EN_0_ADDR, 874 + MT6359_RG_LDO_VCN33_1_EN_0_SHIFT, 875 + MT6359P_DA_VCN33_1_B_EN_ADDR, MT6359P_RG_VCN33_1_VOSEL_ADDR, 876 + MT6359_RG_VCN33_1_VOSEL_MASK << 877 + MT6359_RG_VCN33_1_VOSEL_SHIFT, 240), 878 + MT6359_LDO("ldo_vcn33_1_wifi", VCN33_1_WIFI, vcn33_voltages, 879 + MT6359P_RG_LDO_VCN33_1_EN_1_ADDR, 880 + MT6359P_RG_LDO_VCN33_1_EN_1_SHIFT, 881 + MT6359P_DA_VCN33_1_B_EN_ADDR, MT6359P_RG_VCN33_1_VOSEL_ADDR, 882 + MT6359_RG_VCN33_1_VOSEL_MASK << 883 + MT6359_RG_VCN33_1_VOSEL_SHIFT, 240), 884 + MT6359_REG_FIXED("ldo_vaux18", VAUX18, MT6359P_RG_LDO_VAUX18_EN_ADDR, 885 + MT6359P_DA_VAUX18_B_EN_ADDR, 1800000), 886 + MT6359_LDO_LINEAR("ldo_vsram_others", VSRAM_OTHERS, 500000, 1293750, 887 + 6250, 0, mt_volt_range6, 888 + MT6359P_RG_LDO_VSRAM_OTHERS_EN_ADDR, 889 + MT6359P_DA_VSRAM_OTHERS_B_EN_ADDR, 890 + MT6359P_RG_LDO_VSRAM_OTHERS_VOSEL_ADDR, 891 + MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_MASK << 892 + MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_SHIFT), 893 + MT6359_LDO("ldo_vefuse", VEFUSE, vefuse_voltages, 894 + MT6359P_RG_LDO_VEFUSE_EN_ADDR, 895 + MT6359P_RG_LDO_VEFUSE_EN_SHIFT, 896 + MT6359P_DA_VEFUSE_B_EN_ADDR, MT6359P_RG_VEFUSE_VOSEL_ADDR, 897 + MT6359_RG_VEFUSE_VOSEL_MASK << MT6359_RG_VEFUSE_VOSEL_SHIFT, 898 + 240), 899 + MT6359_LDO("ldo_vxo22", VXO22, vxo22_voltages, 900 + MT6359P_RG_LDO_VXO22_EN_ADDR, MT6359P_RG_LDO_VXO22_EN_SHIFT, 901 + MT6359P_DA_VXO22_B_EN_ADDR, MT6359P_RG_VXO22_VOSEL_ADDR, 902 + MT6359_RG_VXO22_VOSEL_MASK << MT6359_RG_VXO22_VOSEL_SHIFT, 903 + 480), 904 + MT6359_LDO("ldo_vrfck_1", VRFCK, vrfck_voltages_1, 905 + MT6359P_RG_LDO_VRFCK_EN_ADDR, MT6359P_RG_LDO_VRFCK_EN_SHIFT, 906 + MT6359P_DA_VRFCK_B_EN_ADDR, MT6359P_RG_VRFCK_VOSEL_ADDR, 907 + MT6359_RG_VRFCK_VOSEL_MASK << MT6359_RG_VRFCK_VOSEL_SHIFT, 908 + 480), 909 + MT6359_REG_FIXED("ldo_vbif28", VBIF28, MT6359P_RG_LDO_VBIF28_EN_ADDR, 910 + MT6359P_DA_VBIF28_B_EN_ADDR, 2800000), 911 + MT6359_LDO("ldo_vio28", VIO28, vio28_voltages, 912 + MT6359P_RG_LDO_VIO28_EN_ADDR, MT6359P_RG_LDO_VIO28_EN_SHIFT, 913 + MT6359P_DA_VIO28_B_EN_ADDR, MT6359P_RG_VIO28_VOSEL_ADDR, 914 + MT6359_RG_VIO28_VOSEL_MASK << MT6359_RG_VIO28_VOSEL_SHIFT, 915 + 1920), 916 + MT6359P_LDO1("ldo_vemc_1", VEMC, mt6359p_vemc_ops, vemc_voltages_1, 917 + MT6359P_RG_LDO_VEMC_EN_ADDR, MT6359P_RG_LDO_VEMC_EN_SHIFT, 918 + MT6359P_DA_VEMC_B_EN_ADDR, 919 + MT6359P_RG_LDO_VEMC_VOSEL_0_ADDR, 920 + MT6359P_RG_LDO_VEMC_VOSEL_0_MASK << 921 + MT6359P_RG_LDO_VEMC_VOSEL_0_SHIFT), 922 + MT6359_LDO("ldo_vcn33_2_bt", VCN33_2_BT, vcn33_voltages, 923 + MT6359P_RG_LDO_VCN33_2_EN_0_ADDR, 924 + MT6359P_RG_LDO_VCN33_2_EN_0_SHIFT, 925 + MT6359P_DA_VCN33_2_B_EN_ADDR, MT6359P_RG_VCN33_2_VOSEL_ADDR, 926 + MT6359_RG_VCN33_2_VOSEL_MASK << 927 + MT6359_RG_VCN33_2_VOSEL_SHIFT, 240), 928 + MT6359_LDO("ldo_vcn33_2_wifi", VCN33_2_WIFI, vcn33_voltages, 929 + MT6359P_RG_LDO_VCN33_2_EN_1_ADDR, 930 + MT6359_RG_LDO_VCN33_2_EN_1_SHIFT, 931 + MT6359P_DA_VCN33_2_B_EN_ADDR, MT6359P_RG_VCN33_2_VOSEL_ADDR, 932 + MT6359_RG_VCN33_2_VOSEL_MASK << 933 + MT6359_RG_VCN33_2_VOSEL_SHIFT, 240), 934 + MT6359_LDO("ldo_va12", VA12, va12_voltages, 935 + MT6359P_RG_LDO_VA12_EN_ADDR, MT6359P_RG_LDO_VA12_EN_SHIFT, 936 + MT6359P_DA_VA12_B_EN_ADDR, MT6359P_RG_VA12_VOSEL_ADDR, 937 + MT6359_RG_VA12_VOSEL_MASK << MT6359_RG_VA12_VOSEL_SHIFT, 938 + 960), 939 + MT6359_LDO("ldo_va09", VA09, va09_voltages, 940 + MT6359P_RG_LDO_VA09_EN_ADDR, MT6359P_RG_LDO_VA09_EN_SHIFT, 941 + MT6359P_DA_VA09_B_EN_ADDR, MT6359P_RG_VA09_VOSEL_ADDR, 942 + MT6359_RG_VA09_VOSEL_MASK << MT6359_RG_VA09_VOSEL_SHIFT, 943 + 960), 944 + MT6359_LDO("ldo_vrf18", VRF18, vrf18_voltages, 945 + MT6359P_RG_LDO_VRF18_EN_ADDR, MT6359P_RG_LDO_VRF18_EN_SHIFT, 946 + MT6359P_DA_VRF18_B_EN_ADDR, MT6359P_RG_VRF18_VOSEL_ADDR, 947 + MT6359_RG_VRF18_VOSEL_MASK << MT6359_RG_VRF18_VOSEL_SHIFT, 948 + 240), 949 + MT6359_LDO_LINEAR("ldo_vsram_md", VSRAM_MD, 500000, 1293750, 6250, 950 + 0, mt_volt_range7, MT6359P_RG_LDO_VSRAM_MD_EN_ADDR, 951 + MT6359P_DA_VSRAM_MD_B_EN_ADDR, 952 + MT6359P_RG_LDO_VSRAM_MD_VOSEL_ADDR, 953 + MT6359_RG_LDO_VSRAM_MD_VOSEL_MASK << 954 + MT6359_RG_LDO_VSRAM_MD_VOSEL_SHIFT), 955 + MT6359_LDO("ldo_vufs", VUFS, volt18_voltages, 956 + MT6359P_RG_LDO_VUFS_EN_ADDR, MT6359P_RG_LDO_VUFS_EN_SHIFT, 957 + MT6359P_DA_VUFS_B_EN_ADDR, MT6359P_RG_VUFS_VOSEL_ADDR, 958 + MT6359_RG_VUFS_VOSEL_MASK << MT6359_RG_VUFS_VOSEL_SHIFT, 959 + 1920), 960 + MT6359_LDO("ldo_vm18", VM18, volt18_voltages, 961 + MT6359P_RG_LDO_VM18_EN_ADDR, MT6359P_RG_LDO_VM18_EN_SHIFT, 962 + MT6359P_DA_VM18_B_EN_ADDR, MT6359P_RG_VM18_VOSEL_ADDR, 963 + MT6359_RG_VM18_VOSEL_MASK << MT6359_RG_VM18_VOSEL_SHIFT, 964 + 1920), 965 + MT6359_LDO("ldo_vbbck", VBBCK, vbbck_voltages, 966 + MT6359P_RG_LDO_VBBCK_EN_ADDR, MT6359P_RG_LDO_VBBCK_EN_SHIFT, 967 + MT6359P_DA_VBBCK_B_EN_ADDR, MT6359P_RG_VBBCK_VOSEL_ADDR, 968 + MT6359P_RG_VBBCK_VOSEL_MASK << MT6359P_RG_VBBCK_VOSEL_SHIFT, 969 + 480), 970 + MT6359_LDO_LINEAR("ldo_vsram_proc1", VSRAM_PROC1, 500000, 1293750, 6250, 971 + 0, mt_volt_range6, MT6359P_RG_LDO_VSRAM_PROC1_EN_ADDR, 972 + MT6359P_DA_VSRAM_PROC1_B_EN_ADDR, 973 + MT6359P_RG_LDO_VSRAM_PROC1_VOSEL_ADDR, 974 + MT6359_RG_LDO_VSRAM_PROC1_VOSEL_MASK << 975 + MT6359_RG_LDO_VSRAM_PROC1_VOSEL_SHIFT), 976 + MT6359_LDO("ldo_vsim2", VSIM2, vsim2_voltages, 977 + MT6359P_RG_LDO_VSIM2_EN_ADDR, MT6359P_RG_LDO_VSIM2_EN_SHIFT, 978 + MT6359P_DA_VSIM2_B_EN_ADDR, MT6359P_RG_VSIM2_VOSEL_ADDR, 979 + MT6359_RG_VSIM2_VOSEL_MASK << MT6359_RG_VSIM2_VOSEL_SHIFT, 980 + 480), 981 + MT6359_LDO_LINEAR("ldo_vsram_others_sshub", VSRAM_OTHERS_SSHUB, 982 + 500000, 1293750, 6250, 0, mt_volt_range6, 983 + MT6359P_RG_LDO_VSRAM_OTHERS_SSHUB_EN_ADDR, 984 + MT6359P_DA_VSRAM_OTHERS_B_EN_ADDR, 985 + MT6359P_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_ADDR, 986 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_MASK << 987 + MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_SHIFT), 988 + }; 989 + 990 + static int mt6359_regulator_probe(struct platform_device *pdev) 991 + { 992 + struct mt6397_chip *mt6397 = dev_get_drvdata(pdev->dev.parent); 993 + struct regulator_config config = {}; 994 + struct regulator_dev *rdev; 995 + struct mt6359_regulator_info *mt6359_info; 996 + int i, hw_ver; 997 + 998 + regmap_read(mt6397->regmap, MT6359P_HWCID, &hw_ver); 999 + if (hw_ver >= MT6359P_CHIP_VER) 1000 + mt6359_info = mt6359p_regulators; 1001 + else 1002 + mt6359_info = mt6359_regulators; 1003 + 1004 + config.dev = mt6397->dev; 1005 + config.regmap = mt6397->regmap; 1006 + for (i = 0; i < MT6359_MAX_REGULATOR; i++, mt6359_info++) { 1007 + config.driver_data = mt6359_info; 1008 + rdev = devm_regulator_register(&pdev->dev, &mt6359_info->desc, &config); 1009 + if (IS_ERR(rdev)) { 1010 + dev_err(&pdev->dev, "failed to register %s\n", mt6359_info->desc.name); 1011 + return PTR_ERR(rdev); 1012 + } 1013 + } 1014 + 1015 + return 0; 1016 + } 1017 + 1018 + static const struct platform_device_id mt6359_platform_ids[] = { 1019 + {"mt6359-regulator", 0}, 1020 + { /* sentinel */ }, 1021 + }; 1022 + MODULE_DEVICE_TABLE(platform, mt6359_platform_ids); 1023 + 1024 + static struct platform_driver mt6359_regulator_driver = { 1025 + .driver = { 1026 + .name = "mt6359-regulator", 1027 + }, 1028 + .probe = mt6359_regulator_probe, 1029 + .id_table = mt6359_platform_ids, 1030 + }; 1031 + 1032 + module_platform_driver(mt6359_regulator_driver); 1033 + 1034 + MODULE_AUTHOR("Wen Su <wen.su@mediatek.com>"); 1035 + MODULE_DESCRIPTION("Regulator Driver for MediaTek MT6359 PMIC"); 1036 + MODULE_LICENSE("GPL");
+1 -1
drivers/rtc/rtc-mt6397.c
··· 75 75 tm->tm_min = data[RTC_OFFSET_MIN]; 76 76 tm->tm_hour = data[RTC_OFFSET_HOUR]; 77 77 tm->tm_mday = data[RTC_OFFSET_DOM]; 78 - tm->tm_mon = data[RTC_OFFSET_MTH]; 78 + tm->tm_mon = data[RTC_OFFSET_MTH] & RTC_TC_MTH_MASK; 79 79 tm->tm_year = data[RTC_OFFSET_YEAR]; 80 80 81 81 ret = regmap_read(rtc->regmap, rtc->addr_base + RTC_TC_SEC, sec);
+12 -23
include/linux/mfd/lp87565.h
··· 222 222 #define LP87565_GPIO2_SEL BIT(1) 223 223 #define LP87565_GPIO1_SEL BIT(0) 224 224 225 - #define LP87565_GOIO3_OD BIT(6) 226 - #define LP87565_GOIO2_OD BIT(5) 227 - #define LP87565_GOIO1_OD BIT(4) 228 - #define LP87565_GOIO3_DIR BIT(2) 229 - #define LP87565_GOIO2_DIR BIT(1) 230 - #define LP87565_GOIO1_DIR BIT(0) 225 + #define LP87565_GPIO3_OD BIT(6) 226 + #define LP87565_GPIO2_OD BIT(5) 227 + #define LP87565_GPIO1_OD BIT(4) 228 + #define LP87565_GPIO3_DIR BIT(2) 229 + #define LP87565_GPIO2_DIR BIT(1) 230 + #define LP87565_GPIO1_DIR BIT(0) 231 231 232 - #define LP87565_GOIO3_IN BIT(2) 233 - #define LP87565_GOIO2_IN BIT(1) 234 - #define LP87565_GOIO1_IN BIT(0) 232 + #define LP87565_GPIO3_IN BIT(2) 233 + #define LP87565_GPIO2_IN BIT(1) 234 + #define LP87565_GPIO1_IN BIT(0) 235 235 236 - #define LP87565_GOIO3_OUT BIT(2) 237 - #define LP87565_GOIO2_OUT BIT(1) 238 - #define LP87565_GOIO1_OUT BIT(0) 239 - 240 - enum LP87565_regulator_id { 241 - /* BUCK's */ 242 - LP87565_BUCK_0, 243 - LP87565_BUCK_1, 244 - LP87565_BUCK_2, 245 - LP87565_BUCK_3, 246 - LP87565_BUCK_10, 247 - LP87565_BUCK_23, 248 - LP87565_BUCK_3210, 249 - }; 236 + #define LP87565_GPIO3_OUT BIT(2) 237 + #define LP87565_GPIO2_OUT BIT(1) 238 + #define LP87565_GPIO1_OUT BIT(0) 250 239 251 240 /** 252 241 * struct LP87565 - state holder for the LP87565 driver
+3 -5
include/linux/mfd/mt6358/core.h
··· 6 6 #ifndef __MFD_MT6358_CORE_H__ 7 7 #define __MFD_MT6358_CORE_H__ 8 8 9 - #define MT6358_REG_WIDTH 16 10 - 11 9 struct irq_top_t { 12 10 int hwirq_base; 13 11 unsigned int num_int_regs; 14 - unsigned int num_int_bits; 15 12 unsigned int en_reg; 16 13 unsigned int en_reg_shift; 17 14 unsigned int sta_reg; ··· 22 25 unsigned short top_int_status_reg; 23 26 bool *enable_hwirq; 24 27 bool *cache_hwirq; 28 + const struct irq_top_t *pmic_ints; 25 29 }; 26 30 27 31 enum mt6358_irq_top_status_shift { ··· 144 146 { \ 145 147 .hwirq_base = MT6358_IRQ_##sp##_BASE, \ 146 148 .num_int_regs = \ 147 - ((MT6358_IRQ_##sp##_BITS - 1) / MT6358_REG_WIDTH) + 1, \ 148 - .num_int_bits = MT6358_IRQ_##sp##_BITS, \ 149 + ((MT6358_IRQ_##sp##_BITS - 1) / \ 150 + MTK_PMIC_REG_WIDTH) + 1, \ 149 151 .en_reg = MT6358_##sp##_TOP_INT_CON0, \ 150 152 .en_reg_shift = 0x6, \ 151 153 .sta_reg = MT6358_##sp##_TOP_INT_STATUS0, \
+133
include/linux/mfd/mt6359/core.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2021 MediaTek Inc. 4 + */ 5 + 6 + #ifndef __MFD_MT6359_CORE_H__ 7 + #define __MFD_MT6359_CORE_H__ 8 + 9 + enum mt6359_irq_top_status_shift { 10 + MT6359_BUCK_TOP = 0, 11 + MT6359_LDO_TOP, 12 + MT6359_PSC_TOP, 13 + MT6359_SCK_TOP, 14 + MT6359_BM_TOP, 15 + MT6359_HK_TOP, 16 + MT6359_AUD_TOP = 7, 17 + MT6359_MISC_TOP, 18 + }; 19 + 20 + enum mt6359_irq_numbers { 21 + MT6359_IRQ_VCORE_OC = 1, 22 + MT6359_IRQ_VGPU11_OC, 23 + MT6359_IRQ_VGPU12_OC, 24 + MT6359_IRQ_VMODEM_OC, 25 + MT6359_IRQ_VPROC1_OC, 26 + MT6359_IRQ_VPROC2_OC, 27 + MT6359_IRQ_VS1_OC, 28 + MT6359_IRQ_VS2_OC, 29 + MT6359_IRQ_VPA_OC = 9, 30 + MT6359_IRQ_VFE28_OC = 16, 31 + MT6359_IRQ_VXO22_OC, 32 + MT6359_IRQ_VRF18_OC, 33 + MT6359_IRQ_VRF12_OC, 34 + MT6359_IRQ_VEFUSE_OC, 35 + MT6359_IRQ_VCN33_1_OC, 36 + MT6359_IRQ_VCN33_2_OC, 37 + MT6359_IRQ_VCN13_OC, 38 + MT6359_IRQ_VCN18_OC, 39 + MT6359_IRQ_VA09_OC, 40 + MT6359_IRQ_VCAMIO_OC, 41 + MT6359_IRQ_VA12_OC, 42 + MT6359_IRQ_VAUX18_OC, 43 + MT6359_IRQ_VAUD18_OC, 44 + MT6359_IRQ_VIO18_OC, 45 + MT6359_IRQ_VSRAM_PROC1_OC, 46 + MT6359_IRQ_VSRAM_PROC2_OC, 47 + MT6359_IRQ_VSRAM_OTHERS_OC, 48 + MT6359_IRQ_VSRAM_MD_OC, 49 + MT6359_IRQ_VEMC_OC, 50 + MT6359_IRQ_VSIM1_OC, 51 + MT6359_IRQ_VSIM2_OC, 52 + MT6359_IRQ_VUSB_OC, 53 + MT6359_IRQ_VRFCK_OC, 54 + MT6359_IRQ_VBBCK_OC, 55 + MT6359_IRQ_VBIF28_OC, 56 + MT6359_IRQ_VIBR_OC, 57 + MT6359_IRQ_VIO28_OC, 58 + MT6359_IRQ_VM18_OC, 59 + MT6359_IRQ_VUFS_OC = 45, 60 + MT6359_IRQ_PWRKEY = 48, 61 + MT6359_IRQ_HOMEKEY, 62 + MT6359_IRQ_PWRKEY_R, 63 + MT6359_IRQ_HOMEKEY_R, 64 + MT6359_IRQ_NI_LBAT_INT, 65 + MT6359_IRQ_CHRDET_EDGE = 53, 66 + MT6359_IRQ_RTC = 64, 67 + MT6359_IRQ_FG_BAT_H = 80, 68 + MT6359_IRQ_FG_BAT_L, 69 + MT6359_IRQ_FG_CUR_H, 70 + MT6359_IRQ_FG_CUR_L, 71 + MT6359_IRQ_FG_ZCV = 84, 72 + MT6359_IRQ_FG_N_CHARGE_L = 87, 73 + MT6359_IRQ_FG_IAVG_H, 74 + MT6359_IRQ_FG_IAVG_L = 89, 75 + MT6359_IRQ_FG_DISCHARGE = 91, 76 + MT6359_IRQ_FG_CHARGE, 77 + MT6359_IRQ_BATON_LV = 96, 78 + MT6359_IRQ_BATON_BAT_IN = 98, 79 + MT6359_IRQ_BATON_BAT_OU, 80 + MT6359_IRQ_BIF = 100, 81 + MT6359_IRQ_BAT_H = 112, 82 + MT6359_IRQ_BAT_L, 83 + MT6359_IRQ_BAT2_H, 84 + MT6359_IRQ_BAT2_L, 85 + MT6359_IRQ_BAT_TEMP_H, 86 + MT6359_IRQ_BAT_TEMP_L, 87 + MT6359_IRQ_THR_H, 88 + MT6359_IRQ_THR_L, 89 + MT6359_IRQ_AUXADC_IMP, 90 + MT6359_IRQ_NAG_C_DLTV = 121, 91 + MT6359_IRQ_AUDIO = 128, 92 + MT6359_IRQ_ACCDET = 133, 93 + MT6359_IRQ_ACCDET_EINT0, 94 + MT6359_IRQ_ACCDET_EINT1, 95 + MT6359_IRQ_SPI_CMD_ALERT = 144, 96 + MT6359_IRQ_NR, 97 + }; 98 + 99 + #define MT6359_IRQ_BUCK_BASE MT6359_IRQ_VCORE_OC 100 + #define MT6359_IRQ_LDO_BASE MT6359_IRQ_VFE28_OC 101 + #define MT6359_IRQ_PSC_BASE MT6359_IRQ_PWRKEY 102 + #define MT6359_IRQ_SCK_BASE MT6359_IRQ_RTC 103 + #define MT6359_IRQ_BM_BASE MT6359_IRQ_FG_BAT_H 104 + #define MT6359_IRQ_HK_BASE MT6359_IRQ_BAT_H 105 + #define MT6359_IRQ_AUD_BASE MT6359_IRQ_AUDIO 106 + #define MT6359_IRQ_MISC_BASE MT6359_IRQ_SPI_CMD_ALERT 107 + 108 + #define MT6359_IRQ_BUCK_BITS (MT6359_IRQ_VPA_OC - MT6359_IRQ_BUCK_BASE + 1) 109 + #define MT6359_IRQ_LDO_BITS (MT6359_IRQ_VUFS_OC - MT6359_IRQ_LDO_BASE + 1) 110 + #define MT6359_IRQ_PSC_BITS \ 111 + (MT6359_IRQ_CHRDET_EDGE - MT6359_IRQ_PSC_BASE + 1) 112 + #define MT6359_IRQ_SCK_BITS (MT6359_IRQ_RTC - MT6359_IRQ_SCK_BASE + 1) 113 + #define MT6359_IRQ_BM_BITS (MT6359_IRQ_BIF - MT6359_IRQ_BM_BASE + 1) 114 + #define MT6359_IRQ_HK_BITS (MT6359_IRQ_NAG_C_DLTV - MT6359_IRQ_HK_BASE + 1) 115 + #define MT6359_IRQ_AUD_BITS \ 116 + (MT6359_IRQ_ACCDET_EINT1 - MT6359_IRQ_AUD_BASE + 1) 117 + #define MT6359_IRQ_MISC_BITS \ 118 + (MT6359_IRQ_SPI_CMD_ALERT - MT6359_IRQ_MISC_BASE + 1) 119 + 120 + #define MT6359_TOP_GEN(sp) \ 121 + { \ 122 + .hwirq_base = MT6359_IRQ_##sp##_BASE, \ 123 + .num_int_regs = \ 124 + ((MT6359_IRQ_##sp##_BITS - 1) / \ 125 + MTK_PMIC_REG_WIDTH) + 1, \ 126 + .en_reg = MT6359_##sp##_TOP_INT_CON0, \ 127 + .en_reg_shift = 0x6, \ 128 + .sta_reg = MT6359_##sp##_TOP_INT_STATUS0, \ 129 + .sta_reg_shift = 0x2, \ 130 + .top_offset = MT6359_##sp##_TOP, \ 131 + } 132 + 133 + #endif /* __MFD_MT6359_CORE_H__ */
+529
include/linux/mfd/mt6359/registers.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2021 MediaTek Inc. 4 + */ 5 + 6 + #ifndef __MFD_MT6359_REGISTERS_H__ 7 + #define __MFD_MT6359_REGISTERS_H__ 8 + 9 + /* PMIC Registers */ 10 + #define MT6359_SWCID 0xa 11 + #define MT6359_MISC_TOP_INT_CON0 0x188 12 + #define MT6359_MISC_TOP_INT_STATUS0 0x194 13 + #define MT6359_TOP_INT_STATUS0 0x19e 14 + #define MT6359_SCK_TOP_INT_CON0 0x528 15 + #define MT6359_SCK_TOP_INT_STATUS0 0x534 16 + #define MT6359_EOSC_CALI_CON0 0x53a 17 + #define MT6359_EOSC_CALI_CON1 0x53c 18 + #define MT6359_RTC_MIX_CON0 0x53e 19 + #define MT6359_RTC_MIX_CON1 0x540 20 + #define MT6359_RTC_MIX_CON2 0x542 21 + #define MT6359_RTC_DSN_ID 0x580 22 + #define MT6359_RTC_DSN_REV0 0x582 23 + #define MT6359_RTC_DBI 0x584 24 + #define MT6359_RTC_DXI 0x586 25 + #define MT6359_RTC_BBPU 0x588 26 + #define MT6359_RTC_IRQ_STA 0x58a 27 + #define MT6359_RTC_IRQ_EN 0x58c 28 + #define MT6359_RTC_CII_EN 0x58e 29 + #define MT6359_RTC_AL_MASK 0x590 30 + #define MT6359_RTC_TC_SEC 0x592 31 + #define MT6359_RTC_TC_MIN 0x594 32 + #define MT6359_RTC_TC_HOU 0x596 33 + #define MT6359_RTC_TC_DOM 0x598 34 + #define MT6359_RTC_TC_DOW 0x59a 35 + #define MT6359_RTC_TC_MTH 0x59c 36 + #define MT6359_RTC_TC_YEA 0x59e 37 + #define MT6359_RTC_AL_SEC 0x5a0 38 + #define MT6359_RTC_AL_MIN 0x5a2 39 + #define MT6359_RTC_AL_HOU 0x5a4 40 + #define MT6359_RTC_AL_DOM 0x5a6 41 + #define MT6359_RTC_AL_DOW 0x5a8 42 + #define MT6359_RTC_AL_MTH 0x5aa 43 + #define MT6359_RTC_AL_YEA 0x5ac 44 + #define MT6359_RTC_OSC32CON 0x5ae 45 + #define MT6359_RTC_POWERKEY1 0x5b0 46 + #define MT6359_RTC_POWERKEY2 0x5b2 47 + #define MT6359_RTC_PDN1 0x5b4 48 + #define MT6359_RTC_PDN2 0x5b6 49 + #define MT6359_RTC_SPAR0 0x5b8 50 + #define MT6359_RTC_SPAR1 0x5ba 51 + #define MT6359_RTC_PROT 0x5bc 52 + #define MT6359_RTC_DIFF 0x5be 53 + #define MT6359_RTC_CALI 0x5c0 54 + #define MT6359_RTC_WRTGR 0x5c2 55 + #define MT6359_RTC_CON 0x5c4 56 + #define MT6359_RTC_SEC_CTRL 0x5c6 57 + #define MT6359_RTC_INT_CNT 0x5c8 58 + #define MT6359_RTC_SEC_DAT0 0x5ca 59 + #define MT6359_RTC_SEC_DAT1 0x5cc 60 + #define MT6359_RTC_SEC_DAT2 0x5ce 61 + #define MT6359_RTC_SEC_DSN_ID 0x600 62 + #define MT6359_RTC_SEC_DSN_REV0 0x602 63 + #define MT6359_RTC_SEC_DBI 0x604 64 + #define MT6359_RTC_SEC_DXI 0x606 65 + #define MT6359_RTC_TC_SEC_SEC 0x608 66 + #define MT6359_RTC_TC_MIN_SEC 0x60a 67 + #define MT6359_RTC_TC_HOU_SEC 0x60c 68 + #define MT6359_RTC_TC_DOM_SEC 0x60e 69 + #define MT6359_RTC_TC_DOW_SEC 0x610 70 + #define MT6359_RTC_TC_MTH_SEC 0x612 71 + #define MT6359_RTC_TC_YEA_SEC 0x614 72 + #define MT6359_RTC_SEC_CK_PDN 0x616 73 + #define MT6359_RTC_SEC_WRTGR 0x618 74 + #define MT6359_PSC_TOP_INT_CON0 0x910 75 + #define MT6359_PSC_TOP_INT_STATUS0 0x91c 76 + #define MT6359_BM_TOP_INT_CON0 0xc32 77 + #define MT6359_BM_TOP_INT_CON1 0xc38 78 + #define MT6359_BM_TOP_INT_STATUS0 0xc4a 79 + #define MT6359_BM_TOP_INT_STATUS1 0xc4c 80 + #define MT6359_HK_TOP_INT_CON0 0xf92 81 + #define MT6359_HK_TOP_INT_STATUS0 0xf9e 82 + #define MT6359_BUCK_TOP_INT_CON0 0x1418 83 + #define MT6359_BUCK_TOP_INT_STATUS0 0x1424 84 + #define MT6359_BUCK_VPU_CON0 0x1488 85 + #define MT6359_BUCK_VPU_DBG0 0x14a6 86 + #define MT6359_BUCK_VPU_DBG1 0x14a8 87 + #define MT6359_BUCK_VPU_ELR0 0x14ac 88 + #define MT6359_BUCK_VCORE_CON0 0x1508 89 + #define MT6359_BUCK_VCORE_DBG0 0x1526 90 + #define MT6359_BUCK_VCORE_DBG1 0x1528 91 + #define MT6359_BUCK_VCORE_SSHUB_CON0 0x152a 92 + #define MT6359_BUCK_VCORE_ELR0 0x1534 93 + #define MT6359_BUCK_VGPU11_CON0 0x1588 94 + #define MT6359_BUCK_VGPU11_DBG0 0x15a6 95 + #define MT6359_BUCK_VGPU11_DBG1 0x15a8 96 + #define MT6359_BUCK_VGPU11_ELR0 0x15ac 97 + #define MT6359_BUCK_VMODEM_CON0 0x1688 98 + #define MT6359_BUCK_VMODEM_DBG0 0x16a6 99 + #define MT6359_BUCK_VMODEM_DBG1 0x16a8 100 + #define MT6359_BUCK_VMODEM_ELR0 0x16ae 101 + #define MT6359_BUCK_VPROC1_CON0 0x1708 102 + #define MT6359_BUCK_VPROC1_DBG0 0x1726 103 + #define MT6359_BUCK_VPROC1_DBG1 0x1728 104 + #define MT6359_BUCK_VPROC1_ELR0 0x172e 105 + #define MT6359_BUCK_VPROC2_CON0 0x1788 106 + #define MT6359_BUCK_VPROC2_DBG0 0x17a6 107 + #define MT6359_BUCK_VPROC2_DBG1 0x17a8 108 + #define MT6359_BUCK_VPROC2_ELR0 0x17b2 109 + #define MT6359_BUCK_VS1_CON0 0x1808 110 + #define MT6359_BUCK_VS1_DBG0 0x1826 111 + #define MT6359_BUCK_VS1_DBG1 0x1828 112 + #define MT6359_BUCK_VS1_ELR0 0x1834 113 + #define MT6359_BUCK_VS2_CON0 0x1888 114 + #define MT6359_BUCK_VS2_DBG0 0x18a6 115 + #define MT6359_BUCK_VS2_DBG1 0x18a8 116 + #define MT6359_BUCK_VS2_ELR0 0x18b4 117 + #define MT6359_BUCK_VPA_CON0 0x1908 118 + #define MT6359_BUCK_VPA_CON1 0x190e 119 + #define MT6359_BUCK_VPA_CFG0 0x1910 120 + #define MT6359_BUCK_VPA_CFG1 0x1912 121 + #define MT6359_BUCK_VPA_DBG0 0x1914 122 + #define MT6359_BUCK_VPA_DBG1 0x1916 123 + #define MT6359_VGPUVCORE_ANA_CON2 0x198e 124 + #define MT6359_VGPUVCORE_ANA_CON13 0x19a4 125 + #define MT6359_VPROC1_ANA_CON3 0x19b2 126 + #define MT6359_VPROC2_ANA_CON3 0x1a0e 127 + #define MT6359_VMODEM_ANA_CON3 0x1a1a 128 + #define MT6359_VPU_ANA_CON3 0x1a26 129 + #define MT6359_VS1_ANA_CON0 0x1a2c 130 + #define MT6359_VS2_ANA_CON0 0x1a34 131 + #define MT6359_VPA_ANA_CON0 0x1a3c 132 + #define MT6359_LDO_TOP_INT_CON0 0x1b14 133 + #define MT6359_LDO_TOP_INT_CON1 0x1b1a 134 + #define MT6359_LDO_TOP_INT_STATUS0 0x1b28 135 + #define MT6359_LDO_TOP_INT_STATUS1 0x1b2a 136 + #define MT6359_LDO_VSRAM_PROC1_ELR 0x1b40 137 + #define MT6359_LDO_VSRAM_PROC2_ELR 0x1b42 138 + #define MT6359_LDO_VSRAM_OTHERS_ELR 0x1b44 139 + #define MT6359_LDO_VSRAM_MD_ELR 0x1b46 140 + #define MT6359_LDO_VFE28_CON0 0x1b88 141 + #define MT6359_LDO_VFE28_MON 0x1b8a 142 + #define MT6359_LDO_VXO22_CON0 0x1b98 143 + #define MT6359_LDO_VXO22_MON 0x1b9a 144 + #define MT6359_LDO_VRF18_CON0 0x1ba8 145 + #define MT6359_LDO_VRF18_MON 0x1baa 146 + #define MT6359_LDO_VRF12_CON0 0x1bb8 147 + #define MT6359_LDO_VRF12_MON 0x1bba 148 + #define MT6359_LDO_VEFUSE_CON0 0x1bc8 149 + #define MT6359_LDO_VEFUSE_MON 0x1bca 150 + #define MT6359_LDO_VCN33_1_CON0 0x1bd8 151 + #define MT6359_LDO_VCN33_1_MON 0x1bda 152 + #define MT6359_LDO_VCN33_1_MULTI_SW 0x1be8 153 + #define MT6359_LDO_VCN33_2_CON0 0x1c08 154 + #define MT6359_LDO_VCN33_2_MON 0x1c0a 155 + #define MT6359_LDO_VCN33_2_MULTI_SW 0x1c18 156 + #define MT6359_LDO_VCN13_CON0 0x1c1a 157 + #define MT6359_LDO_VCN13_MON 0x1c1c 158 + #define MT6359_LDO_VCN18_CON0 0x1c2a 159 + #define MT6359_LDO_VCN18_MON 0x1c2c 160 + #define MT6359_LDO_VA09_CON0 0x1c3a 161 + #define MT6359_LDO_VA09_MON 0x1c3c 162 + #define MT6359_LDO_VCAMIO_CON0 0x1c4a 163 + #define MT6359_LDO_VCAMIO_MON 0x1c4c 164 + #define MT6359_LDO_VA12_CON0 0x1c5a 165 + #define MT6359_LDO_VA12_MON 0x1c5c 166 + #define MT6359_LDO_VAUX18_CON0 0x1c88 167 + #define MT6359_LDO_VAUX18_MON 0x1c8a 168 + #define MT6359_LDO_VAUD18_CON0 0x1c98 169 + #define MT6359_LDO_VAUD18_MON 0x1c9a 170 + #define MT6359_LDO_VIO18_CON0 0x1ca8 171 + #define MT6359_LDO_VIO18_MON 0x1caa 172 + #define MT6359_LDO_VEMC_CON0 0x1cb8 173 + #define MT6359_LDO_VEMC_MON 0x1cba 174 + #define MT6359_LDO_VSIM1_CON0 0x1cc8 175 + #define MT6359_LDO_VSIM1_MON 0x1cca 176 + #define MT6359_LDO_VSIM2_CON0 0x1cd8 177 + #define MT6359_LDO_VSIM2_MON 0x1cda 178 + #define MT6359_LDO_VUSB_CON0 0x1d08 179 + #define MT6359_LDO_VUSB_MON 0x1d0a 180 + #define MT6359_LDO_VUSB_MULTI_SW 0x1d18 181 + #define MT6359_LDO_VRFCK_CON0 0x1d1a 182 + #define MT6359_LDO_VRFCK_MON 0x1d1c 183 + #define MT6359_LDO_VBBCK_CON0 0x1d2a 184 + #define MT6359_LDO_VBBCK_MON 0x1d2c 185 + #define MT6359_LDO_VBIF28_CON0 0x1d3a 186 + #define MT6359_LDO_VBIF28_MON 0x1d3c 187 + #define MT6359_LDO_VIBR_CON0 0x1d4a 188 + #define MT6359_LDO_VIBR_MON 0x1d4c 189 + #define MT6359_LDO_VIO28_CON0 0x1d5a 190 + #define MT6359_LDO_VIO28_MON 0x1d5c 191 + #define MT6359_LDO_VM18_CON0 0x1d88 192 + #define MT6359_LDO_VM18_MON 0x1d8a 193 + #define MT6359_LDO_VUFS_CON0 0x1d98 194 + #define MT6359_LDO_VUFS_MON 0x1d9a 195 + #define MT6359_LDO_VSRAM_PROC1_CON0 0x1e88 196 + #define MT6359_LDO_VSRAM_PROC1_MON 0x1e8a 197 + #define MT6359_LDO_VSRAM_PROC1_VOSEL1 0x1e8e 198 + #define MT6359_LDO_VSRAM_PROC2_CON0 0x1ea6 199 + #define MT6359_LDO_VSRAM_PROC2_MON 0x1ea8 200 + #define MT6359_LDO_VSRAM_PROC2_VOSEL1 0x1eac 201 + #define MT6359_LDO_VSRAM_OTHERS_CON0 0x1f08 202 + #define MT6359_LDO_VSRAM_OTHERS_MON 0x1f0a 203 + #define MT6359_LDO_VSRAM_OTHERS_VOSEL1 0x1f0e 204 + #define MT6359_LDO_VSRAM_OTHERS_SSHUB 0x1f26 205 + #define MT6359_LDO_VSRAM_MD_CON0 0x1f2c 206 + #define MT6359_LDO_VSRAM_MD_MON 0x1f2e 207 + #define MT6359_LDO_VSRAM_MD_VOSEL1 0x1f32 208 + #define MT6359_VFE28_ANA_CON0 0x1f88 209 + #define MT6359_VAUX18_ANA_CON0 0x1f8c 210 + #define MT6359_VUSB_ANA_CON0 0x1f90 211 + #define MT6359_VBIF28_ANA_CON0 0x1f94 212 + #define MT6359_VCN33_1_ANA_CON0 0x1f98 213 + #define MT6359_VCN33_2_ANA_CON0 0x1f9c 214 + #define MT6359_VEMC_ANA_CON0 0x1fa0 215 + #define MT6359_VSIM1_ANA_CON0 0x1fa4 216 + #define MT6359_VSIM2_ANA_CON0 0x1fa8 217 + #define MT6359_VIO28_ANA_CON0 0x1fac 218 + #define MT6359_VIBR_ANA_CON0 0x1fb0 219 + #define MT6359_VRF18_ANA_CON0 0x2008 220 + #define MT6359_VEFUSE_ANA_CON0 0x200c 221 + #define MT6359_VCN18_ANA_CON0 0x2010 222 + #define MT6359_VCAMIO_ANA_CON0 0x2014 223 + #define MT6359_VAUD18_ANA_CON0 0x2018 224 + #define MT6359_VIO18_ANA_CON0 0x201c 225 + #define MT6359_VM18_ANA_CON0 0x2020 226 + #define MT6359_VUFS_ANA_CON0 0x2024 227 + #define MT6359_VRF12_ANA_CON0 0x202a 228 + #define MT6359_VCN13_ANA_CON0 0x202e 229 + #define MT6359_VA09_ANA_CON0 0x2032 230 + #define MT6359_VA12_ANA_CON0 0x2036 231 + #define MT6359_VXO22_ANA_CON0 0x2088 232 + #define MT6359_VRFCK_ANA_CON0 0x208c 233 + #define MT6359_VBBCK_ANA_CON0 0x2094 234 + #define MT6359_AUD_TOP_INT_CON0 0x2328 235 + #define MT6359_AUD_TOP_INT_STATUS0 0x2334 236 + 237 + #define MT6359_RG_BUCK_VPU_EN_ADDR MT6359_BUCK_VPU_CON0 238 + #define MT6359_RG_BUCK_VPU_LP_ADDR MT6359_BUCK_VPU_CON0 239 + #define MT6359_RG_BUCK_VPU_LP_SHIFT 1 240 + #define MT6359_DA_VPU_VOSEL_ADDR MT6359_BUCK_VPU_DBG0 241 + #define MT6359_DA_VPU_VOSEL_MASK 0x7F 242 + #define MT6359_DA_VPU_VOSEL_SHIFT 0 243 + #define MT6359_DA_VPU_EN_ADDR MT6359_BUCK_VPU_DBG1 244 + #define MT6359_RG_BUCK_VPU_VOSEL_ADDR MT6359_BUCK_VPU_ELR0 245 + #define MT6359_RG_BUCK_VPU_VOSEL_MASK 0x7F 246 + #define MT6359_RG_BUCK_VPU_VOSEL_SHIFT 0 247 + #define MT6359_RG_BUCK_VCORE_EN_ADDR MT6359_BUCK_VCORE_CON0 248 + #define MT6359_RG_BUCK_VCORE_LP_ADDR MT6359_BUCK_VCORE_CON0 249 + #define MT6359_RG_BUCK_VCORE_LP_SHIFT 1 250 + #define MT6359_DA_VCORE_VOSEL_ADDR MT6359_BUCK_VCORE_DBG0 251 + #define MT6359_DA_VCORE_VOSEL_MASK 0x7F 252 + #define MT6359_DA_VCORE_VOSEL_SHIFT 0 253 + #define MT6359_DA_VCORE_EN_ADDR MT6359_BUCK_VCORE_DBG1 254 + #define MT6359_RG_BUCK_VCORE_SSHUB_EN_ADDR MT6359_BUCK_VCORE_SSHUB_CON0 255 + #define MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_ADDR MT6359_BUCK_VCORE_SSHUB_CON0 256 + #define MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_MASK 0x7F 257 + #define MT6359_RG_BUCK_VCORE_SSHUB_VOSEL_SHIFT 4 258 + #define MT6359_RG_BUCK_VCORE_VOSEL_ADDR MT6359_BUCK_VCORE_ELR0 259 + #define MT6359_RG_BUCK_VCORE_VOSEL_MASK 0x7F 260 + #define MT6359_RG_BUCK_VCORE_VOSEL_SHIFT 0 261 + #define MT6359_RG_BUCK_VGPU11_EN_ADDR MT6359_BUCK_VGPU11_CON0 262 + #define MT6359_RG_BUCK_VGPU11_LP_ADDR MT6359_BUCK_VGPU11_CON0 263 + #define MT6359_RG_BUCK_VGPU11_LP_SHIFT 1 264 + #define MT6359_DA_VGPU11_VOSEL_ADDR MT6359_BUCK_VGPU11_DBG0 265 + #define MT6359_DA_VGPU11_VOSEL_MASK 0x7F 266 + #define MT6359_DA_VGPU11_VOSEL_SHIFT 0 267 + #define MT6359_DA_VGPU11_EN_ADDR MT6359_BUCK_VGPU11_DBG1 268 + #define MT6359_RG_BUCK_VGPU11_VOSEL_ADDR MT6359_BUCK_VGPU11_ELR0 269 + #define MT6359_RG_BUCK_VGPU11_VOSEL_MASK 0x7F 270 + #define MT6359_RG_BUCK_VGPU11_VOSEL_SHIFT 0 271 + #define MT6359_RG_BUCK_VMODEM_EN_ADDR MT6359_BUCK_VMODEM_CON0 272 + #define MT6359_RG_BUCK_VMODEM_LP_ADDR MT6359_BUCK_VMODEM_CON0 273 + #define MT6359_RG_BUCK_VMODEM_LP_SHIFT 1 274 + #define MT6359_DA_VMODEM_VOSEL_ADDR MT6359_BUCK_VMODEM_DBG0 275 + #define MT6359_DA_VMODEM_VOSEL_MASK 0x7F 276 + #define MT6359_DA_VMODEM_VOSEL_SHIFT 0 277 + #define MT6359_DA_VMODEM_EN_ADDR MT6359_BUCK_VMODEM_DBG1 278 + #define MT6359_RG_BUCK_VMODEM_VOSEL_ADDR MT6359_BUCK_VMODEM_ELR0 279 + #define MT6359_RG_BUCK_VMODEM_VOSEL_MASK 0x7F 280 + #define MT6359_RG_BUCK_VMODEM_VOSEL_SHIFT 0 281 + #define MT6359_RG_BUCK_VPROC1_EN_ADDR MT6359_BUCK_VPROC1_CON0 282 + #define MT6359_RG_BUCK_VPROC1_LP_ADDR MT6359_BUCK_VPROC1_CON0 283 + #define MT6359_RG_BUCK_VPROC1_LP_SHIFT 1 284 + #define MT6359_DA_VPROC1_VOSEL_ADDR MT6359_BUCK_VPROC1_DBG0 285 + #define MT6359_DA_VPROC1_VOSEL_MASK 0x7F 286 + #define MT6359_DA_VPROC1_VOSEL_SHIFT 0 287 + #define MT6359_DA_VPROC1_EN_ADDR MT6359_BUCK_VPROC1_DBG1 288 + #define MT6359_RG_BUCK_VPROC1_VOSEL_ADDR MT6359_BUCK_VPROC1_ELR0 289 + #define MT6359_RG_BUCK_VPROC1_VOSEL_MASK 0x7F 290 + #define MT6359_RG_BUCK_VPROC1_VOSEL_SHIFT 0 291 + #define MT6359_RG_BUCK_VPROC2_EN_ADDR MT6359_BUCK_VPROC2_CON0 292 + #define MT6359_RG_BUCK_VPROC2_LP_ADDR MT6359_BUCK_VPROC2_CON0 293 + #define MT6359_RG_BUCK_VPROC2_LP_SHIFT 1 294 + #define MT6359_DA_VPROC2_VOSEL_ADDR MT6359_BUCK_VPROC2_DBG0 295 + #define MT6359_DA_VPROC2_VOSEL_MASK 0x7F 296 + #define MT6359_DA_VPROC2_VOSEL_SHIFT 0 297 + #define MT6359_DA_VPROC2_EN_ADDR MT6359_BUCK_VPROC2_DBG1 298 + #define MT6359_RG_BUCK_VPROC2_VOSEL_ADDR MT6359_BUCK_VPROC2_ELR0 299 + #define MT6359_RG_BUCK_VPROC2_VOSEL_MASK 0x7F 300 + #define MT6359_RG_BUCK_VPROC2_VOSEL_SHIFT 0 301 + #define MT6359_RG_BUCK_VS1_EN_ADDR MT6359_BUCK_VS1_CON0 302 + #define MT6359_RG_BUCK_VS1_LP_ADDR MT6359_BUCK_VS1_CON0 303 + #define MT6359_RG_BUCK_VS1_LP_SHIFT 1 304 + #define MT6359_DA_VS1_VOSEL_ADDR MT6359_BUCK_VS1_DBG0 305 + #define MT6359_DA_VS1_VOSEL_MASK 0x7F 306 + #define MT6359_DA_VS1_VOSEL_SHIFT 0 307 + #define MT6359_DA_VS1_EN_ADDR MT6359_BUCK_VS1_DBG1 308 + #define MT6359_RG_BUCK_VS1_VOSEL_ADDR MT6359_BUCK_VS1_ELR0 309 + #define MT6359_RG_BUCK_VS1_VOSEL_MASK 0x7F 310 + #define MT6359_RG_BUCK_VS1_VOSEL_SHIFT 0 311 + #define MT6359_RG_BUCK_VS2_EN_ADDR MT6359_BUCK_VS2_CON0 312 + #define MT6359_RG_BUCK_VS2_LP_ADDR MT6359_BUCK_VS2_CON0 313 + #define MT6359_RG_BUCK_VS2_LP_SHIFT 1 314 + #define MT6359_DA_VS2_VOSEL_ADDR MT6359_BUCK_VS2_DBG0 315 + #define MT6359_DA_VS2_VOSEL_MASK 0x7F 316 + #define MT6359_DA_VS2_VOSEL_SHIFT 0 317 + #define MT6359_DA_VS2_EN_ADDR MT6359_BUCK_VS2_DBG1 318 + #define MT6359_RG_BUCK_VS2_VOSEL_ADDR MT6359_BUCK_VS2_ELR0 319 + #define MT6359_RG_BUCK_VS2_VOSEL_MASK 0x7F 320 + #define MT6359_RG_BUCK_VS2_VOSEL_SHIFT 0 321 + #define MT6359_RG_BUCK_VPA_EN_ADDR MT6359_BUCK_VPA_CON0 322 + #define MT6359_RG_BUCK_VPA_LP_ADDR MT6359_BUCK_VPA_CON0 323 + #define MT6359_RG_BUCK_VPA_LP_SHIFT 1 324 + #define MT6359_RG_BUCK_VPA_VOSEL_ADDR MT6359_BUCK_VPA_CON1 325 + #define MT6359_RG_BUCK_VPA_VOSEL_MASK 0x3F 326 + #define MT6359_RG_BUCK_VPA_VOSEL_SHIFT 0 327 + #define MT6359_DA_VPA_VOSEL_ADDR MT6359_BUCK_VPA_DBG0 328 + #define MT6359_DA_VPA_VOSEL_MASK 0x3F 329 + #define MT6359_DA_VPA_VOSEL_SHIFT 0 330 + #define MT6359_DA_VPA_EN_ADDR MT6359_BUCK_VPA_DBG1 331 + #define MT6359_RG_VGPU11_FCCM_ADDR MT6359_VGPUVCORE_ANA_CON2 332 + #define MT6359_RG_VGPU11_FCCM_SHIFT 9 333 + #define MT6359_RG_VCORE_FCCM_ADDR MT6359_VGPUVCORE_ANA_CON13 334 + #define MT6359_RG_VCORE_FCCM_SHIFT 5 335 + #define MT6359_RG_VPROC1_FCCM_ADDR MT6359_VPROC1_ANA_CON3 336 + #define MT6359_RG_VPROC1_FCCM_SHIFT 1 337 + #define MT6359_RG_VPROC2_FCCM_ADDR MT6359_VPROC2_ANA_CON3 338 + #define MT6359_RG_VPROC2_FCCM_SHIFT 1 339 + #define MT6359_RG_VMODEM_FCCM_ADDR MT6359_VMODEM_ANA_CON3 340 + #define MT6359_RG_VMODEM_FCCM_SHIFT 1 341 + #define MT6359_RG_VPU_FCCM_ADDR MT6359_VPU_ANA_CON3 342 + #define MT6359_RG_VPU_FCCM_SHIFT 1 343 + #define MT6359_RG_VS1_FPWM_ADDR MT6359_VS1_ANA_CON0 344 + #define MT6359_RG_VS1_FPWM_SHIFT 3 345 + #define MT6359_RG_VS2_FPWM_ADDR MT6359_VS2_ANA_CON0 346 + #define MT6359_RG_VS2_FPWM_SHIFT 3 347 + #define MT6359_RG_VPA_MODESET_ADDR MT6359_VPA_ANA_CON0 348 + #define MT6359_RG_VPA_MODESET_SHIFT 1 349 + #define MT6359_RG_LDO_VSRAM_PROC1_VOSEL_ADDR MT6359_LDO_VSRAM_PROC1_ELR 350 + #define MT6359_RG_LDO_VSRAM_PROC1_VOSEL_MASK 0x7F 351 + #define MT6359_RG_LDO_VSRAM_PROC1_VOSEL_SHIFT 0 352 + #define MT6359_RG_LDO_VSRAM_PROC2_VOSEL_ADDR MT6359_LDO_VSRAM_PROC2_ELR 353 + #define MT6359_RG_LDO_VSRAM_PROC2_VOSEL_MASK 0x7F 354 + #define MT6359_RG_LDO_VSRAM_PROC2_VOSEL_SHIFT 0 355 + #define MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_ADDR MT6359_LDO_VSRAM_OTHERS_ELR 356 + #define MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_MASK 0x7F 357 + #define MT6359_RG_LDO_VSRAM_OTHERS_VOSEL_SHIFT 0 358 + #define MT6359_RG_LDO_VSRAM_MD_VOSEL_ADDR MT6359_LDO_VSRAM_MD_ELR 359 + #define MT6359_RG_LDO_VSRAM_MD_VOSEL_MASK 0x7F 360 + #define MT6359_RG_LDO_VSRAM_MD_VOSEL_SHIFT 0 361 + #define MT6359_RG_LDO_VFE28_EN_ADDR MT6359_LDO_VFE28_CON0 362 + #define MT6359_DA_VFE28_B_EN_ADDR MT6359_LDO_VFE28_MON 363 + #define MT6359_RG_LDO_VXO22_EN_ADDR MT6359_LDO_VXO22_CON0 364 + #define MT6359_RG_LDO_VXO22_EN_SHIFT 0 365 + #define MT6359_DA_VXO22_B_EN_ADDR MT6359_LDO_VXO22_MON 366 + #define MT6359_RG_LDO_VRF18_EN_ADDR MT6359_LDO_VRF18_CON0 367 + #define MT6359_RG_LDO_VRF18_EN_SHIFT 0 368 + #define MT6359_DA_VRF18_B_EN_ADDR MT6359_LDO_VRF18_MON 369 + #define MT6359_RG_LDO_VRF12_EN_ADDR MT6359_LDO_VRF12_CON0 370 + #define MT6359_RG_LDO_VRF12_EN_SHIFT 0 371 + #define MT6359_DA_VRF12_B_EN_ADDR MT6359_LDO_VRF12_MON 372 + #define MT6359_RG_LDO_VEFUSE_EN_ADDR MT6359_LDO_VEFUSE_CON0 373 + #define MT6359_RG_LDO_VEFUSE_EN_SHIFT 0 374 + #define MT6359_DA_VEFUSE_B_EN_ADDR MT6359_LDO_VEFUSE_MON 375 + #define MT6359_RG_LDO_VCN33_1_EN_0_ADDR MT6359_LDO_VCN33_1_CON0 376 + #define MT6359_RG_LDO_VCN33_1_EN_0_MASK 0x1 377 + #define MT6359_RG_LDO_VCN33_1_EN_0_SHIFT 0 378 + #define MT6359_DA_VCN33_1_B_EN_ADDR MT6359_LDO_VCN33_1_MON 379 + #define MT6359_RG_LDO_VCN33_1_EN_1_ADDR MT6359_LDO_VCN33_1_MULTI_SW 380 + #define MT6359_RG_LDO_VCN33_1_EN_1_SHIFT 15 381 + #define MT6359_RG_LDO_VCN33_2_EN_0_ADDR MT6359_LDO_VCN33_2_CON0 382 + #define MT6359_RG_LDO_VCN33_2_EN_0_SHIFT 0 383 + #define MT6359_DA_VCN33_2_B_EN_ADDR MT6359_LDO_VCN33_2_MON 384 + #define MT6359_RG_LDO_VCN33_2_EN_1_ADDR MT6359_LDO_VCN33_2_MULTI_SW 385 + #define MT6359_RG_LDO_VCN33_2_EN_1_MASK 0x1 386 + #define MT6359_RG_LDO_VCN33_2_EN_1_SHIFT 15 387 + #define MT6359_RG_LDO_VCN13_EN_ADDR MT6359_LDO_VCN13_CON0 388 + #define MT6359_RG_LDO_VCN13_EN_SHIFT 0 389 + #define MT6359_DA_VCN13_B_EN_ADDR MT6359_LDO_VCN13_MON 390 + #define MT6359_RG_LDO_VCN18_EN_ADDR MT6359_LDO_VCN18_CON0 391 + #define MT6359_DA_VCN18_B_EN_ADDR MT6359_LDO_VCN18_MON 392 + #define MT6359_RG_LDO_VA09_EN_ADDR MT6359_LDO_VA09_CON0 393 + #define MT6359_RG_LDO_VA09_EN_SHIFT 0 394 + #define MT6359_DA_VA09_B_EN_ADDR MT6359_LDO_VA09_MON 395 + #define MT6359_RG_LDO_VCAMIO_EN_ADDR MT6359_LDO_VCAMIO_CON0 396 + #define MT6359_RG_LDO_VCAMIO_EN_SHIFT 0 397 + #define MT6359_DA_VCAMIO_B_EN_ADDR MT6359_LDO_VCAMIO_MON 398 + #define MT6359_RG_LDO_VA12_EN_ADDR MT6359_LDO_VA12_CON0 399 + #define MT6359_RG_LDO_VA12_EN_SHIFT 0 400 + #define MT6359_DA_VA12_B_EN_ADDR MT6359_LDO_VA12_MON 401 + #define MT6359_RG_LDO_VAUX18_EN_ADDR MT6359_LDO_VAUX18_CON0 402 + #define MT6359_DA_VAUX18_B_EN_ADDR MT6359_LDO_VAUX18_MON 403 + #define MT6359_RG_LDO_VAUD18_EN_ADDR MT6359_LDO_VAUD18_CON0 404 + #define MT6359_DA_VAUD18_B_EN_ADDR MT6359_LDO_VAUD18_MON 405 + #define MT6359_RG_LDO_VIO18_EN_ADDR MT6359_LDO_VIO18_CON0 406 + #define MT6359_RG_LDO_VIO18_EN_SHIFT 0 407 + #define MT6359_DA_VIO18_B_EN_ADDR MT6359_LDO_VIO18_MON 408 + #define MT6359_RG_LDO_VEMC_EN_ADDR MT6359_LDO_VEMC_CON0 409 + #define MT6359_RG_LDO_VEMC_EN_SHIFT 0 410 + #define MT6359_DA_VEMC_B_EN_ADDR MT6359_LDO_VEMC_MON 411 + #define MT6359_RG_LDO_VSIM1_EN_ADDR MT6359_LDO_VSIM1_CON0 412 + #define MT6359_RG_LDO_VSIM1_EN_SHIFT 0 413 + #define MT6359_DA_VSIM1_B_EN_ADDR MT6359_LDO_VSIM1_MON 414 + #define MT6359_RG_LDO_VSIM2_EN_ADDR MT6359_LDO_VSIM2_CON0 415 + #define MT6359_RG_LDO_VSIM2_EN_SHIFT 0 416 + #define MT6359_DA_VSIM2_B_EN_ADDR MT6359_LDO_VSIM2_MON 417 + #define MT6359_RG_LDO_VUSB_EN_0_ADDR MT6359_LDO_VUSB_CON0 418 + #define MT6359_RG_LDO_VUSB_EN_0_MASK 0x1 419 + #define MT6359_RG_LDO_VUSB_EN_0_SHIFT 0 420 + #define MT6359_DA_VUSB_B_EN_ADDR MT6359_LDO_VUSB_MON 421 + #define MT6359_RG_LDO_VUSB_EN_1_ADDR MT6359_LDO_VUSB_MULTI_SW 422 + #define MT6359_RG_LDO_VUSB_EN_1_MASK 0x1 423 + #define MT6359_RG_LDO_VUSB_EN_1_SHIFT 15 424 + #define MT6359_RG_LDO_VRFCK_EN_ADDR MT6359_LDO_VRFCK_CON0 425 + #define MT6359_RG_LDO_VRFCK_EN_SHIFT 0 426 + #define MT6359_DA_VRFCK_B_EN_ADDR MT6359_LDO_VRFCK_MON 427 + #define MT6359_RG_LDO_VBBCK_EN_ADDR MT6359_LDO_VBBCK_CON0 428 + #define MT6359_RG_LDO_VBBCK_EN_SHIFT 0 429 + #define MT6359_DA_VBBCK_B_EN_ADDR MT6359_LDO_VBBCK_MON 430 + #define MT6359_RG_LDO_VBIF28_EN_ADDR MT6359_LDO_VBIF28_CON0 431 + #define MT6359_DA_VBIF28_B_EN_ADDR MT6359_LDO_VBIF28_MON 432 + #define MT6359_RG_LDO_VIBR_EN_ADDR MT6359_LDO_VIBR_CON0 433 + #define MT6359_RG_LDO_VIBR_EN_SHIFT 0 434 + #define MT6359_DA_VIBR_B_EN_ADDR MT6359_LDO_VIBR_MON 435 + #define MT6359_RG_LDO_VIO28_EN_ADDR MT6359_LDO_VIO28_CON0 436 + #define MT6359_RG_LDO_VIO28_EN_SHIFT 0 437 + #define MT6359_DA_VIO28_B_EN_ADDR MT6359_LDO_VIO28_MON 438 + #define MT6359_RG_LDO_VM18_EN_ADDR MT6359_LDO_VM18_CON0 439 + #define MT6359_RG_LDO_VM18_EN_SHIFT 0 440 + #define MT6359_DA_VM18_B_EN_ADDR MT6359_LDO_VM18_MON 441 + #define MT6359_RG_LDO_VUFS_EN_ADDR MT6359_LDO_VUFS_CON0 442 + #define MT6359_RG_LDO_VUFS_EN_SHIFT 0 443 + #define MT6359_DA_VUFS_B_EN_ADDR MT6359_LDO_VUFS_MON 444 + #define MT6359_RG_LDO_VSRAM_PROC1_EN_ADDR MT6359_LDO_VSRAM_PROC1_CON0 445 + #define MT6359_DA_VSRAM_PROC1_B_EN_ADDR MT6359_LDO_VSRAM_PROC1_MON 446 + #define MT6359_DA_VSRAM_PROC1_VOSEL_ADDR MT6359_LDO_VSRAM_PROC1_VOSEL1 447 + #define MT6359_DA_VSRAM_PROC1_VOSEL_MASK 0x7F 448 + #define MT6359_DA_VSRAM_PROC1_VOSEL_SHIFT 8 449 + #define MT6359_RG_LDO_VSRAM_PROC2_EN_ADDR MT6359_LDO_VSRAM_PROC2_CON0 450 + #define MT6359_DA_VSRAM_PROC2_B_EN_ADDR MT6359_LDO_VSRAM_PROC2_MON 451 + #define MT6359_DA_VSRAM_PROC2_VOSEL_ADDR MT6359_LDO_VSRAM_PROC2_VOSEL1 452 + #define MT6359_DA_VSRAM_PROC2_VOSEL_MASK 0x7F 453 + #define MT6359_DA_VSRAM_PROC2_VOSEL_SHIFT 8 454 + #define MT6359_RG_LDO_VSRAM_OTHERS_EN_ADDR MT6359_LDO_VSRAM_OTHERS_CON0 455 + #define MT6359_DA_VSRAM_OTHERS_B_EN_ADDR MT6359_LDO_VSRAM_OTHERS_MON 456 + #define MT6359_DA_VSRAM_OTHERS_VOSEL_ADDR MT6359_LDO_VSRAM_OTHERS_VOSEL1 457 + #define MT6359_DA_VSRAM_OTHERS_VOSEL_MASK 0x7F 458 + #define MT6359_DA_VSRAM_OTHERS_VOSEL_SHIFT 8 459 + #define MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_EN_ADDR MT6359_LDO_VSRAM_OTHERS_SSHUB 460 + #define MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_ADDR MT6359_LDO_VSRAM_OTHERS_SSHUB 461 + #define MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_MASK 0x7F 462 + #define MT6359_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_SHIFT 1 463 + #define MT6359_RG_LDO_VSRAM_MD_EN_ADDR MT6359_LDO_VSRAM_MD_CON0 464 + #define MT6359_DA_VSRAM_MD_B_EN_ADDR MT6359_LDO_VSRAM_MD_MON 465 + #define MT6359_DA_VSRAM_MD_VOSEL_ADDR MT6359_LDO_VSRAM_MD_VOSEL1 466 + #define MT6359_DA_VSRAM_MD_VOSEL_MASK 0x7F 467 + #define MT6359_DA_VSRAM_MD_VOSEL_SHIFT 8 468 + #define MT6359_RG_VCN33_1_VOSEL_ADDR MT6359_VCN33_1_ANA_CON0 469 + #define MT6359_RG_VCN33_1_VOSEL_MASK 0xF 470 + #define MT6359_RG_VCN33_1_VOSEL_SHIFT 8 471 + #define MT6359_RG_VCN33_2_VOSEL_ADDR MT6359_VCN33_2_ANA_CON0 472 + #define MT6359_RG_VCN33_2_VOSEL_MASK 0xF 473 + #define MT6359_RG_VCN33_2_VOSEL_SHIFT 8 474 + #define MT6359_RG_VEMC_VOSEL_ADDR MT6359_VEMC_ANA_CON0 475 + #define MT6359_RG_VEMC_VOSEL_MASK 0xF 476 + #define MT6359_RG_VEMC_VOSEL_SHIFT 8 477 + #define MT6359_RG_VSIM1_VOSEL_ADDR MT6359_VSIM1_ANA_CON0 478 + #define MT6359_RG_VSIM1_VOSEL_MASK 0xF 479 + #define MT6359_RG_VSIM1_VOSEL_SHIFT 8 480 + #define MT6359_RG_VSIM2_VOSEL_ADDR MT6359_VSIM2_ANA_CON0 481 + #define MT6359_RG_VSIM2_VOSEL_MASK 0xF 482 + #define MT6359_RG_VSIM2_VOSEL_SHIFT 8 483 + #define MT6359_RG_VIO28_VOSEL_ADDR MT6359_VIO28_ANA_CON0 484 + #define MT6359_RG_VIO28_VOSEL_MASK 0xF 485 + #define MT6359_RG_VIO28_VOSEL_SHIFT 8 486 + #define MT6359_RG_VIBR_VOSEL_ADDR MT6359_VIBR_ANA_CON0 487 + #define MT6359_RG_VIBR_VOSEL_MASK 0xF 488 + #define MT6359_RG_VIBR_VOSEL_SHIFT 8 489 + #define MT6359_RG_VRF18_VOSEL_ADDR MT6359_VRF18_ANA_CON0 490 + #define MT6359_RG_VRF18_VOSEL_MASK 0xF 491 + #define MT6359_RG_VRF18_VOSEL_SHIFT 8 492 + #define MT6359_RG_VEFUSE_VOSEL_ADDR MT6359_VEFUSE_ANA_CON0 493 + #define MT6359_RG_VEFUSE_VOSEL_MASK 0xF 494 + #define MT6359_RG_VEFUSE_VOSEL_SHIFT 8 495 + #define MT6359_RG_VCAMIO_VOSEL_ADDR MT6359_VCAMIO_ANA_CON0 496 + #define MT6359_RG_VCAMIO_VOSEL_MASK 0xF 497 + #define MT6359_RG_VCAMIO_VOSEL_SHIFT 8 498 + #define MT6359_RG_VIO18_VOSEL_ADDR MT6359_VIO18_ANA_CON0 499 + #define MT6359_RG_VIO18_VOSEL_MASK 0xF 500 + #define MT6359_RG_VIO18_VOSEL_SHIFT 8 501 + #define MT6359_RG_VM18_VOSEL_ADDR MT6359_VM18_ANA_CON0 502 + #define MT6359_RG_VM18_VOSEL_MASK 0xF 503 + #define MT6359_RG_VM18_VOSEL_SHIFT 8 504 + #define MT6359_RG_VUFS_VOSEL_ADDR MT6359_VUFS_ANA_CON0 505 + #define MT6359_RG_VUFS_VOSEL_MASK 0xF 506 + #define MT6359_RG_VUFS_VOSEL_SHIFT 8 507 + #define MT6359_RG_VRF12_VOSEL_ADDR MT6359_VRF12_ANA_CON0 508 + #define MT6359_RG_VRF12_VOSEL_MASK 0xF 509 + #define MT6359_RG_VRF12_VOSEL_SHIFT 8 510 + #define MT6359_RG_VCN13_VOSEL_ADDR MT6359_VCN13_ANA_CON0 511 + #define MT6359_RG_VCN13_VOSEL_MASK 0xF 512 + #define MT6359_RG_VCN13_VOSEL_SHIFT 8 513 + #define MT6359_RG_VA09_VOSEL_ADDR MT6359_VA09_ANA_CON0 514 + #define MT6359_RG_VA09_VOSEL_MASK 0xF 515 + #define MT6359_RG_VA09_VOSEL_SHIFT 8 516 + #define MT6359_RG_VA12_VOSEL_ADDR MT6359_VA12_ANA_CON0 517 + #define MT6359_RG_VA12_VOSEL_MASK 0xF 518 + #define MT6359_RG_VA12_VOSEL_SHIFT 8 519 + #define MT6359_RG_VXO22_VOSEL_ADDR MT6359_VXO22_ANA_CON0 520 + #define MT6359_RG_VXO22_VOSEL_MASK 0xF 521 + #define MT6359_RG_VXO22_VOSEL_SHIFT 8 522 + #define MT6359_RG_VRFCK_VOSEL_ADDR MT6359_VRFCK_ANA_CON0 523 + #define MT6359_RG_VRFCK_VOSEL_MASK 0xF 524 + #define MT6359_RG_VRFCK_VOSEL_SHIFT 8 525 + #define MT6359_RG_VBBCK_VOSEL_ADDR MT6359_VBBCK_ANA_CON0 526 + #define MT6359_RG_VBBCK_VOSEL_MASK 0xF 527 + #define MT6359_RG_VBBCK_VOSEL_SHIFT 8 528 + 529 + #endif /* __MFD_MT6359_REGISTERS_H__ */
+249
include/linux/mfd/mt6359p/registers.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2021 MediaTek Inc. 4 + */ 5 + 6 + #ifndef __MFD_MT6359P_REGISTERS_H__ 7 + #define __MFD_MT6359P_REGISTERS_H__ 8 + 9 + #define MT6359P_CHIP_VER 0x5930 10 + 11 + /* PMIC Registers */ 12 + #define MT6359P_HWCID 0x8 13 + #define MT6359P_TOP_TRAP 0x50 14 + #define MT6359P_TOP_TMA_KEY 0x3a8 15 + #define MT6359P_BUCK_VCORE_ELR_NUM 0x152a 16 + #define MT6359P_BUCK_VCORE_ELR0 0x152c 17 + #define MT6359P_BUCK_VGPU11_SSHUB_CON0 0x15aa 18 + #define MT6359P_BUCK_VGPU11_ELR0 0x15b4 19 + #define MT6359P_LDO_VSRAM_PROC1_ELR 0x1b44 20 + #define MT6359P_LDO_VSRAM_PROC2_ELR 0x1b46 21 + #define MT6359P_LDO_VSRAM_OTHERS_ELR 0x1b48 22 + #define MT6359P_LDO_VSRAM_MD_ELR 0x1b4a 23 + #define MT6359P_LDO_VEMC_ELR_0 0x1b4c 24 + #define MT6359P_LDO_VFE28_CON0 0x1b88 25 + #define MT6359P_LDO_VFE28_MON 0x1b8c 26 + #define MT6359P_LDO_VXO22_CON0 0x1b9a 27 + #define MT6359P_LDO_VXO22_MON 0x1b9e 28 + #define MT6359P_LDO_VRF18_CON0 0x1bac 29 + #define MT6359P_LDO_VRF18_MON 0x1bb0 30 + #define MT6359P_LDO_VRF12_CON0 0x1bbe 31 + #define MT6359P_LDO_VRF12_MON 0x1bc2 32 + #define MT6359P_LDO_VEFUSE_CON0 0x1bd0 33 + #define MT6359P_LDO_VEFUSE_MON 0x1bd4 34 + #define MT6359P_LDO_VCN33_1_CON0 0x1be2 35 + #define MT6359P_LDO_VCN33_1_MON 0x1be6 36 + #define MT6359P_LDO_VCN33_1_MULTI_SW 0x1bf4 37 + #define MT6359P_LDO_VCN33_2_CON0 0x1c08 38 + #define MT6359P_LDO_VCN33_2_MON 0x1c0c 39 + #define MT6359P_LDO_VCN33_2_MULTI_SW 0x1c1a 40 + #define MT6359P_LDO_VCN13_CON0 0x1c1c 41 + #define MT6359P_LDO_VCN13_MON 0x1c20 42 + #define MT6359P_LDO_VCN18_CON0 0x1c2e 43 + #define MT6359P_LDO_VCN18_MON 0x1c32 44 + #define MT6359P_LDO_VA09_CON0 0x1c40 45 + #define MT6359P_LDO_VA09_MON 0x1c44 46 + #define MT6359P_LDO_VCAMIO_CON0 0x1c52 47 + #define MT6359P_LDO_VCAMIO_MON 0x1c56 48 + #define MT6359P_LDO_VA12_CON0 0x1c64 49 + #define MT6359P_LDO_VA12_MON 0x1c68 50 + #define MT6359P_LDO_VAUX18_CON0 0x1c88 51 + #define MT6359P_LDO_VAUX18_MON 0x1c8c 52 + #define MT6359P_LDO_VAUD18_CON0 0x1c9a 53 + #define MT6359P_LDO_VAUD18_MON 0x1c9e 54 + #define MT6359P_LDO_VIO18_CON0 0x1cac 55 + #define MT6359P_LDO_VIO18_MON 0x1cb0 56 + #define MT6359P_LDO_VEMC_CON0 0x1cbe 57 + #define MT6359P_LDO_VEMC_MON 0x1cc2 58 + #define MT6359P_LDO_VSIM1_CON0 0x1cd0 59 + #define MT6359P_LDO_VSIM1_MON 0x1cd4 60 + #define MT6359P_LDO_VSIM2_CON0 0x1ce2 61 + #define MT6359P_LDO_VSIM2_MON 0x1ce6 62 + #define MT6359P_LDO_VUSB_CON0 0x1d08 63 + #define MT6359P_LDO_VUSB_MON 0x1d0c 64 + #define MT6359P_LDO_VUSB_MULTI_SW 0x1d1a 65 + #define MT6359P_LDO_VRFCK_CON0 0x1d1c 66 + #define MT6359P_LDO_VRFCK_MON 0x1d20 67 + #define MT6359P_LDO_VBBCK_CON0 0x1d2e 68 + #define MT6359P_LDO_VBBCK_MON 0x1d32 69 + #define MT6359P_LDO_VBIF28_CON0 0x1d40 70 + #define MT6359P_LDO_VBIF28_MON 0x1d44 71 + #define MT6359P_LDO_VIBR_CON0 0x1d52 72 + #define MT6359P_LDO_VIBR_MON 0x1d56 73 + #define MT6359P_LDO_VIO28_CON0 0x1d64 74 + #define MT6359P_LDO_VIO28_MON 0x1d68 75 + #define MT6359P_LDO_VM18_CON0 0x1d88 76 + #define MT6359P_LDO_VM18_MON 0x1d8c 77 + #define MT6359P_LDO_VUFS_CON0 0x1d9a 78 + #define MT6359P_LDO_VUFS_MON 0x1d9e 79 + #define MT6359P_LDO_VSRAM_PROC1_CON0 0x1e88 80 + #define MT6359P_LDO_VSRAM_PROC1_MON 0x1e8c 81 + #define MT6359P_LDO_VSRAM_PROC1_VOSEL1 0x1e90 82 + #define MT6359P_LDO_VSRAM_PROC2_CON0 0x1ea8 83 + #define MT6359P_LDO_VSRAM_PROC2_MON 0x1eac 84 + #define MT6359P_LDO_VSRAM_PROC2_VOSEL1 0x1eb0 85 + #define MT6359P_LDO_VSRAM_OTHERS_CON0 0x1f08 86 + #define MT6359P_LDO_VSRAM_OTHERS_MON 0x1f0c 87 + #define MT6359P_LDO_VSRAM_OTHERS_VOSEL1 0x1f10 88 + #define MT6359P_LDO_VSRAM_OTHERS_SSHUB 0x1f28 89 + #define MT6359P_LDO_VSRAM_MD_CON0 0x1f2e 90 + #define MT6359P_LDO_VSRAM_MD_MON 0x1f32 91 + #define MT6359P_LDO_VSRAM_MD_VOSEL1 0x1f36 92 + #define MT6359P_VFE28_ANA_CON0 0x1f88 93 + #define MT6359P_VAUX18_ANA_CON0 0x1f8c 94 + #define MT6359P_VUSB_ANA_CON0 0x1f90 95 + #define MT6359P_VBIF28_ANA_CON0 0x1f94 96 + #define MT6359P_VCN33_1_ANA_CON0 0x1f98 97 + #define MT6359P_VCN33_2_ANA_CON0 0x1f9c 98 + #define MT6359P_VEMC_ANA_CON0 0x1fa0 99 + #define MT6359P_VSIM1_ANA_CON0 0x1fa2 100 + #define MT6359P_VSIM2_ANA_CON0 0x1fa6 101 + #define MT6359P_VIO28_ANA_CON0 0x1faa 102 + #define MT6359P_VIBR_ANA_CON0 0x1fae 103 + #define MT6359P_VFE28_ELR_4 0x1fc0 104 + #define MT6359P_VRF18_ANA_CON0 0x2008 105 + #define MT6359P_VEFUSE_ANA_CON0 0x200c 106 + #define MT6359P_VCN18_ANA_CON0 0x2010 107 + #define MT6359P_VCAMIO_ANA_CON0 0x2014 108 + #define MT6359P_VAUD18_ANA_CON0 0x2018 109 + #define MT6359P_VIO18_ANA_CON0 0x201c 110 + #define MT6359P_VM18_ANA_CON0 0x2020 111 + #define MT6359P_VUFS_ANA_CON0 0x2024 112 + #define MT6359P_VRF12_ANA_CON0 0x202a 113 + #define MT6359P_VCN13_ANA_CON0 0x202e 114 + #define MT6359P_VA09_ANA_CON0 0x2032 115 + #define MT6359P_VRF18_ELR_3 0x204e 116 + #define MT6359P_VXO22_ANA_CON0 0x2088 117 + #define MT6359P_VRFCK_ANA_CON0 0x208c 118 + #define MT6359P_VBBCK_ANA_CON0 0x2096 119 + 120 + #define MT6359P_RG_BUCK_VCORE_VOSEL_ADDR MT6359P_BUCK_VCORE_ELR0 121 + #define MT6359P_RG_BUCK_VGPU11_SSHUB_EN_ADDR MT6359P_BUCK_VGPU11_SSHUB_CON0 122 + #define MT6359P_RG_BUCK_VGPU11_VOSEL_ADDR MT6359P_BUCK_VGPU11_ELR0 123 + #define MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_ADDR MT6359P_BUCK_VGPU11_SSHUB_CON0 124 + #define MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_MASK 0x7F 125 + #define MT6359P_RG_BUCK_VGPU11_SSHUB_VOSEL_SHIFT 4 126 + #define MT6359P_RG_LDO_VSRAM_PROC1_VOSEL_ADDR MT6359P_LDO_VSRAM_PROC1_ELR 127 + #define MT6359P_RG_LDO_VSRAM_PROC2_VOSEL_ADDR MT6359P_LDO_VSRAM_PROC2_ELR 128 + #define MT6359P_RG_LDO_VSRAM_OTHERS_VOSEL_ADDR MT6359P_LDO_VSRAM_OTHERS_ELR 129 + #define MT6359P_RG_LDO_VSRAM_MD_VOSEL_ADDR MT6359P_LDO_VSRAM_MD_ELR 130 + #define MT6359P_RG_LDO_VEMC_VOSEL_0_ADDR MT6359P_LDO_VEMC_ELR_0 131 + #define MT6359P_RG_LDO_VEMC_VOSEL_0_MASK 0xF 132 + #define MT6359P_RG_LDO_VEMC_VOSEL_0_SHIFT 0 133 + #define MT6359P_RG_LDO_VFE28_EN_ADDR MT6359P_LDO_VFE28_CON0 134 + #define MT6359P_DA_VFE28_B_EN_ADDR MT6359P_LDO_VFE28_MON 135 + #define MT6359P_RG_LDO_VXO22_EN_ADDR MT6359P_LDO_VXO22_CON0 136 + #define MT6359P_RG_LDO_VXO22_EN_SHIFT 0 137 + #define MT6359P_DA_VXO22_B_EN_ADDR MT6359P_LDO_VXO22_MON 138 + #define MT6359P_RG_LDO_VRF18_EN_ADDR MT6359P_LDO_VRF18_CON0 139 + #define MT6359P_RG_LDO_VRF18_EN_SHIFT 0 140 + #define MT6359P_DA_VRF18_B_EN_ADDR MT6359P_LDO_VRF18_MON 141 + #define MT6359P_RG_LDO_VRF12_EN_ADDR MT6359P_LDO_VRF12_CON0 142 + #define MT6359P_RG_LDO_VRF12_EN_SHIFT 0 143 + #define MT6359P_DA_VRF12_B_EN_ADDR MT6359P_LDO_VRF12_MON 144 + #define MT6359P_RG_LDO_VEFUSE_EN_ADDR MT6359P_LDO_VEFUSE_CON0 145 + #define MT6359P_RG_LDO_VEFUSE_EN_SHIFT 0 146 + #define MT6359P_DA_VEFUSE_B_EN_ADDR MT6359P_LDO_VEFUSE_MON 147 + #define MT6359P_RG_LDO_VCN33_1_EN_0_ADDR MT6359P_LDO_VCN33_1_CON0 148 + #define MT6359P_DA_VCN33_1_B_EN_ADDR MT6359P_LDO_VCN33_1_MON 149 + #define MT6359P_RG_LDO_VCN33_1_EN_1_ADDR MT6359P_LDO_VCN33_1_MULTI_SW 150 + #define MT6359P_RG_LDO_VCN33_1_EN_1_SHIFT 15 151 + #define MT6359P_RG_LDO_VCN33_2_EN_0_ADDR MT6359P_LDO_VCN33_2_CON0 152 + #define MT6359P_RG_LDO_VCN33_2_EN_0_SHIFT 0 153 + #define MT6359P_DA_VCN33_2_B_EN_ADDR MT6359P_LDO_VCN33_2_MON 154 + #define MT6359P_RG_LDO_VCN33_2_EN_1_ADDR MT6359P_LDO_VCN33_2_MULTI_SW 155 + #define MT6359P_RG_LDO_VCN13_EN_ADDR MT6359P_LDO_VCN13_CON0 156 + #define MT6359P_RG_LDO_VCN13_EN_SHIFT 0 157 + #define MT6359P_DA_VCN13_B_EN_ADDR MT6359P_LDO_VCN13_MON 158 + #define MT6359P_RG_LDO_VCN18_EN_ADDR MT6359P_LDO_VCN18_CON0 159 + #define MT6359P_DA_VCN18_B_EN_ADDR MT6359P_LDO_VCN18_MON 160 + #define MT6359P_RG_LDO_VA09_EN_ADDR MT6359P_LDO_VA09_CON0 161 + #define MT6359P_RG_LDO_VA09_EN_SHIFT 0 162 + #define MT6359P_DA_VA09_B_EN_ADDR MT6359P_LDO_VA09_MON 163 + #define MT6359P_RG_LDO_VCAMIO_EN_ADDR MT6359P_LDO_VCAMIO_CON0 164 + #define MT6359P_RG_LDO_VCAMIO_EN_SHIFT 0 165 + #define MT6359P_DA_VCAMIO_B_EN_ADDR MT6359P_LDO_VCAMIO_MON 166 + #define MT6359P_RG_LDO_VA12_EN_ADDR MT6359P_LDO_VA12_CON0 167 + #define MT6359P_RG_LDO_VA12_EN_SHIFT 0 168 + #define MT6359P_DA_VA12_B_EN_ADDR MT6359P_LDO_VA12_MON 169 + #define MT6359P_RG_LDO_VAUX18_EN_ADDR MT6359P_LDO_VAUX18_CON0 170 + #define MT6359P_DA_VAUX18_B_EN_ADDR MT6359P_LDO_VAUX18_MON 171 + #define MT6359P_RG_LDO_VAUD18_EN_ADDR MT6359P_LDO_VAUD18_CON0 172 + #define MT6359P_DA_VAUD18_B_EN_ADDR MT6359P_LDO_VAUD18_MON 173 + #define MT6359P_RG_LDO_VIO18_EN_ADDR MT6359P_LDO_VIO18_CON0 174 + #define MT6359P_RG_LDO_VIO18_EN_SHIFT 0 175 + #define MT6359P_DA_VIO18_B_EN_ADDR MT6359P_LDO_VIO18_MON 176 + #define MT6359P_RG_LDO_VEMC_EN_ADDR MT6359P_LDO_VEMC_CON0 177 + #define MT6359P_RG_LDO_VEMC_EN_SHIFT 0 178 + #define MT6359P_DA_VEMC_B_EN_ADDR MT6359P_LDO_VEMC_MON 179 + #define MT6359P_RG_LDO_VSIM1_EN_ADDR MT6359P_LDO_VSIM1_CON0 180 + #define MT6359P_RG_LDO_VSIM1_EN_SHIFT 0 181 + #define MT6359P_DA_VSIM1_B_EN_ADDR MT6359P_LDO_VSIM1_MON 182 + #define MT6359P_RG_LDO_VSIM2_EN_ADDR MT6359P_LDO_VSIM2_CON0 183 + #define MT6359P_RG_LDO_VSIM2_EN_SHIFT 0 184 + #define MT6359P_DA_VSIM2_B_EN_ADDR MT6359P_LDO_VSIM2_MON 185 + #define MT6359P_RG_LDO_VUSB_EN_0_ADDR MT6359P_LDO_VUSB_CON0 186 + #define MT6359P_DA_VUSB_B_EN_ADDR MT6359P_LDO_VUSB_MON 187 + #define MT6359P_RG_LDO_VUSB_EN_1_ADDR MT6359P_LDO_VUSB_MULTI_SW 188 + #define MT6359P_RG_LDO_VRFCK_EN_ADDR MT6359P_LDO_VRFCK_CON0 189 + #define MT6359P_RG_LDO_VRFCK_EN_SHIFT 0 190 + #define MT6359P_DA_VRFCK_B_EN_ADDR MT6359P_LDO_VRFCK_MON 191 + #define MT6359P_RG_LDO_VBBCK_EN_ADDR MT6359P_LDO_VBBCK_CON0 192 + #define MT6359P_RG_LDO_VBBCK_EN_SHIFT 0 193 + #define MT6359P_DA_VBBCK_B_EN_ADDR MT6359P_LDO_VBBCK_MON 194 + #define MT6359P_RG_LDO_VBIF28_EN_ADDR MT6359P_LDO_VBIF28_CON0 195 + #define MT6359P_DA_VBIF28_B_EN_ADDR MT6359P_LDO_VBIF28_MON 196 + #define MT6359P_RG_LDO_VIBR_EN_ADDR MT6359P_LDO_VIBR_CON0 197 + #define MT6359P_RG_LDO_VIBR_EN_SHIFT 0 198 + #define MT6359P_DA_VIBR_B_EN_ADDR MT6359P_LDO_VIBR_MON 199 + #define MT6359P_RG_LDO_VIO28_EN_ADDR MT6359P_LDO_VIO28_CON0 200 + #define MT6359P_RG_LDO_VIO28_EN_SHIFT 0 201 + #define MT6359P_DA_VIO28_B_EN_ADDR MT6359P_LDO_VIO28_MON 202 + #define MT6359P_RG_LDO_VM18_EN_ADDR MT6359P_LDO_VM18_CON0 203 + #define MT6359P_RG_LDO_VM18_EN_SHIFT 0 204 + #define MT6359P_DA_VM18_B_EN_ADDR MT6359P_LDO_VM18_MON 205 + #define MT6359P_RG_LDO_VUFS_EN_ADDR MT6359P_LDO_VUFS_CON0 206 + #define MT6359P_RG_LDO_VUFS_EN_SHIFT 0 207 + #define MT6359P_DA_VUFS_B_EN_ADDR MT6359P_LDO_VUFS_MON 208 + #define MT6359P_RG_LDO_VSRAM_PROC1_EN_ADDR MT6359P_LDO_VSRAM_PROC1_CON0 209 + #define MT6359P_DA_VSRAM_PROC1_B_EN_ADDR MT6359P_LDO_VSRAM_PROC1_MON 210 + #define MT6359P_DA_VSRAM_PROC1_VOSEL_ADDR MT6359P_LDO_VSRAM_PROC1_VOSEL1 211 + #define MT6359P_RG_LDO_VSRAM_PROC2_EN_ADDR MT6359P_LDO_VSRAM_PROC2_CON0 212 + #define MT6359P_DA_VSRAM_PROC2_B_EN_ADDR MT6359P_LDO_VSRAM_PROC2_MON 213 + #define MT6359P_DA_VSRAM_PROC2_VOSEL_ADDR MT6359P_LDO_VSRAM_PROC2_VOSEL1 214 + #define MT6359P_RG_LDO_VSRAM_OTHERS_EN_ADDR MT6359P_LDO_VSRAM_OTHERS_CON0 215 + #define MT6359P_DA_VSRAM_OTHERS_B_EN_ADDR MT6359P_LDO_VSRAM_OTHERS_MON 216 + #define MT6359P_DA_VSRAM_OTHERS_VOSEL_ADDR MT6359P_LDO_VSRAM_OTHERS_VOSEL1 217 + #define MT6359P_RG_LDO_VSRAM_OTHERS_SSHUB_EN_ADDR MT6359P_LDO_VSRAM_OTHERS_SSHUB 218 + #define MT6359P_RG_LDO_VSRAM_OTHERS_SSHUB_VOSEL_ADDR MT6359P_LDO_VSRAM_OTHERS_SSHUB 219 + #define MT6359P_RG_LDO_VSRAM_MD_EN_ADDR MT6359P_LDO_VSRAM_MD_CON0 220 + #define MT6359P_DA_VSRAM_MD_B_EN_ADDR MT6359P_LDO_VSRAM_MD_MON 221 + #define MT6359P_DA_VSRAM_MD_VOSEL_ADDR MT6359P_LDO_VSRAM_MD_VOSEL1 222 + #define MT6359P_RG_VCN33_1_VOSEL_ADDR MT6359P_VCN33_1_ANA_CON0 223 + #define MT6359P_RG_VCN33_2_VOSEL_ADDR MT6359P_VCN33_2_ANA_CON0 224 + #define MT6359P_RG_VEMC_VOSEL_ADDR MT6359P_VEMC_ANA_CON0 225 + #define MT6359P_RG_VSIM1_VOSEL_ADDR MT6359P_VSIM1_ANA_CON0 226 + #define MT6359P_RG_VSIM2_VOSEL_ADDR MT6359P_VSIM2_ANA_CON0 227 + #define MT6359P_RG_VIO28_VOSEL_ADDR MT6359P_VIO28_ANA_CON0 228 + #define MT6359P_RG_VIBR_VOSEL_ADDR MT6359P_VIBR_ANA_CON0 229 + #define MT6359P_RG_VRF18_VOSEL_ADDR MT6359P_VRF18_ANA_CON0 230 + #define MT6359P_RG_VEFUSE_VOSEL_ADDR MT6359P_VEFUSE_ANA_CON0 231 + #define MT6359P_RG_VCAMIO_VOSEL_ADDR MT6359P_VCAMIO_ANA_CON0 232 + #define MT6359P_RG_VIO18_VOSEL_ADDR MT6359P_VIO18_ANA_CON0 233 + #define MT6359P_RG_VM18_VOSEL_ADDR MT6359P_VM18_ANA_CON0 234 + #define MT6359P_RG_VUFS_VOSEL_ADDR MT6359P_VUFS_ANA_CON0 235 + #define MT6359P_RG_VRF12_VOSEL_ADDR MT6359P_VRF12_ANA_CON0 236 + #define MT6359P_RG_VCN13_VOSEL_ADDR MT6359P_VCN13_ANA_CON0 237 + #define MT6359P_RG_VA09_VOSEL_ADDR MT6359P_VRF18_ELR_3 238 + #define MT6359P_RG_VA12_VOSEL_ADDR MT6359P_VFE28_ELR_4 239 + #define MT6359P_RG_VXO22_VOSEL_ADDR MT6359P_VXO22_ANA_CON0 240 + #define MT6359P_RG_VRFCK_VOSEL_ADDR MT6359P_VRFCK_ANA_CON0 241 + #define MT6359P_RG_VBBCK_VOSEL_ADDR MT6359P_VBBCK_ANA_CON0 242 + #define MT6359P_RG_VBBCK_VOSEL_MASK 0xF 243 + #define MT6359P_RG_VBBCK_VOSEL_SHIFT 4 244 + #define MT6359P_VM_MODE_ADDR MT6359P_TOP_TRAP 245 + #define MT6359P_TMA_KEY_ADDR MT6359P_TOP_TMA_KEY 246 + 247 + #define TMA_KEY 0x9CA6 248 + 249 + #endif /* __MFD_MT6359P_REGISTERS_H__ */
+1
include/linux/mfd/mt6397/core.h
··· 13 13 enum chip_id { 14 14 MT6323_CHIP_ID = 0x23, 15 15 MT6358_CHIP_ID = 0x58, 16 + MT6359_CHIP_ID = 0x59, 16 17 MT6391_CHIP_ID = 0x91, 17 18 MT6397_CHIP_ID = 0x97, 18 19 };
+1
include/linux/mfd/mt6397/rtc.h
··· 36 36 #define RTC_AL_MASK_DOW BIT(4) 37 37 38 38 #define RTC_TC_SEC 0x000a 39 + #define RTC_TC_MTH_MASK 0x000f 39 40 /* Min, Hour, Dom... register offset to RTC_TC_SEC */ 40 41 #define RTC_OFFSET_SEC 0 41 42 #define RTC_OFFSET_MIN 1
+59
include/linux/regulator/mt6359-regulator.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + /* 3 + * Copyright (c) 2021 MediaTek Inc. 4 + */ 5 + 6 + #ifndef __LINUX_REGULATOR_MT6359_H 7 + #define __LINUX_REGULATOR_MT6359_H 8 + 9 + enum { 10 + MT6359_ID_VS1 = 0, 11 + MT6359_ID_VGPU11, 12 + MT6359_ID_VMODEM, 13 + MT6359_ID_VPU, 14 + MT6359_ID_VCORE, 15 + MT6359_ID_VS2, 16 + MT6359_ID_VPA, 17 + MT6359_ID_VPROC2, 18 + MT6359_ID_VPROC1, 19 + MT6359_ID_VCORE_SSHUB, 20 + MT6359_ID_VGPU11_SSHUB = MT6359_ID_VCORE_SSHUB, 21 + MT6359_ID_VAUD18 = 10, 22 + MT6359_ID_VSIM1, 23 + MT6359_ID_VIBR, 24 + MT6359_ID_VRF12, 25 + MT6359_ID_VUSB, 26 + MT6359_ID_VSRAM_PROC2, 27 + MT6359_ID_VIO18, 28 + MT6359_ID_VCAMIO, 29 + MT6359_ID_VCN18, 30 + MT6359_ID_VFE28, 31 + MT6359_ID_VCN13, 32 + MT6359_ID_VCN33_1_BT, 33 + MT6359_ID_VCN33_1_WIFI, 34 + MT6359_ID_VAUX18, 35 + MT6359_ID_VSRAM_OTHERS, 36 + MT6359_ID_VEFUSE, 37 + MT6359_ID_VXO22, 38 + MT6359_ID_VRFCK, 39 + MT6359_ID_VBIF28, 40 + MT6359_ID_VIO28, 41 + MT6359_ID_VEMC, 42 + MT6359_ID_VCN33_2_BT, 43 + MT6359_ID_VCN33_2_WIFI, 44 + MT6359_ID_VA12, 45 + MT6359_ID_VA09, 46 + MT6359_ID_VRF18, 47 + MT6359_ID_VSRAM_MD, 48 + MT6359_ID_VUFS, 49 + MT6359_ID_VM18, 50 + MT6359_ID_VBBCK, 51 + MT6359_ID_VSRAM_PROC1, 52 + MT6359_ID_VSIM2, 53 + MT6359_ID_VSRAM_OTHERS_SSHUB, 54 + MT6359_ID_RG_MAX, 55 + }; 56 + 57 + #define MT6359_MAX_REGULATOR MT6359_ID_RG_MAX 58 + 59 + #endif /* __LINUX_REGULATOR_MT6359_H */