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

Merge tag 'mfd-next-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd

Pull MFD updates from Lee Jones:
"New Device Support
- Add support for {Power,Home} Keys to MediaTek MT6359
- Add support for SC2730 to Spreadtrum SPRD SC27XX SPI
- Add support for additional Alder Lake-P I2C Controllers to Intel
LPSS PCI

Fix-ups:
- Convert GPIO to GPIOD (hi655x-pmic)
- Only register devices that exist (cros_ec_dev)
- Remove unused code (syscon, reg-mux)
- Rework .remove() API to return void (twl-core, rt4831)
- Trivial - whitespace, spelling, coding style (tps65218,
sprd-sc27xx-spi, google,cros-ec)
- DT binding changes (samsung,exynos5433-lpass, rockchip,rk805,
rockchip,rk808, rockchip,rk809, rockchip,rk817, rockchip,rk818,
wlf,arizona)

Bug Fixes:
- Fix error handling bugs (ipaq-micro, davinci_voicecodec)"

* tag 'mfd-next-5.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
dt-bindings: cros-ec: Fix a typo in description
dt-bindings: mfd: wlf,arizona: Add spi-max-frequency
mfd: rt4831: Improve error reporting for problems during .remove()
mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe()
mfd: intel-lpss: Add support for ADL-P i2c6 and i2c7
dt-bindings: mfd: rk808: Convert bindings to yaml
mfd: twl4030: Make twl4030_exit_irq() return void
mfd: twl6030: Make twl6030_exit_irq() return void
dt-bindings: mfd: samsung,exynos5433-lpass: Fix 'dma-channels/requests' properties
mfd: sprd: Jugle {of,spi}_device_id tables into numerical order
mfd: sprd: Add SC2730 PMIC to SPI device ID table
dt-bindings: Drop undocumented i.MX iomuxc-gpr bindings in examples
mfd: cros_ec_dev: Only register PCHG device if present
mfd: mt6397-core: Add resources for PMIC keys for MT6359
mfd: mt6359: Add missing defines necessary for mtk-pmic-keys support
mfd: ipaq-micro: Fix error check return value of platform_get_irq()
mfd: hi655x-pmic: Replace legacy gpio interface for gpiod interface
mfd: tps65218: Fix trivial typo in comment

+1442 -520
+1 -1
Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
··· 57 57 mediatek,rpmsg-name: 58 58 description: 59 59 Must be defined if the cros-ec is a rpmsg device for a Mediatek 60 - ARM Cortex M4 Co-processor. Contains the name pf the rpmsg 60 + ARM Cortex M4 Co-processor. Contains the name of the rpmsg 61 61 device. Used to match the subnode to the rpmsg device announced by 62 62 the SCP. 63 63 $ref: "/schemas/types.yaml#/definitions/string"
-465
Documentation/devicetree/bindings/mfd/rk808.txt
··· 1 - RK8XX Power Management Integrated Circuit 2 - 3 - The rk8xx family current members: 4 - rk805 5 - rk808 6 - rk809 7 - rk817 8 - rk818 9 - 10 - Required properties: 11 - - compatible: "rockchip,rk805" 12 - - compatible: "rockchip,rk808" 13 - - compatible: "rockchip,rk809" 14 - - compatible: "rockchip,rk817" 15 - - compatible: "rockchip,rk818" 16 - - reg: I2C slave address 17 - - interrupts: the interrupt outputs of the controller. 18 - - #clock-cells: from common clock binding; shall be set to 1 (multiple clock 19 - outputs). See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 20 - 21 - Optional properties: 22 - - clock-output-names: From common clock binding to override the 23 - default output clock name 24 - - rockchip,system-power-controller: Telling whether or not this pmic is controlling 25 - the system power. 26 - - wakeup-source: Device can be used as a wakeup source. 27 - 28 - Optional RK805 properties: 29 - - vcc1-supply: The input supply for DCDC_REG1 30 - - vcc2-supply: The input supply for DCDC_REG2 31 - - vcc3-supply: The input supply for DCDC_REG3 32 - - vcc4-supply: The input supply for DCDC_REG4 33 - - vcc5-supply: The input supply for LDO_REG1 and LDO_REG2 34 - - vcc6-supply: The input supply for LDO_REG3 35 - 36 - Optional RK808 properties: 37 - - vcc1-supply: The input supply for DCDC_REG1 38 - - vcc2-supply: The input supply for DCDC_REG2 39 - - vcc3-supply: The input supply for DCDC_REG3 40 - - vcc4-supply: The input supply for DCDC_REG4 41 - - vcc6-supply: The input supply for LDO_REG1 and LDO_REG2 42 - - vcc7-supply: The input supply for LDO_REG3 and LDO_REG7 43 - - vcc8-supply: The input supply for SWITCH_REG1 44 - - vcc9-supply: The input supply for LDO_REG4 and LDO_REG5 45 - - vcc10-supply: The input supply for LDO_REG6 46 - - vcc11-supply: The input supply for LDO_REG8 47 - - vcc12-supply: The input supply for SWITCH_REG2 48 - - dvs-gpios: buck1/2 can be controlled by gpio dvs, this is GPIO specifiers 49 - for 2 host gpio's used for dvs. The format of the gpio specifier depends in 50 - the gpio controller. If DVS GPIOs aren't present, voltage changes will happen 51 - very quickly with no slow ramp time. 52 - 53 - Optional shared RK809 and RK817 properties: 54 - - vcc1-supply: The input supply for DCDC_REG1 55 - - vcc2-supply: The input supply for DCDC_REG2 56 - - vcc3-supply: The input supply for DCDC_REG3 57 - - vcc4-supply: The input supply for DCDC_REG4 58 - - vcc5-supply: The input supply for LDO_REG1, LDO_REG2, LDO_REG3 59 - - vcc6-supply: The input supply for LDO_REG4, LDO_REG5, LDO_REG6 60 - - vcc7-supply: The input supply for LDO_REG7, LDO_REG8, LDO_REG9 61 - 62 - Optional RK809 properties: 63 - - vcc8-supply: The input supply for SWITCH_REG1 64 - - vcc9-supply: The input supply for DCDC_REG5, SWITCH_REG2 65 - 66 - Optional RK817 properties: 67 - - clocks: The input clock for the audio codec 68 - - clock-names: The clock name for the codec clock. Should be "mclk". 69 - - #sound-dai-cells: Needed for the interpretation of sound dais. Should be 0. 70 - 71 - - vcc8-supply: The input supply for BOOST 72 - - vcc9-supply: The input supply for OTG_SWITCH 73 - - codec: The child node for the codec to hold additional properties. 74 - If no additional properties are required for the codec, this 75 - node can be omitted. 76 - 77 - - rockchip,mic-in-differential: Telling if the microphone uses differential 78 - mode. Should be under the codec child node. 79 - 80 - Optional RK818 properties: 81 - - vcc1-supply: The input supply for DCDC_REG1 82 - - vcc2-supply: The input supply for DCDC_REG2 83 - - vcc3-supply: The input supply for DCDC_REG3 84 - - vcc4-supply: The input supply for DCDC_REG4 85 - - boost-supply: The input supply for DCDC_BOOST 86 - - vcc6-supply: The input supply for LDO_REG1 and LDO_REG2 87 - - vcc7-supply: The input supply for LDO_REG3, LDO_REG5 and LDO_REG7 88 - - vcc8-supply: The input supply for LDO_REG4, LDO_REG6 and LDO_REG8 89 - - vcc9-supply: The input supply for LDO_REG9 and SWITCH_REG 90 - - h_5v-supply: The input supply for HDMI_SWITCH 91 - - usb-supply: The input supply for OTG_SWITCH 92 - 93 - Regulators: All the regulators of RK8XX to be instantiated shall be 94 - listed in a child node named 'regulators'. Each regulator is represented 95 - by a child node of the 'regulators' node. 96 - 97 - regulator-name { 98 - /* standard regulator bindings here */ 99 - }; 100 - 101 - Following regulators of the RK805 PMIC regulators are supported. Note that 102 - the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO 103 - number as described in RK805 datasheet. 104 - 105 - - DCDC_REGn 106 - - valid values for n are 1 to 4. 107 - - LDO_REGn 108 - - valid values for n are 1 to 3 109 - 110 - Following regulators of the RK808 PMIC block are supported. Note that 111 - the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO 112 - number as described in RK808 datasheet. 113 - 114 - - DCDC_REGn 115 - - valid values for n are 1 to 4. 116 - - LDO_REGn 117 - - valid values for n are 1 to 8. 118 - - SWITCH_REGn 119 - - valid values for n are 1 to 2 120 - 121 - Following regulators of the RK809 and RK817 PMIC blocks are supported. Note that 122 - the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO 123 - number as described in RK809 and RK817 datasheets. 124 - 125 - - DCDC_REGn 126 - - valid values for n are 1 to 5 for RK809. 127 - - valid values for n are 1 to 4 for RK817. 128 - - LDO_REGn 129 - - valid values for n are 1 to 9 for RK809. 130 - - valid values for n are 1 to 9 for RK817. 131 - - SWITCH_REGn 132 - - valid values for n are 1 to 2 for RK809. 133 - - BOOST for RK817 134 - - OTG_SWITCH for RK817 135 - 136 - Following regulators of the RK818 PMIC block are supported. Note that 137 - the 'n' in regulator name, as in DCDC_REGn or LDOn, represents the DCDC or LDO 138 - number as described in RK818 datasheet. 139 - 140 - - DCDC_REGn 141 - - valid values for n are 1 to 4. 142 - - LDO_REGn 143 - - valid values for n are 1 to 9. 144 - - SWITCH_REG 145 - - HDMI_SWITCH 146 - - OTG_SWITCH 147 - 148 - It is necessary to configure three pins for both the RK809 and RK817, the three 149 - pins are "gpio_ts" "gpio_gt" "gpio_slp". 150 - The gpio_gt and gpio_ts pins support the gpio function. 151 - The gpio_slp pin is for controlling the pmic states, as below: 152 - - reset 153 - - power down 154 - - sleep 155 - 156 - Standard regulator bindings are used inside regulator subnodes. Check 157 - Documentation/devicetree/bindings/regulator/regulator.txt 158 - for more details 159 - 160 - Example: 161 - rk808: pmic@1b { 162 - compatible = "rockchip,rk808"; 163 - clock-output-names = "xin32k", "rk808-clkout2"; 164 - interrupt-parent = <&gpio0>; 165 - interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 166 - pinctrl-names = "default"; 167 - pinctrl-0 = <&pmic_int &dvs_1 &dvs_2>; 168 - dvs-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>, 169 - <&gpio7 15 GPIO_ACTIVE_HIGH>; 170 - reg = <0x1b>; 171 - rockchip,system-power-controller; 172 - wakeup-source; 173 - #clock-cells = <1>; 174 - 175 - vcc8-supply = <&vcc_18>; 176 - vcc9-supply = <&vcc_io>; 177 - vcc10-supply = <&vcc_io>; 178 - vcc12-supply = <&vcc_io>; 179 - vddio-supply = <&vccio_pmu>; 180 - 181 - regulators { 182 - vdd_cpu: DCDC_REG1 { 183 - regulator-always-on; 184 - regulator-boot-on; 185 - regulator-min-microvolt = <750000>; 186 - regulator-max-microvolt = <1300000>; 187 - regulator-name = "vdd_arm"; 188 - }; 189 - 190 - vdd_gpu: DCDC_REG2 { 191 - regulator-always-on; 192 - regulator-boot-on; 193 - regulator-min-microvolt = <850000>; 194 - regulator-max-microvolt = <1250000>; 195 - regulator-name = "vdd_gpu"; 196 - }; 197 - 198 - vcc_ddr: DCDC_REG3 { 199 - regulator-always-on; 200 - regulator-boot-on; 201 - regulator-name = "vcc_ddr"; 202 - }; 203 - 204 - vcc_io: DCDC_REG4 { 205 - regulator-always-on; 206 - regulator-boot-on; 207 - regulator-min-microvolt = <3300000>; 208 - regulator-max-microvolt = <3300000>; 209 - regulator-name = "vcc_io"; 210 - }; 211 - 212 - vccio_pmu: LDO_REG1 { 213 - regulator-always-on; 214 - regulator-boot-on; 215 - regulator-min-microvolt = <3300000>; 216 - regulator-max-microvolt = <3300000>; 217 - regulator-name = "vccio_pmu"; 218 - }; 219 - 220 - vcc_tp: LDO_REG2 { 221 - regulator-always-on; 222 - regulator-boot-on; 223 - regulator-min-microvolt = <3300000>; 224 - regulator-max-microvolt = <3300000>; 225 - regulator-name = "vcc_tp"; 226 - }; 227 - 228 - vdd_10: LDO_REG3 { 229 - regulator-always-on; 230 - regulator-boot-on; 231 - regulator-min-microvolt = <1000000>; 232 - regulator-max-microvolt = <1000000>; 233 - regulator-name = "vdd_10"; 234 - }; 235 - 236 - vcc18_lcd: LDO_REG4 { 237 - regulator-always-on; 238 - regulator-boot-on; 239 - regulator-min-microvolt = <1800000>; 240 - regulator-max-microvolt = <1800000>; 241 - regulator-name = "vcc18_lcd"; 242 - }; 243 - 244 - vccio_sd: LDO_REG5 { 245 - regulator-always-on; 246 - regulator-boot-on; 247 - regulator-min-microvolt = <1800000>; 248 - regulator-max-microvolt = <3300000>; 249 - regulator-name = "vccio_sd"; 250 - }; 251 - 252 - vdd10_lcd: LDO_REG6 { 253 - regulator-always-on; 254 - regulator-boot-on; 255 - regulator-min-microvolt = <1000000>; 256 - regulator-max-microvolt = <1000000>; 257 - regulator-name = "vdd10_lcd"; 258 - }; 259 - 260 - vcc_18: LDO_REG7 { 261 - regulator-always-on; 262 - regulator-boot-on; 263 - regulator-min-microvolt = <1800000>; 264 - regulator-max-microvolt = <1800000>; 265 - regulator-name = "vcc_18"; 266 - }; 267 - 268 - vcca_codec: LDO_REG8 { 269 - regulator-always-on; 270 - regulator-boot-on; 271 - regulator-min-microvolt = <3300000>; 272 - regulator-max-microvolt = <3300000>; 273 - regulator-name = "vcca_codec"; 274 - }; 275 - 276 - vcc_wl: SWITCH_REG1 { 277 - regulator-always-on; 278 - regulator-boot-on; 279 - regulator-name = "vcc_wl"; 280 - }; 281 - 282 - vcc_lcd: SWITCH_REG2 { 283 - regulator-always-on; 284 - regulator-boot-on; 285 - regulator-name = "vcc_lcd"; 286 - }; 287 - }; 288 - }; 289 - 290 - rk817: pmic@20 { 291 - compatible = "rockchip,rk817"; 292 - reg = <0x20>; 293 - interrupt-parent = <&gpio0>; 294 - interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; 295 - clock-output-names = "rk808-clkout1", "xin32k"; 296 - clock-names = "mclk"; 297 - clocks = <&cru SCLK_I2S1_OUT>; 298 - pinctrl-names = "default"; 299 - pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; 300 - wakeup-source; 301 - #clock-cells = <1>; 302 - #sound-dai-cells = <0>; 303 - 304 - vcc1-supply = <&vccsys>; 305 - vcc2-supply = <&vccsys>; 306 - vcc3-supply = <&vccsys>; 307 - vcc4-supply = <&vccsys>; 308 - vcc5-supply = <&vccsys>; 309 - vcc6-supply = <&vccsys>; 310 - vcc7-supply = <&vccsys>; 311 - 312 - regulators { 313 - vdd_logic: DCDC_REG1 { 314 - regulator-name = "vdd_logic"; 315 - regulator-min-microvolt = <950000>; 316 - regulator-max-microvolt = <1150000>; 317 - regulator-ramp-delay = <6001>; 318 - regulator-always-on; 319 - regulator-boot-on; 320 - 321 - regulator-state-mem { 322 - regulator-on-in-suspend; 323 - regulator-suspend-microvolt = <950000>; 324 - }; 325 - }; 326 - 327 - vdd_arm: DCDC_REG2 { 328 - regulator-name = "vdd_arm"; 329 - regulator-min-microvolt = <950000>; 330 - regulator-max-microvolt = <1350000>; 331 - regulator-ramp-delay = <6001>; 332 - regulator-always-on; 333 - regulator-boot-on; 334 - 335 - regulator-state-mem { 336 - regulator-off-in-suspend; 337 - regulator-suspend-microvolt = <950000>; 338 - }; 339 - }; 340 - 341 - vcc_ddr: DCDC_REG3 { 342 - regulator-name = "vcc_ddr"; 343 - regulator-always-on; 344 - regulator-boot-on; 345 - 346 - regulator-state-mem { 347 - regulator-on-in-suspend; 348 - }; 349 - }; 350 - 351 - vcc_3v3: DCDC_REG4 { 352 - regulator-name = "vcc_3v3"; 353 - regulator-min-microvolt = <3300000>; 354 - regulator-max-microvolt = <3300000>; 355 - regulator-always-on; 356 - regulator-boot-on; 357 - 358 - regulator-state-mem { 359 - regulator-off-in-suspend; 360 - regulator-suspend-microvolt = <3300000>; 361 - }; 362 - }; 363 - 364 - vcc_1v8: LDO_REG2 { 365 - regulator-name = "vcc_1v8"; 366 - regulator-min-microvolt = <1800000>; 367 - regulator-max-microvolt = <1800000>; 368 - regulator-always-on; 369 - regulator-boot-on; 370 - 371 - regulator-state-mem { 372 - regulator-on-in-suspend; 373 - regulator-suspend-microvolt = <1800000>; 374 - }; 375 - }; 376 - 377 - vdd_1v0: LDO_REG3 { 378 - regulator-name = "vdd_1v0"; 379 - regulator-min-microvolt = <1000000>; 380 - regulator-max-microvolt = <1000000>; 381 - regulator-always-on; 382 - regulator-boot-on; 383 - 384 - regulator-state-mem { 385 - regulator-on-in-suspend; 386 - regulator-suspend-microvolt = <1000000>; 387 - }; 388 - }; 389 - 390 - vcc3v3_pmu: LDO_REG4 { 391 - regulator-name = "vcc3v3_pmu"; 392 - regulator-min-microvolt = <3300000>; 393 - regulator-max-microvolt = <3300000>; 394 - regulator-always-on; 395 - regulator-boot-on; 396 - 397 - regulator-state-mem { 398 - regulator-on-in-suspend; 399 - regulator-suspend-microvolt = <3300000>; 400 - }; 401 - }; 402 - 403 - vccio_sd: LDO_REG5 { 404 - regulator-name = "vccio_sd"; 405 - regulator-min-microvolt = <1800000>; 406 - regulator-max-microvolt = <3300000>; 407 - regulator-always-on; 408 - regulator-boot-on; 409 - 410 - regulator-state-mem { 411 - regulator-on-in-suspend; 412 - regulator-suspend-microvolt = <3300000>; 413 - }; 414 - }; 415 - 416 - vcc_sd: LDO_REG6 { 417 - regulator-name = "vcc_sd"; 418 - regulator-min-microvolt = <3300000>; 419 - regulator-max-microvolt = <3300000>; 420 - regulator-boot-on; 421 - 422 - regulator-state-mem { 423 - regulator-on-in-suspend; 424 - regulator-suspend-microvolt = <3300000>; 425 - }; 426 - }; 427 - 428 - vcc_bl: LDO_REG7 { 429 - regulator-name = "vcc_bl"; 430 - regulator-min-microvolt = <3300000>; 431 - regulator-max-microvolt = <3300000>; 432 - 433 - regulator-state-mem { 434 - regulator-off-in-suspend; 435 - regulator-suspend-microvolt = <3300000>; 436 - }; 437 - }; 438 - 439 - vcc_lcd: LDO_REG8 { 440 - regulator-name = "vcc_lcd"; 441 - regulator-min-microvolt = <2800000>; 442 - regulator-max-microvolt = <2800000>; 443 - 444 - regulator-state-mem { 445 - regulator-off-in-suspend; 446 - regulator-suspend-microvolt = <2800000>; 447 - }; 448 - }; 449 - 450 - vcc_cam: LDO_REG9 { 451 - regulator-name = "vcc_cam"; 452 - regulator-min-microvolt = <3000000>; 453 - regulator-max-microvolt = <3000000>; 454 - 455 - regulator-state-mem { 456 - regulator-off-in-suspend; 457 - regulator-suspend-microvolt = <3000000>; 458 - }; 459 - }; 460 - }; 461 - 462 - rk817_codec: codec { 463 - rockchip,mic-in-differential; 464 - }; 465 - };
+219
Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/rockchip,rk805.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RK805 Power Management Integrated Circuit 8 + 9 + maintainers: 10 + - Chris Zhong <zyw@rock-chips.com> 11 + - Zhang Qing <zhangqing@rock-chips.com> 12 + 13 + description: | 14 + Rockchip RK805 series PMIC. This device consists of an i2c controlled MFD 15 + that includes multiple switchable regulators. 16 + 17 + properties: 18 + compatible: 19 + enum: 20 + - rockchip,rk805 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + '#clock-cells': 29 + description: 30 + See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 31 + minimum: 0 32 + maximum: 1 33 + 34 + clock-output-names: 35 + description: 36 + From common clock binding to override the default output clock name. 37 + 38 + gpio-controller: true 39 + 40 + '#gpio-cells': 41 + const: 2 42 + 43 + rockchip,system-power-controller: 44 + type: boolean 45 + description: 46 + Telling whether or not this PMIC is controlling the system power. 47 + 48 + wakeup-source: 49 + type: boolean 50 + description: 51 + Device can be used as a wakeup source. 52 + 53 + vcc1-supply: 54 + description: 55 + The input supply for DCDC_REG1. 56 + 57 + vcc2-supply: 58 + description: 59 + The input supply for DCDC_REG2. 60 + 61 + vcc3-supply: 62 + description: 63 + The input supply for DCDC_REG3. 64 + 65 + vcc4-supply: 66 + description: 67 + The input supply for DCDC_REG4. 68 + 69 + vcc5-supply: 70 + description: 71 + The input supply for LDO_REG1 and LDO_REG2. 72 + 73 + vcc6-supply: 74 + description: 75 + The input supply for LDO_REG3. 76 + 77 + regulators: 78 + type: object 79 + patternProperties: 80 + "^(DCDC_REG[1-4]|LDO_REG[1-3])$": 81 + type: object 82 + $ref: ../regulator/regulator.yaml# 83 + unevaluatedProperties: false 84 + 85 + allOf: 86 + - if: 87 + properties: 88 + '#clock-cells': 89 + const: 0 90 + 91 + then: 92 + properties: 93 + clock-output-names: 94 + maxItems: 1 95 + 96 + else: 97 + properties: 98 + clock-output-names: 99 + maxItems: 2 100 + 101 + required: 102 + - compatible 103 + - reg 104 + - interrupts 105 + - "#clock-cells" 106 + 107 + additionalProperties: false 108 + 109 + examples: 110 + - | 111 + #include <dt-bindings/pinctrl/rockchip.h> 112 + #include <dt-bindings/interrupt-controller/irq.h> 113 + #include <dt-bindings/gpio/gpio.h> 114 + i2c { 115 + #address-cells = <1>; 116 + #size-cells = <0>; 117 + 118 + pmic@18 { 119 + compatible = "rockchip,rk805"; 120 + reg = <0x18>; 121 + interrupt-parent = <&gpio2>; 122 + interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>; 123 + pinctrl-names = "default"; 124 + pinctrl-0 = <&pmic_int_l>; 125 + rockchip,system-power-controller; 126 + wakeup-source; 127 + #clock-cells = <0>; 128 + 129 + vcc1-supply = <&vcc_sys>; 130 + vcc2-supply = <&vcc_sys>; 131 + vcc3-supply = <&vcc_sys>; 132 + vcc4-supply = <&vcc_sys>; 133 + vcc5-supply = <&vcc_io>; 134 + vcc6-supply = <&vcc_io>; 135 + 136 + regulators { 137 + vdd_logic: DCDC_REG1 { 138 + regulator-name = "vdd_logic"; 139 + regulator-min-microvolt = <700000>; 140 + regulator-max-microvolt = <1350000>; 141 + regulator-always-on; 142 + regulator-boot-on; 143 + regulator-state-mem { 144 + regulator-on-in-suspend; 145 + regulator-suspend-microvolt = <1000000>; 146 + }; 147 + }; 148 + 149 + vdd_arm: DCDC_REG2 { 150 + regulator-name = "vdd_arm"; 151 + regulator-min-microvolt = <700000>; 152 + regulator-max-microvolt = <1350000>; 153 + regulator-always-on; 154 + regulator-boot-on; 155 + regulator-state-mem { 156 + regulator-on-in-suspend; 157 + regulator-suspend-microvolt = <950000>; 158 + }; 159 + }; 160 + 161 + vcc_ddr: DCDC_REG3 { 162 + regulator-name = "vcc_ddr"; 163 + regulator-always-on; 164 + regulator-boot-on; 165 + regulator-state-mem { 166 + regulator-on-in-suspend; 167 + }; 168 + }; 169 + 170 + vcc_io: DCDC_REG4 { 171 + regulator-name = "vcc_io"; 172 + regulator-min-microvolt = <3300000>; 173 + regulator-max-microvolt = <3300000>; 174 + regulator-always-on; 175 + regulator-boot-on; 176 + regulator-state-mem { 177 + regulator-on-in-suspend; 178 + regulator-suspend-microvolt = <3300000>; 179 + }; 180 + }; 181 + 182 + vdd_18: LDO_REG1 { 183 + regulator-name = "vdd_18"; 184 + regulator-min-microvolt = <1800000>; 185 + regulator-max-microvolt = <1800000>; 186 + regulator-always-on; 187 + regulator-boot-on; 188 + regulator-state-mem { 189 + regulator-on-in-suspend; 190 + regulator-suspend-microvolt = <1800000>; 191 + }; 192 + }; 193 + 194 + vcc18_emmc: LDO_REG2 { 195 + regulator-name = "vcc_18emmc"; 196 + regulator-min-microvolt = <1800000>; 197 + regulator-max-microvolt = <1800000>; 198 + regulator-always-on; 199 + regulator-boot-on; 200 + regulator-state-mem { 201 + regulator-on-in-suspend; 202 + regulator-suspend-microvolt = <1800000>; 203 + }; 204 + }; 205 + 206 + vdd_11: LDO_REG3 { 207 + regulator-name = "vdd_11"; 208 + regulator-min-microvolt = <1100000>; 209 + regulator-max-microvolt = <1100000>; 210 + regulator-always-on; 211 + regulator-boot-on; 212 + regulator-state-mem { 213 + regulator-on-in-suspend; 214 + regulator-suspend-microvolt = <1100000>; 215 + }; 216 + }; 217 + }; 218 + }; 219 + };
+257
Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/rockchip,rk808.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RK808 Power Management Integrated Circuit 8 + 9 + maintainers: 10 + - Chris Zhong <zyw@rock-chips.com> 11 + - Zhang Qing <zhangqing@rock-chips.com> 12 + 13 + description: | 14 + Rockchip RK808 series PMIC. This device consists of an i2c controlled MFD 15 + that includes regulators, an RTC, and a power button. 16 + 17 + properties: 18 + compatible: 19 + enum: 20 + - rockchip,rk808 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + '#clock-cells': 29 + description: 30 + See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 31 + const: 1 32 + 33 + clock-output-names: 34 + description: 35 + From common clock binding to override the default output clock name. 36 + maxItems: 2 37 + 38 + rockchip,system-power-controller: 39 + type: boolean 40 + description: 41 + Telling whether or not this PMIC is controlling the system power. 42 + 43 + wakeup-source: 44 + type: boolean 45 + description: 46 + Device can be used as a wakeup source. 47 + 48 + vcc1-supply: 49 + description: 50 + The input supply for DCDC_REG1. 51 + 52 + vcc2-supply: 53 + description: 54 + The input supply for DCDC_REG2. 55 + 56 + vcc3-supply: 57 + description: 58 + The input supply for DCDC_REG3. 59 + 60 + vcc4-supply: 61 + description: 62 + The input supply for DCDC_REG4. 63 + 64 + vcc6-supply: 65 + description: 66 + The input supply for LDO_REG1 and LDO_REG2. 67 + 68 + vcc7-supply: 69 + description: 70 + The input supply for LDO_REG3 and LDO_REG7. 71 + 72 + vcc8-supply: 73 + description: 74 + The input supply for SWITCH_REG1. 75 + 76 + vcc9-supply: 77 + description: 78 + The input supply for LDO_REG4 and LDO_REG5. 79 + 80 + vcc10-supply: 81 + description: 82 + The input supply for LDO_REG6. 83 + 84 + vcc11-supply: 85 + description: 86 + The input supply for LDO_REG8. 87 + 88 + vcc12-supply: 89 + description: 90 + The input supply for SWITCH_REG2. 91 + 92 + vddio-supply: 93 + description: 94 + The input supply for digital IO. 95 + 96 + dvs-gpios: 97 + description: | 98 + buck1/2 can be controlled by gpio dvs, this is GPIO specifiers for 99 + 2 host gpio's used for dvs. The format of the gpio specifier 100 + depends in the gpio controller. If DVS GPIOs aren't present, 101 + voltage changes will happen very quickly with no slow ramp time. 102 + maxItems: 2 103 + 104 + regulators: 105 + type: object 106 + patternProperties: 107 + "^(DCDC_REG[1-4]|LDO_REG[1-8]|SWITCH_REG[1-2])$": 108 + type: object 109 + $ref: ../regulator/regulator.yaml# 110 + unevaluatedProperties: false 111 + 112 + required: 113 + - compatible 114 + - reg 115 + - interrupts 116 + - "#clock-cells" 117 + 118 + additionalProperties: false 119 + 120 + examples: 121 + - | 122 + #include <dt-bindings/pinctrl/rockchip.h> 123 + #include <dt-bindings/interrupt-controller/irq.h> 124 + #include <dt-bindings/gpio/gpio.h> 125 + i2c { 126 + #address-cells = <1>; 127 + #size-cells = <0>; 128 + 129 + rk808: pmic@1b { 130 + compatible = "rockchip,rk808"; 131 + clock-output-names = "xin32k", "rk808-clkout2"; 132 + interrupt-parent = <&gpio0>; 133 + interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 134 + pinctrl-names = "default"; 135 + pinctrl-0 = <&pmic_int &dvs_1 &dvs_2>; 136 + dvs-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>, 137 + <&gpio7 15 GPIO_ACTIVE_HIGH>; 138 + reg = <0x1b>; 139 + rockchip,system-power-controller; 140 + wakeup-source; 141 + #clock-cells = <1>; 142 + 143 + vcc8-supply = <&vcc_18>; 144 + vcc9-supply = <&vcc_io>; 145 + vcc10-supply = <&vcc_io>; 146 + vcc12-supply = <&vcc_io>; 147 + vddio-supply = <&vccio_pmu>; 148 + 149 + regulators { 150 + vdd_cpu: DCDC_REG1 { 151 + regulator-always-on; 152 + regulator-boot-on; 153 + regulator-min-microvolt = <750000>; 154 + regulator-max-microvolt = <1300000>; 155 + regulator-name = "vdd_arm"; 156 + }; 157 + 158 + vdd_gpu: DCDC_REG2 { 159 + regulator-always-on; 160 + regulator-boot-on; 161 + regulator-min-microvolt = <850000>; 162 + regulator-max-microvolt = <1250000>; 163 + regulator-name = "vdd_gpu"; 164 + }; 165 + 166 + vcc_ddr: DCDC_REG3 { 167 + regulator-always-on; 168 + regulator-boot-on; 169 + regulator-name = "vcc_ddr"; 170 + }; 171 + 172 + vcc_io: DCDC_REG4 { 173 + regulator-always-on; 174 + regulator-boot-on; 175 + regulator-min-microvolt = <3300000>; 176 + regulator-max-microvolt = <3300000>; 177 + regulator-name = "vcc_io"; 178 + }; 179 + 180 + vccio_pmu: LDO_REG1 { 181 + regulator-always-on; 182 + regulator-boot-on; 183 + regulator-min-microvolt = <3300000>; 184 + regulator-max-microvolt = <3300000>; 185 + regulator-name = "vccio_pmu"; 186 + }; 187 + 188 + vcc_tp: LDO_REG2 { 189 + regulator-always-on; 190 + regulator-boot-on; 191 + regulator-min-microvolt = <3300000>; 192 + regulator-max-microvolt = <3300000>; 193 + regulator-name = "vcc_tp"; 194 + }; 195 + 196 + vdd_10: LDO_REG3 { 197 + regulator-always-on; 198 + regulator-boot-on; 199 + regulator-min-microvolt = <1000000>; 200 + regulator-max-microvolt = <1000000>; 201 + regulator-name = "vdd_10"; 202 + }; 203 + 204 + vcc18_lcd: LDO_REG4 { 205 + regulator-always-on; 206 + regulator-boot-on; 207 + regulator-min-microvolt = <1800000>; 208 + regulator-max-microvolt = <1800000>; 209 + regulator-name = "vcc18_lcd"; 210 + }; 211 + 212 + vccio_sd: LDO_REG5 { 213 + regulator-always-on; 214 + regulator-boot-on; 215 + regulator-min-microvolt = <1800000>; 216 + regulator-max-microvolt = <3300000>; 217 + regulator-name = "vccio_sd"; 218 + }; 219 + 220 + vdd10_lcd: LDO_REG6 { 221 + regulator-always-on; 222 + regulator-boot-on; 223 + regulator-min-microvolt = <1000000>; 224 + regulator-max-microvolt = <1000000>; 225 + regulator-name = "vdd10_lcd"; 226 + }; 227 + 228 + vcc_18: LDO_REG7 { 229 + regulator-always-on; 230 + regulator-boot-on; 231 + regulator-min-microvolt = <1800000>; 232 + regulator-max-microvolt = <1800000>; 233 + regulator-name = "vcc_18"; 234 + }; 235 + 236 + vcca_codec: LDO_REG8 { 237 + regulator-always-on; 238 + regulator-boot-on; 239 + regulator-min-microvolt = <3300000>; 240 + regulator-max-microvolt = <3300000>; 241 + regulator-name = "vcca_codec"; 242 + }; 243 + 244 + vcc_wl: SWITCH_REG1 { 245 + regulator-always-on; 246 + regulator-boot-on; 247 + regulator-name = "vcc_wl"; 248 + }; 249 + 250 + vcc_lcd: SWITCH_REG2 { 251 + regulator-always-on; 252 + regulator-boot-on; 253 + regulator-name = "vcc_lcd"; 254 + }; 255 + }; 256 + }; 257 + };
+284
Documentation/devicetree/bindings/mfd/rockchip,rk809.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/rockchip,rk809.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RK809 Power Management Integrated Circuit 8 + 9 + maintainers: 10 + - Chris Zhong <zyw@rock-chips.com> 11 + - Zhang Qing <zhangqing@rock-chips.com> 12 + 13 + description: | 14 + Rockchip RK809 series PMIC. This device consists of an i2c controlled MFD 15 + that includes regulators, an RTC, and power button. 16 + 17 + properties: 18 + compatible: 19 + enum: 20 + - rockchip,rk809 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + '#clock-cells': 29 + description: | 30 + See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 31 + minimum: 0 32 + maximum: 1 33 + 34 + clock-output-names: 35 + description: 36 + From common clock binding to override the default output clock name. 37 + 38 + rockchip,system-power-controller: 39 + type: boolean 40 + description: 41 + Telling whether or not this PMIC is controlling the system power. 42 + 43 + wakeup-source: 44 + type: boolean 45 + description: 46 + Device can be used as a wakeup source. 47 + 48 + vcc1-supply: 49 + description: 50 + The input supply for DCDC_REG1. 51 + 52 + vcc2-supply: 53 + description: 54 + The input supply for DCDC_REG2. 55 + 56 + vcc3-supply: 57 + description: 58 + The input supply for DCDC_REG3. 59 + 60 + vcc4-supply: 61 + description: 62 + The input supply for DCDC_REG4. 63 + 64 + vcc5-supply: 65 + description: 66 + The input supply for LDO_REG1, LDO_REG2, and LDO_REG3. 67 + 68 + vcc6-supply: 69 + description: 70 + The input supply for LDO_REG4, LDO_REG5, and LDO_REG6. 71 + 72 + vcc7-supply: 73 + description: 74 + The input supply for LDO_REG7, LDO_REG8, and LDO_REG9. 75 + 76 + vcc8-supply: 77 + description: 78 + The input supply for SWITCH_REG1. 79 + 80 + vcc9-supply: 81 + description: 82 + The input supply for DCDC_REG5 and SWITCH_REG2. 83 + 84 + regulators: 85 + type: object 86 + patternProperties: 87 + "^(LDO_REG[1-9]|DCDC_REG[1-5]|SWITCH_REG[1-2])$": 88 + type: object 89 + $ref: ../regulator/regulator.yaml# 90 + unevaluatedProperties: false 91 + 92 + allOf: 93 + - if: 94 + properties: 95 + '#clock-cells': 96 + const: 0 97 + 98 + then: 99 + properties: 100 + clock-output-names: 101 + maxItems: 1 102 + 103 + else: 104 + properties: 105 + clock-output-names: 106 + maxItems: 2 107 + 108 + required: 109 + - compatible 110 + - reg 111 + - interrupts 112 + - "#clock-cells" 113 + 114 + additionalProperties: false 115 + 116 + examples: 117 + - | 118 + #include <dt-bindings/pinctrl/rockchip.h> 119 + #include <dt-bindings/interrupt-controller/irq.h> 120 + #include <dt-bindings/gpio/gpio.h> 121 + i2c { 122 + #address-cells = <1>; 123 + #size-cells = <0>; 124 + 125 + rk808: pmic@1b { 126 + compatible = "rockchip,rk808"; 127 + reg = <0x1b>; 128 + #clock-cells = <1>; 129 + clock-output-names = "xin32k", "rk808-clkout2"; 130 + interrupt-parent = <&gpio3>; 131 + interrupts = <10 IRQ_TYPE_LEVEL_LOW>; 132 + pinctrl-names = "default"; 133 + pinctrl-0 = <&pmic_int_l_pin>; 134 + rockchip,system-power-controller; 135 + wakeup-source; 136 + 137 + vcc1-supply = <&vcc_sysin>; 138 + vcc2-supply = <&vcc_sysin>; 139 + vcc3-supply = <&vcc_sysin>; 140 + vcc4-supply = <&vcc_sysin>; 141 + vcc6-supply = <&vcc_sysin>; 142 + vcc7-supply = <&vcc_sysin>; 143 + vcc8-supply = <&vcc3v3_sys>; 144 + vcc9-supply = <&vcc_sysin>; 145 + vcc10-supply = <&vcc_sysin>; 146 + vcc11-supply = <&vcc_sysin>; 147 + vcc12-supply = <&vcc3v3_sys>; 148 + 149 + regulators { 150 + vdd_center: DCDC_REG1 { 151 + regulator-name = "vdd_center"; 152 + regulator-always-on; 153 + regulator-boot-on; 154 + regulator-min-microvolt = <750000>; 155 + regulator-max-microvolt = <1350000>; 156 + regulator-ramp-delay = <6001>; 157 + regulator-state-mem { 158 + regulator-off-in-suspend; 159 + }; 160 + }; 161 + 162 + vdd_cpu_l: DCDC_REG2 { 163 + regulator-name = "vdd_cpu_l"; 164 + regulator-always-on; 165 + regulator-boot-on; 166 + regulator-min-microvolt = <750000>; 167 + regulator-max-microvolt = <1350000>; 168 + regulator-ramp-delay = <6001>; 169 + regulator-state-mem { 170 + regulator-off-in-suspend; 171 + }; 172 + }; 173 + 174 + vcc_ddr: DCDC_REG3 { 175 + regulator-name = "vcc_ddr"; 176 + regulator-always-on; 177 + regulator-boot-on; 178 + regulator-state-mem { 179 + regulator-on-in-suspend; 180 + }; 181 + }; 182 + 183 + vcc_1v8: vcc_wl: DCDC_REG4 { 184 + regulator-name = "vcc_1v8"; 185 + regulator-always-on; 186 + regulator-boot-on; 187 + regulator-min-microvolt = <1800000>; 188 + regulator-max-microvolt = <1800000>; 189 + regulator-state-mem { 190 + regulator-on-in-suspend; 191 + regulator-suspend-microvolt = <1800000>; 192 + }; 193 + }; 194 + 195 + vcc1v8_pmupll: LDO_REG3 { 196 + regulator-name = "vcc1v8_pmupll"; 197 + regulator-always-on; 198 + regulator-boot-on; 199 + regulator-min-microvolt = <1800000>; 200 + regulator-max-microvolt = <1800000>; 201 + regulator-state-mem { 202 + regulator-on-in-suspend; 203 + regulator-suspend-microvolt = <1800000>; 204 + }; 205 + }; 206 + 207 + vcc_sdio: LDO_REG4 { 208 + regulator-name = "vcc_sdio"; 209 + regulator-always-on; 210 + regulator-boot-on; 211 + regulator-min-microvolt = <1800000>; 212 + regulator-max-microvolt = <3000000>; 213 + regulator-state-mem { 214 + regulator-on-in-suspend; 215 + regulator-suspend-microvolt = <3000000>; 216 + }; 217 + }; 218 + 219 + vcca3v0_codec: LDO_REG5 { 220 + regulator-name = "vcca3v0_codec"; 221 + regulator-always-on; 222 + regulator-boot-on; 223 + regulator-min-microvolt = <3000000>; 224 + regulator-max-microvolt = <3000000>; 225 + regulator-state-mem { 226 + regulator-off-in-suspend; 227 + }; 228 + }; 229 + 230 + vcc_1v5: LDO_REG6 { 231 + regulator-name = "vcc_1v5"; 232 + regulator-always-on; 233 + regulator-boot-on; 234 + regulator-min-microvolt = <1500000>; 235 + regulator-max-microvolt = <1500000>; 236 + regulator-state-mem { 237 + regulator-on-in-suspend; 238 + regulator-suspend-microvolt = <1500000>; 239 + }; 240 + }; 241 + 242 + vcca1v8_codec: LDO_REG7 { 243 + regulator-name = "vcca1v8_codec"; 244 + regulator-always-on; 245 + regulator-boot-on; 246 + regulator-min-microvolt = <1800000>; 247 + regulator-max-microvolt = <1800000>; 248 + regulator-state-mem { 249 + regulator-off-in-suspend; 250 + }; 251 + }; 252 + 253 + vcc_3v0: LDO_REG8 { 254 + regulator-name = "vcc_3v0"; 255 + regulator-always-on; 256 + regulator-boot-on; 257 + regulator-min-microvolt = <3000000>; 258 + regulator-max-microvolt = <3000000>; 259 + regulator-state-mem { 260 + regulator-on-in-suspend; 261 + regulator-suspend-microvolt = <3000000>; 262 + }; 263 + }; 264 + 265 + vcc3v3_s3: SWITCH_REG1 { 266 + regulator-name = "vcc3v3_s3"; 267 + regulator-always-on; 268 + regulator-boot-on; 269 + regulator-state-mem { 270 + regulator-off-in-suspend; 271 + }; 272 + }; 273 + 274 + vcc3v3_s0: SWITCH_REG2 { 275 + regulator-name = "vcc3v3_s0"; 276 + regulator-always-on; 277 + regulator-boot-on; 278 + regulator-state-mem { 279 + regulator-off-in-suspend; 280 + }; 281 + }; 282 + }; 283 + }; 284 + };
+330
Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/rockchip,rk817.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RK817 Power Management Integrated Circuit 8 + 9 + maintainers: 10 + - Chris Zhong <zyw@rock-chips.com> 11 + - Zhang Qing <zhangqing@rock-chips.com> 12 + 13 + description: | 14 + Rockchip RK817 series PMIC. This device consists of an i2c controlled MFD 15 + that includes regulators, an RTC, a power button, an audio codec, and a 16 + battery charger manager. 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - rockchip,rk817 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + interrupts: 27 + maxItems: 1 28 + 29 + '#clock-cells': 30 + description: 31 + See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 32 + minimum: 0 33 + maximum: 1 34 + 35 + clock-output-names: 36 + description: 37 + From common clock binding to override the default output clock name. 38 + 39 + rockchip,system-power-controller: 40 + type: boolean 41 + description: 42 + Telling whether or not this PMIC is controlling the system power. 43 + 44 + wakeup-source: 45 + type: boolean 46 + description: 47 + Device can be used as a wakeup source. 48 + 49 + vcc1-supply: 50 + description: 51 + The input supply for DCDC_REG1. 52 + 53 + vcc2-supply: 54 + description: 55 + The input supply for DCDC_REG2. 56 + 57 + vcc3-supply: 58 + description: 59 + The input supply for DCDC_REG3. 60 + 61 + vcc4-supply: 62 + description: 63 + The input supply for DCDC_REG4. 64 + 65 + vcc5-supply: 66 + description: 67 + The input supply for LDO_REG1, LDO_REG2, and LDO_REG3. 68 + 69 + vcc6-supply: 70 + description: 71 + The input supply for LDO_REG4, LDO_REG5, and LDO_REG6. 72 + 73 + vcc7-supply: 74 + description: 75 + The input supply for LDO_REG7, LDO_REG8, and LDO_REG9. 76 + 77 + vcc8-supply: 78 + description: 79 + The input supply for BOOST. 80 + 81 + vcc9-supply: 82 + description: 83 + The input supply for OTG_SWITCH. 84 + 85 + regulators: 86 + type: object 87 + patternProperties: 88 + "^(LDO_REG[1-9]|DCDC_REG[1-4]|BOOST|OTG_SWITCH)$": 89 + type: object 90 + $ref: ../regulator/regulator.yaml# 91 + unevaluatedProperties: false 92 + 93 + clocks: 94 + description: 95 + The input clock for the audio codec. 96 + 97 + clock-names: 98 + description: 99 + The clock name for the codec clock. 100 + items: 101 + - const: mclk 102 + 103 + '#sound-dai-cells': 104 + description: 105 + Needed for the interpretation of sound dais. 106 + const: 0 107 + 108 + codec: 109 + description: | 110 + The child node for the codec to hold additional properties. If no 111 + additional properties are required for the codec, this node can be 112 + omitted. 113 + type: object 114 + properties: 115 + rockchip,mic-in-differential: 116 + type: boolean 117 + description: 118 + Describes if the microphone uses differential mode. 119 + 120 + allOf: 121 + - if: 122 + properties: 123 + '#clock-cells': 124 + const: 0 125 + 126 + then: 127 + properties: 128 + clock-output-names: 129 + maxItems: 1 130 + 131 + else: 132 + properties: 133 + clock-output-names: 134 + maxItems: 2 135 + 136 + required: 137 + - compatible 138 + - reg 139 + - interrupts 140 + - "#clock-cells" 141 + 142 + additionalProperties: false 143 + 144 + examples: 145 + - | 146 + #include <dt-bindings/clock/px30-cru.h> 147 + #include <dt-bindings/pinctrl/rockchip.h> 148 + #include <dt-bindings/interrupt-controller/irq.h> 149 + #include <dt-bindings/gpio/gpio.h> 150 + i2c { 151 + #address-cells = <1>; 152 + #size-cells = <0>; 153 + 154 + rk817: pmic@20 { 155 + compatible = "rockchip,rk817"; 156 + reg = <0x20>; 157 + interrupt-parent = <&gpio0>; 158 + interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; 159 + clock-output-names = "rk808-clkout1", "xin32k"; 160 + clock-names = "mclk"; 161 + clocks = <&cru SCLK_I2S1_OUT>; 162 + pinctrl-names = "default"; 163 + pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>; 164 + wakeup-source; 165 + #clock-cells = <1>; 166 + #sound-dai-cells = <0>; 167 + 168 + vcc1-supply = <&vccsys>; 169 + vcc2-supply = <&vccsys>; 170 + vcc3-supply = <&vccsys>; 171 + vcc4-supply = <&vccsys>; 172 + vcc5-supply = <&vccsys>; 173 + vcc6-supply = <&vccsys>; 174 + vcc7-supply = <&vccsys>; 175 + 176 + regulators { 177 + vdd_logic: DCDC_REG1 { 178 + regulator-name = "vdd_logic"; 179 + regulator-min-microvolt = <950000>; 180 + regulator-max-microvolt = <1150000>; 181 + regulator-ramp-delay = <6001>; 182 + regulator-always-on; 183 + regulator-boot-on; 184 + 185 + regulator-state-mem { 186 + regulator-on-in-suspend; 187 + regulator-suspend-microvolt = <950000>; 188 + }; 189 + }; 190 + 191 + vdd_arm: DCDC_REG2 { 192 + regulator-name = "vdd_arm"; 193 + regulator-min-microvolt = <950000>; 194 + regulator-max-microvolt = <1350000>; 195 + regulator-ramp-delay = <6001>; 196 + regulator-always-on; 197 + regulator-boot-on; 198 + 199 + regulator-state-mem { 200 + regulator-off-in-suspend; 201 + regulator-suspend-microvolt = <950000>; 202 + }; 203 + }; 204 + 205 + vcc_ddr: DCDC_REG3 { 206 + regulator-name = "vcc_ddr"; 207 + regulator-always-on; 208 + regulator-boot-on; 209 + 210 + regulator-state-mem { 211 + regulator-on-in-suspend; 212 + }; 213 + }; 214 + 215 + vcc_3v3: DCDC_REG4 { 216 + regulator-name = "vcc_3v3"; 217 + regulator-min-microvolt = <3300000>; 218 + regulator-max-microvolt = <3300000>; 219 + regulator-always-on; 220 + regulator-boot-on; 221 + 222 + regulator-state-mem { 223 + regulator-off-in-suspend; 224 + regulator-suspend-microvolt = <3300000>; 225 + }; 226 + }; 227 + 228 + vcc_1v8: LDO_REG2 { 229 + regulator-name = "vcc_1v8"; 230 + regulator-min-microvolt = <1800000>; 231 + regulator-max-microvolt = <1800000>; 232 + regulator-always-on; 233 + regulator-boot-on; 234 + 235 + regulator-state-mem { 236 + regulator-on-in-suspend; 237 + regulator-suspend-microvolt = <1800000>; 238 + }; 239 + }; 240 + 241 + vdd_1v0: LDO_REG3 { 242 + regulator-name = "vdd_1v0"; 243 + regulator-min-microvolt = <1000000>; 244 + regulator-max-microvolt = <1000000>; 245 + regulator-always-on; 246 + regulator-boot-on; 247 + 248 + regulator-state-mem { 249 + regulator-on-in-suspend; 250 + regulator-suspend-microvolt = <1000000>; 251 + }; 252 + }; 253 + 254 + vcc3v3_pmu: LDO_REG4 { 255 + regulator-name = "vcc3v3_pmu"; 256 + regulator-min-microvolt = <3300000>; 257 + regulator-max-microvolt = <3300000>; 258 + regulator-always-on; 259 + regulator-boot-on; 260 + 261 + regulator-state-mem { 262 + regulator-on-in-suspend; 263 + regulator-suspend-microvolt = <3300000>; 264 + }; 265 + }; 266 + 267 + vccio_sd: LDO_REG5 { 268 + regulator-name = "vccio_sd"; 269 + regulator-min-microvolt = <1800000>; 270 + regulator-max-microvolt = <3300000>; 271 + regulator-always-on; 272 + regulator-boot-on; 273 + 274 + regulator-state-mem { 275 + regulator-on-in-suspend; 276 + regulator-suspend-microvolt = <3300000>; 277 + }; 278 + }; 279 + 280 + vcc_sd: LDO_REG6 { 281 + regulator-name = "vcc_sd"; 282 + regulator-min-microvolt = <3300000>; 283 + regulator-max-microvolt = <3300000>; 284 + regulator-boot-on; 285 + 286 + regulator-state-mem { 287 + regulator-on-in-suspend; 288 + regulator-suspend-microvolt = <3300000>; 289 + }; 290 + }; 291 + 292 + vcc_bl: LDO_REG7 { 293 + regulator-name = "vcc_bl"; 294 + regulator-min-microvolt = <3300000>; 295 + regulator-max-microvolt = <3300000>; 296 + 297 + regulator-state-mem { 298 + regulator-off-in-suspend; 299 + regulator-suspend-microvolt = <3300000>; 300 + }; 301 + }; 302 + 303 + vcc_lcd: LDO_REG8 { 304 + regulator-name = "vcc_lcd"; 305 + regulator-min-microvolt = <2800000>; 306 + regulator-max-microvolt = <2800000>; 307 + 308 + regulator-state-mem { 309 + regulator-off-in-suspend; 310 + regulator-suspend-microvolt = <2800000>; 311 + }; 312 + }; 313 + 314 + vcc_cam: LDO_REG9 { 315 + regulator-name = "vcc_cam"; 316 + regulator-min-microvolt = <3000000>; 317 + regulator-max-microvolt = <3000000>; 318 + 319 + regulator-state-mem { 320 + regulator-off-in-suspend; 321 + regulator-suspend-microvolt = <3000000>; 322 + }; 323 + }; 324 + }; 325 + 326 + rk817_codec: codec { 327 + rockchip,mic-in-differential; 328 + }; 329 + }; 330 + };
+282
Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/rockchip,rk818.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: RK818 Power Management Integrated Circuit 8 + 9 + maintainers: 10 + - Chris Zhong <zyw@rock-chips.com> 11 + - Zhang Qing <zhangqing@rock-chips.com> 12 + 13 + description: | 14 + Rockchip RK818 series PMIC. This device consists of an i2c controlled MFD 15 + that includes regulators, an RTC, and a power button. 16 + 17 + properties: 18 + compatible: 19 + enum: 20 + - rockchip,rk818 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + '#clock-cells': 29 + description: | 30 + See <dt-bindings/clock/rockchip,rk808.h> for clock IDs. 31 + const: 1 32 + 33 + clock-output-names: 34 + description: 35 + From common clock binding to override the default output clock name. 36 + maxItems: 2 37 + 38 + rockchip,system-power-controller: 39 + type: boolean 40 + description: 41 + Telling whether or not this PMIC is controlling the system power. 42 + 43 + wakeup-source: 44 + type: boolean 45 + description: 46 + Device can be used as a wakeup source. 47 + 48 + vcc1-supply: 49 + description: 50 + The input supply for DCDC_REG1. 51 + 52 + vcc2-supply: 53 + description: 54 + The input supply for DCDC_REG2. 55 + 56 + vcc3-supply: 57 + description: 58 + The input supply for DCDC_REG3. 59 + 60 + vcc4-supply: 61 + description: 62 + The input supply for DCDC_REG4. 63 + 64 + boost-supply: 65 + description: 66 + The input supply for DCDC_BOOST 67 + 68 + vcc6-supply: 69 + description: 70 + The input supply for LDO_REG1 and LDO_REG2. 71 + 72 + vcc7-supply: 73 + description: 74 + The input supply for LDO_REG3, LDO_REG5, and LDO_REG7. 75 + 76 + vcc8-supply: 77 + description: 78 + The input supply for LDO_REG4, LDO_REG6, and LDO_REG8. 79 + 80 + vcc9-supply: 81 + description: 82 + The input supply for LDO_REG9 and SWITCH_REG. 83 + 84 + vddio-supply: 85 + description: 86 + The input supply for digital IO. 87 + 88 + h_5v-supply: 89 + description: 90 + The input supply for HDMI_SWITCH. 91 + 92 + usb-supply: 93 + description: 94 + The input supply for OTG_SWITCH. 95 + 96 + regulators: 97 + type: object 98 + patternProperties: 99 + "^(DCDC_REG[1-4]|DCDC_BOOST|LDO_REG[1-9]|SWITCH_REG|HDMI_SWITCH|OTG_SWITCH)$": 100 + type: object 101 + $ref: ../regulator/regulator.yaml# 102 + unevaluatedProperties: false 103 + 104 + required: 105 + - compatible 106 + - reg 107 + - interrupts 108 + - "#clock-cells" 109 + 110 + additionalProperties: false 111 + 112 + examples: 113 + - | 114 + #include <dt-bindings/clock/px30-cru.h> 115 + #include <dt-bindings/pinctrl/rockchip.h> 116 + #include <dt-bindings/interrupt-controller/irq.h> 117 + #include <dt-bindings/gpio/gpio.h> 118 + i2c { 119 + #address-cells = <1>; 120 + #size-cells = <0>; 121 + 122 + rk818: pmic@1c { 123 + compatible = "rockchip,rk818"; 124 + reg = <0x1c>; 125 + interrupt-parent = <&gpio0>; 126 + interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 127 + pinctrl-names = "default"; 128 + pinctrl-0 = <&pmic_int>; 129 + rockchip,system-power-controller; 130 + wakeup-source; 131 + #clock-cells = <1>; 132 + 133 + vcc1-supply = <&vdd_sys>; 134 + vcc2-supply = <&vdd_sys>; 135 + vcc3-supply = <&vdd_sys>; 136 + vcc4-supply = <&vdd_sys>; 137 + boost-supply = <&vdd_in_otg_out>; 138 + vcc6-supply = <&vdd_sys>; 139 + vcc7-supply = <&vdd_misc_1v8>; 140 + vcc8-supply = <&vdd_misc_1v8>; 141 + vcc9-supply = <&vdd_3v3_io>; 142 + vddio-supply = <&vdd_3v3_io>; 143 + 144 + regulators { 145 + vdd_log: DCDC_REG1 { 146 + regulator-name = "vdd_log"; 147 + regulator-always-on; 148 + regulator-boot-on; 149 + regulator-min-microvolt = <1100000>; 150 + regulator-max-microvolt = <1100000>; 151 + regulator-state-mem { 152 + regulator-off-in-suspend; 153 + }; 154 + }; 155 + 156 + vdd_gpu: DCDC_REG2 { 157 + regulator-name = "vdd_gpu"; 158 + regulator-always-on; 159 + regulator-boot-on; 160 + regulator-min-microvolt = <800000>; 161 + regulator-max-microvolt = <1250000>; 162 + regulator-state-mem { 163 + regulator-on-in-suspend; 164 + regulator-suspend-microvolt = <1000000>; 165 + }; 166 + }; 167 + 168 + vcc_ddr: DCDC_REG3 { 169 + regulator-name = "vcc_ddr"; 170 + regulator-always-on; 171 + regulator-boot-on; 172 + regulator-state-mem { 173 + regulator-on-in-suspend; 174 + }; 175 + }; 176 + 177 + vdd_3v3_io: DCDC_REG4 { 178 + regulator-name = "vdd_3v3_io"; 179 + regulator-always-on; 180 + regulator-boot-on; 181 + regulator-min-microvolt = <3300000>; 182 + regulator-max-microvolt = <3300000>; 183 + regulator-state-mem { 184 + regulator-on-in-suspend; 185 + regulator-suspend-microvolt = <3300000>; 186 + }; 187 + }; 188 + 189 + vdd_sys: DCDC_BOOST { 190 + regulator-name = "vdd_sys"; 191 + regulator-always-on; 192 + regulator-boot-on; 193 + regulator-min-microvolt = <5000000>; 194 + regulator-max-microvolt = <5000000>; 195 + regulator-state-mem { 196 + regulator-on-in-suspend; 197 + regulator-suspend-microvolt = <5000000>; 198 + }; 199 + }; 200 + 201 + vdd_sd: SWITCH_REG { 202 + regulator-name = "vdd_sd"; 203 + regulator-always-on; 204 + regulator-boot-on; 205 + regulator-state-mem { 206 + regulator-off-in-suspend; 207 + }; 208 + }; 209 + 210 + vdd_eth_2v5: LDO_REG2 { 211 + regulator-name = "vdd_eth_2v5"; 212 + regulator-always-on; 213 + regulator-boot-on; 214 + regulator-min-microvolt = <2500000>; 215 + regulator-max-microvolt = <2500000>; 216 + regulator-state-mem { 217 + regulator-on-in-suspend; 218 + regulator-suspend-microvolt = <2500000>; 219 + }; 220 + }; 221 + 222 + vdd_1v0: LDO_REG3 { 223 + regulator-name = "vdd_1v0"; 224 + regulator-always-on; 225 + regulator-boot-on; 226 + regulator-min-microvolt = <1000000>; 227 + regulator-max-microvolt = <1000000>; 228 + regulator-state-mem { 229 + regulator-on-in-suspend; 230 + regulator-suspend-microvolt = <1000000>; 231 + }; 232 + }; 233 + 234 + vdd_1v8_lcd_ldo: LDO_REG4 { 235 + regulator-name = "vdd_1v8_lcd_ldo"; 236 + regulator-always-on; 237 + regulator-boot-on; 238 + regulator-min-microvolt = <1800000>; 239 + regulator-max-microvolt = <1800000>; 240 + regulator-state-mem { 241 + regulator-on-in-suspend; 242 + regulator-suspend-microvolt = <1800000>; 243 + }; 244 + }; 245 + 246 + vdd_1v0_lcd: LDO_REG6 { 247 + regulator-name = "vdd_1v0_lcd"; 248 + regulator-always-on; 249 + regulator-boot-on; 250 + regulator-min-microvolt = <1000000>; 251 + regulator-max-microvolt = <1000000>; 252 + regulator-state-mem { 253 + regulator-on-in-suspend; 254 + regulator-suspend-microvolt = <1000000>; 255 + }; 256 + }; 257 + 258 + vdd_1v8_ldo: LDO_REG7 { 259 + regulator-name = "vdd_1v8_ldo"; 260 + regulator-always-on; 261 + regulator-boot-on; 262 + regulator-min-microvolt = <1800000>; 263 + regulator-max-microvolt = <1800000>; 264 + regulator-state-mem { 265 + regulator-off-in-suspend; 266 + regulator-suspend-microvolt = <1800000>; 267 + }; 268 + }; 269 + 270 + vdd_io_sd: LDO_REG9 { 271 + regulator-name = "vdd_io_sd"; 272 + regulator-always-on; 273 + regulator-boot-on; 274 + regulator-min-microvolt = <1800000>; 275 + regulator-max-microvolt = <3300000>; 276 + regulator-state-mem { 277 + regulator-off-in-suspend; 278 + }; 279 + }; 280 + }; 281 + }; 282 + };
+2 -2
Documentation/devicetree/bindings/mfd/samsung,exynos5433-lpass.yaml
··· 79 79 clocks = <&cmu_aud CLK_ACLK_DMAC>; 80 80 clock-names = "apb_pclk"; 81 81 #dma-cells = <1>; 82 - #dma-channels = <8>; 83 - #dma-requests = <32>; 82 + dma-channels = <8>; 83 + dma-requests = <32>; 84 84 power-domains = <&pd_aud>; 85 85 }; 86 86
-8
Documentation/devicetree/bindings/mfd/syscon.yaml
··· 100 100 compatible = "allwinner,sun8i-h3-system-controller", "syscon"; 101 101 reg = <0x01c00000 0x1000>; 102 102 }; 103 - 104 - - | 105 - gpr: iomuxc-gpr@20e0000 { 106 - compatible = "fsl,imx6q-iomuxc-gpr", "syscon"; 107 - reg = <0x020e0000 0x38>; 108 - hwlocks = <&hwlock1 1>; 109 - }; 110 - 111 103 ...
+1
Documentation/devicetree/bindings/mfd/wlf,arizona.yaml
··· 14 14 range of analogue I/O. 15 15 16 16 allOf: 17 + - $ref: /schemas/spi/spi-peripheral-props.yaml 17 18 - $ref: /schemas/sound/wlf,arizona.yaml# 18 19 - $ref: /schemas/regulator/wlf,arizona.yaml# 19 20 - $ref: /schemas/extcon/wlf,arizona.yaml#
-1
Documentation/devicetree/bindings/mux/reg-mux.yaml
··· 100 100 101 101 #include <dt-bindings/mux/mux.h> 102 102 syscon@1000 { 103 - compatible = "fsl,imx7d-iomuxc-gpr", "fsl,imx6q-iomuxc-gpr", "syscon", "simple-mfd"; 104 103 reg = <0x1000 0x100>; 105 104 106 105 mux2: mux-controller {
+19
drivers/mfd/cros_ec_dev.c
··· 114 114 { .name = "cros-ec-chardev", }, 115 115 { .name = "cros-ec-debugfs", }, 116 116 { .name = "cros-ec-sysfs", }, 117 + }; 118 + 119 + static const struct mfd_cell cros_ec_pchg_cells[] = { 117 120 { .name = "cros-ec-pchg", }, 118 121 }; 119 122 ··· 140 137 struct device *dev = &pdev->dev; 141 138 struct cros_ec_platform *ec_platform = dev_get_platdata(dev); 142 139 struct cros_ec_dev *ec = kzalloc(sizeof(*ec), GFP_KERNEL); 140 + struct ec_response_pchg_count pchg_count; 143 141 int i; 144 142 145 143 if (!ec) ··· 244 240 "failed to add PD notify devices: %d\n", 245 241 retval); 246 242 } 243 + } 244 + 245 + /* 246 + * The PCHG device cannot be detected by sending EC_FEATURE_GET_CMD, but 247 + * it can be detected by querying the number of peripheral chargers. 248 + */ 249 + retval = cros_ec_command(ec->ec_dev, 0, EC_CMD_PCHG_COUNT, NULL, 0, 250 + &pchg_count, sizeof(pchg_count)); 251 + if (retval >= 0 && pchg_count.port_count) { 252 + retval = mfd_add_hotplug_devices(ec->dev, 253 + cros_ec_pchg_cells, 254 + ARRAY_SIZE(cros_ec_pchg_cells)); 255 + if (retval) 256 + dev_warn(ec->dev, "failed to add pchg: %d\n", 257 + retval); 247 258 } 248 259 249 260 /*
+2 -4
drivers/mfd/davinci_voicecodec.c
··· 46 46 } 47 47 clk_enable(davinci_vc->clk); 48 48 49 - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 50 - 51 - fifo_base = (dma_addr_t)res->start; 52 - davinci_vc->base = devm_ioremap_resource(&pdev->dev, res); 49 + davinci_vc->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); 53 50 if (IS_ERR(davinci_vc->base)) { 54 51 ret = PTR_ERR(davinci_vc->base); 55 52 goto fail; 56 53 } 54 + fifo_base = (dma_addr_t)res->start; 57 55 58 56 davinci_vc->regmap = devm_regmap_init_mmio(&pdev->dev, 59 57 davinci_vc->base,
+8 -19
drivers/mfd/hi655x-pmic.c
··· 9 9 * Fei Wang <w.f@huawei.com> 10 10 */ 11 11 12 - #include <linux/gpio.h> 13 12 #include <linux/io.h> 14 13 #include <linux/interrupt.h> 15 14 #include <linux/init.h> 16 15 #include <linux/mfd/core.h> 17 16 #include <linux/mfd/hi655x-pmic.h> 18 17 #include <linux/module.h> 19 - #include <linux/of_gpio.h> 18 + #include <linux/gpio/consumer.h> 20 19 #include <linux/of_platform.h> 21 20 #include <linux/platform_device.h> 22 21 #include <linux/regmap.h> ··· 93 94 int ret; 94 95 struct hi655x_pmic *pmic; 95 96 struct device *dev = &pdev->dev; 96 - struct device_node *np = dev->of_node; 97 97 void __iomem *base; 98 98 99 99 pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL); ··· 118 120 119 121 hi655x_local_irq_clear(pmic->regmap); 120 122 121 - pmic->gpio = of_get_named_gpio(np, "pmic-gpios", 0); 122 - if (!gpio_is_valid(pmic->gpio)) { 123 - dev_err(dev, "Failed to get the pmic-gpios\n"); 124 - return -ENODEV; 125 - } 123 + pmic->gpio = devm_gpiod_get_optional(dev, "pmic", GPIOD_IN); 124 + if (IS_ERR(pmic->gpio)) 125 + return dev_err_probe(dev, PTR_ERR(pmic->gpio), 126 + "Failed to request hi655x pmic-gpio"); 126 127 127 - ret = devm_gpio_request_one(dev, pmic->gpio, GPIOF_IN, 128 - "hi655x_pmic_irq"); 129 - if (ret < 0) { 130 - dev_err(dev, "Failed to request gpio %d ret = %d\n", 131 - pmic->gpio, ret); 132 - return ret; 133 - } 134 - 135 - ret = regmap_add_irq_chip(pmic->regmap, gpio_to_irq(pmic->gpio), 128 + ret = regmap_add_irq_chip(pmic->regmap, gpiod_to_irq(pmic->gpio), 136 129 IRQF_TRIGGER_LOW | IRQF_NO_SUSPEND, 0, 137 130 &hi655x_irq_chip, &pmic->irq_data); 138 131 if (ret) { ··· 138 149 regmap_irq_get_domain(pmic->irq_data)); 139 150 if (ret) { 140 151 dev_err(dev, "Failed to register device %d\n", ret); 141 - regmap_del_irq_chip(gpio_to_irq(pmic->gpio), pmic->irq_data); 152 + regmap_del_irq_chip(gpiod_to_irq(pmic->gpio), pmic->irq_data); 142 153 return ret; 143 154 } 144 155 ··· 149 160 { 150 161 struct hi655x_pmic *pmic = platform_get_drvdata(pdev); 151 162 152 - regmap_del_irq_chip(gpio_to_irq(pmic->gpio), pmic->irq_data); 163 + regmap_del_irq_chip(gpiod_to_irq(pmic->gpio), pmic->irq_data); 153 164 mfd_remove_devices(&pdev->dev); 154 165 return 0; 155 166 }
+2
drivers/mfd/intel-lpss-pci.c
··· 319 319 { PCI_VDEVICE(INTEL, 0x51c5), (kernel_ulong_t)&bxt_i2c_info }, 320 320 { PCI_VDEVICE(INTEL, 0x51c6), (kernel_ulong_t)&bxt_i2c_info }, 321 321 { PCI_VDEVICE(INTEL, 0x51c7), (kernel_ulong_t)&bxt_uart_info }, 322 + { PCI_VDEVICE(INTEL, 0x51d8), (kernel_ulong_t)&bxt_i2c_info }, 323 + { PCI_VDEVICE(INTEL, 0x51d9), (kernel_ulong_t)&bxt_i2c_info }, 322 324 { PCI_VDEVICE(INTEL, 0x51e8), (kernel_ulong_t)&bxt_i2c_info }, 323 325 { PCI_VDEVICE(INTEL, 0x51e9), (kernel_ulong_t)&bxt_i2c_info }, 324 326 { PCI_VDEVICE(INTEL, 0x51ea), (kernel_ulong_t)&bxt_i2c_info },
+1 -1
drivers/mfd/ipaq-micro.c
··· 403 403 micro_reset_comm(micro); 404 404 405 405 irq = platform_get_irq(pdev, 0); 406 - if (!irq) 406 + if (irq < 0) 407 407 return -EINVAL; 408 408 ret = devm_request_irq(&pdev->dev, irq, micro_serial_isr, 409 409 IRQF_SHARED, "ipaq-micro",
+13
drivers/mfd/mt6397-core.c
··· 54 54 DEFINE_RES_IRQ_NAMED(MT6358_IRQ_HOMEKEY_R, "homekey_r"), 55 55 }; 56 56 57 + static const struct resource mt6359_keys_resources[] = { 58 + DEFINE_RES_IRQ_NAMED(MT6359_IRQ_PWRKEY, "powerkey"), 59 + DEFINE_RES_IRQ_NAMED(MT6359_IRQ_HOMEKEY, "homekey"), 60 + DEFINE_RES_IRQ_NAMED(MT6359_IRQ_PWRKEY_R, "powerkey_r"), 61 + DEFINE_RES_IRQ_NAMED(MT6359_IRQ_HOMEKEY_R, "homekey_r"), 62 + }; 63 + 57 64 static const struct resource mt6323_keys_resources[] = { 58 65 DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_PWRKEY, "powerkey"), 59 66 DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_FCHRKEY, "homekey"), ··· 129 122 .of_compatible = "mediatek,mt6358-rtc", 130 123 }, 131 124 { .name = "mt6359-sound", }, 125 + { 126 + .name = "mtk-pmic-keys", 127 + .num_resources = ARRAY_SIZE(mt6359_keys_resources), 128 + .resources = mt6359_keys_resources, 129 + .of_compatible = "mediatek,mt6359-keys" 130 + }, 132 131 }; 133 132 134 133 static const struct mfd_cell mt6397_devs[] = {
+6 -1
drivers/mfd/rt4831.c
··· 90 90 static int rt4831_remove(struct i2c_client *client) 91 91 { 92 92 struct regmap *regmap = dev_get_regmap(&client->dev, NULL); 93 + int ret; 93 94 94 95 /* Disable WLED and DSV outputs */ 95 - return regmap_update_bits(regmap, RT4831_REG_ENABLE, RT4831_RESET_MASK, RT4831_RESET_MASK); 96 + ret = regmap_update_bits(regmap, RT4831_REG_ENABLE, RT4831_RESET_MASK, RT4831_RESET_MASK); 97 + if (ret) 98 + dev_warn(&client->dev, "Failed to disable outputs (%pe)\n", ERR_PTR(ret)); 99 + 100 + return 0; 96 101 } 97 102 98 103 static const struct of_device_id __maybe_unused rt4831_of_match[] = {
+2 -1
drivers/mfd/sprd-sc27xx-spi.c
··· 240 240 static SIMPLE_DEV_PM_OPS(sprd_pmic_pm_ops, sprd_pmic_suspend, sprd_pmic_resume); 241 241 242 242 static const struct of_device_id sprd_pmic_match[] = { 243 - { .compatible = "sprd,sc2731", .data = &sc2731_data }, 244 243 { .compatible = "sprd,sc2730", .data = &sc2730_data }, 244 + { .compatible = "sprd,sc2731", .data = &sc2731_data }, 245 245 {}, 246 246 }; 247 247 MODULE_DEVICE_TABLE(of, sprd_pmic_match); 248 248 249 249 static const struct spi_device_id sprd_pmic_spi_ids[] = { 250 + { .name = "sc2730", .driver_data = (unsigned long)&sc2730_data }, 250 251 { .name = "sc2731", .driver_data = (unsigned long)&sc2731_data }, 251 252 {}, 252 253 };
+2 -6
drivers/mfd/twl-core.c
··· 1036 1036 static int twl_remove(struct i2c_client *client) 1037 1037 { 1038 1038 unsigned i, num_slaves; 1039 - int status; 1040 1039 1041 1040 if (twl_class_is_4030()) 1042 - status = twl4030_exit_irq(); 1041 + twl4030_exit_irq(); 1043 1042 else 1044 - status = twl6030_exit_irq(); 1045 - 1046 - if (status < 0) 1047 - return status; 1043 + twl6030_exit_irq(); 1048 1044 1049 1045 num_slaves = twl_get_num_slaves(); 1050 1046 for (i = 0; i < num_slaves; i++) {
+2 -2
drivers/mfd/twl-core.h
··· 3 3 #define __TWL_CORE_H__ 4 4 5 5 extern int twl6030_init_irq(struct device *dev, int irq_num); 6 - extern int twl6030_exit_irq(void); 6 + extern void twl6030_exit_irq(void); 7 7 extern int twl4030_init_irq(struct device *dev, int irq_num); 8 - extern int twl4030_exit_irq(void); 8 + extern void twl4030_exit_irq(void); 9 9 extern int twl4030_init_chip_irq(const char *chip); 10 10 11 11 #endif /* __TWL_CORE_H__ */
+2 -5
drivers/mfd/twl4030-irq.c
··· 753 753 return status; 754 754 } 755 755 756 - int twl4030_exit_irq(void) 756 + void twl4030_exit_irq(void) 757 757 { 758 758 /* FIXME undo twl_init_irq() */ 759 - if (twl4030_irq_base) { 759 + if (twl4030_irq_base) 760 760 pr_err("twl4030: can't yet clean up IRQs?\n"); 761 - return -ENOSYS; 762 - } 763 - return 0; 764 761 } 765 762 766 763 int twl4030_init_chip_irq(const char *chip)
+1 -2
drivers/mfd/twl6030-irq.c
··· 438 438 return status; 439 439 } 440 440 441 - int twl6030_exit_irq(void) 441 + void twl6030_exit_irq(void) 442 442 { 443 443 if (twl6030_irq && twl6030_irq->twl_irq) { 444 444 unregister_pm_notifier(&twl6030_irq->pm_nb); ··· 453 453 * in this module. 454 454 */ 455 455 } 456 - return 0; 457 456 } 458 457
+3 -1
include/linux/mfd/hi655x-pmic.h
··· 12 12 #ifndef __HI655X_PMIC_H 13 13 #define __HI655X_PMIC_H 14 14 15 + #include <linux/gpio/consumer.h> 16 + 15 17 /* Hi655x registers are mapped to memory bus in 4 bytes stride */ 16 18 #define HI655X_STRIDE 4 17 19 #define HI655X_BUS_ADDR(x) ((x) << 2) ··· 55 53 struct resource *res; 56 54 struct device *dev; 57 55 struct regmap *regmap; 58 - int gpio; 56 + struct gpio_desc *gpio; 59 57 unsigned int ver; 60 58 struct regmap_irq_chip_data *irq_data; 61 59 };
+2
include/linux/mfd/mt6359/registers.h
··· 8 8 9 9 /* PMIC Registers */ 10 10 #define MT6359_SWCID 0xa 11 + #define MT6359_TOPSTATUS 0x2a 12 + #define MT6359_TOP_RST_MISC 0x14c 11 13 #define MT6359_MISC_TOP_INT_CON0 0x188 12 14 #define MT6359_MISC_TOP_INT_STATUS0 0x194 13 15 #define MT6359_TOP_INT_STATUS0 0x19e
+1 -1
include/linux/mfd/tps65218.h
··· 1 1 /* 2 2 * linux/mfd/tps65218.h 3 3 * 4 - * Functions to access TPS65219 power management chip. 4 + * Functions to access TPS65218 power management chip. 5 5 * 6 6 * Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com/ 7 7 *