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

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

Pull MFD updates from Lee Jones:

- Added support for the Analog Devices ADP5585 GPIO and PWM functions

- Added parsing of GPIO hogs for the ADP5585

- Fixed module autoloading in the MAX14577 driver

- Simplified and cleaned up the CROS_EC driver

- Made the Lenovo Yoga Tab 3 X90F DMI match less strict in the
INTEL_SOC_PMIC_CHTWC driver

- Added support for the RK806 PMIC on the I2C bus

- Removed the remaining header file for the DS1WM driver

- Added compatible strings for various devices in the device tree
bindings

- Fixed a comma-related issue in the 88PM860X_CORE driver

- Constified read-only regmap structs in various drivers

- Used scoped variables with memory allocators to simplify error paths
in the MT6360 and SYSCON drivers

- Added Intel Arrow Lake-H and Panther Lake LPSS PCI IDs

* tag 'mfd-next-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (44 commits)
mfd: atc260x: Convert a bunch of commas to semicolons
dt-bindings: mfd: qcom,tcsr: Add compatible for sa8775p
mfd: intel-lpss: Add Intel Panther Lake LPSS PCI IDs
mfd: intel-lpss: Add Intel Arrow Lake-H LPSS PCI IDs
dt-bindings: mfd: syscon: Add rk3576 QoS register compatible
dt-bindings: mfd: adp5585: Add parsing of hogs
mfd: tc3589x: Drop vendorless compatible string from match table
mfd: qcom-spmi-pmic: Use for_each_child_of_node_scoped()
mfd: max77620: Use for_each_child_of_node_scoped()
mfd: intel_soc_pmic_chtwc: Make Lenovo Yoga Tab 3 X90F DMI match less strict
mfd: cros_ec: Update module description
mfd: cros_ec: Simplify and clean-up cros_ec_dev_init()
mfd: max14577: Provide MODULE_DEVICE_TABLE() to fix module autoloading
mfd: rk8xx: Add support for rk806 on i2c bus
dt-bindings: mfd: syscon: Add ti,j784s4-acspcie-proxy-ctrl compatible
mfd: ds1wm: Remove remaining header file
MAINTAINERS: Repair file entry in MARVELL 88PM886 PMIC DRIVER
mfd: 88pm860x-core: Convert comma to semicolon
mfd: syscon: Use scoped variables with memory allocators to simplify error paths
mfd: mt6360: Use scoped variables with memory allocators to simplify error paths
...

+163 -139
+7
Documentation/devicetree/bindings/mfd/adi,adp5585.yaml
··· 42 42 "#pwm-cells": 43 43 const: 3 44 44 45 + patternProperties: 46 + "-hog(-[0-9]+)?$": 47 + type: object 48 + 49 + required: 50 + - gpio-hog 51 + 45 52 required: 46 53 - compatible 47 54 - reg
+1
Documentation/devicetree/bindings/mfd/qcom,tcsr.yaml
··· 21 21 - qcom,msm8998-tcsr 22 22 - qcom,qcm2290-tcsr 23 23 - qcom,qcs404-tcsr 24 + - qcom,sa8775p-tcsr 24 25 - qcom,sc7180-tcsr 25 26 - qcom,sc7280-tcsr 26 27 - qcom,sc8280xp-tcsr
+3
Documentation/devicetree/bindings/mfd/syscon.yaml
··· 103 103 - rockchip,rk3368-qos 104 104 - rockchip,rk3399-qos 105 105 - rockchip,rk3568-qos 106 + - rockchip,rk3576-qos 106 107 - rockchip,rk3588-qos 107 108 - rockchip,rv1126-qos 108 109 - st,spear1340-misc ··· 114 113 - ti,am625-dss-oldi-io-ctrl 115 114 - ti,am62p-cpsw-mac-efuse 116 115 - ti,am654-dss-oldi-io-ctrl 116 + - ti,j784s4-acspcie-proxy-ctrl 117 117 - ti,j784s4-pcie-ctrl 118 118 - ti,keystone-pllctrl 119 119 required: ··· 200 198 - rockchip,rk3368-qos 201 199 - rockchip,rk3399-qos 202 200 - rockchip,rk3568-qos 201 + - rockchip,rk3576-qos 203 202 - rockchip,rk3588-qos 204 203 - rockchip,rv1126-qos 205 204 - st,spear1340-misc
+1 -1
MAINTAINERS
··· 13636 13636 F: Documentation/devicetree/bindings/mfd/marvell,88pm886-a1.yaml 13637 13637 F: drivers/input/misc/88pm886-onkey.c 13638 13638 F: drivers/mfd/88pm886.c 13639 - F: drivers/regulators/88pm886-regulator.c 13639 + F: drivers/regulator/88pm886-regulator.c 13640 13640 F: include/linux/mfd/88pm886.h 13641 13641 13642 13642 MARVELL ARMADA 3700 PHY DRIVERS
+1 -1
drivers/mfd/88pm800.c
··· 391 391 regmap_del_irq_chip(chip->irq, chip->irq_data); 392 392 } 393 393 394 - static struct regmap_irq_chip pm800_irq_chip = { 394 + static const struct regmap_irq_chip pm800_irq_chip = { 395 395 .name = "88pm800", 396 396 .irqs = pm800_irqs, 397 397 .num_irqs = ARRAY_SIZE(pm800_irqs),
+2 -2
drivers/mfd/88pm805.c
··· 73 73 }, 74 74 }; 75 75 76 - static struct regmap_irq pm805_irqs[] = { 76 + static const struct regmap_irq pm805_irqs[] = { 77 77 /* INT0 */ 78 78 [PM805_IRQ_LDO_OFF] = { 79 79 .mask = PM805_INT1_HP1_SHRT, ··· 163 163 regmap_del_irq_chip(chip->irq, chip->irq_data); 164 164 } 165 165 166 - static struct regmap_irq_chip pm805_irq_chip = { 166 + static const struct regmap_irq_chip pm805_irq_chip = { 167 167 .name = "88pm805", 168 168 .irqs = pm805_irqs, 169 169 .num_irqs = ARRAY_SIZE(pm805_irqs),
+5 -5
drivers/mfd/88pm860x-core.c
··· 916 916 power_devs[0].platform_data = pdata->power; 917 917 power_devs[0].pdata_size = sizeof(struct pm860x_power_pdata); 918 918 power_devs[0].num_resources = ARRAY_SIZE(battery_resources); 919 - power_devs[0].resources = &battery_resources[0], 919 + power_devs[0].resources = &battery_resources[0]; 920 920 ret = mfd_add_devices(chip->dev, 0, &power_devs[0], 1, 921 921 &battery_resources[0], chip->irq_base, NULL); 922 922 if (ret < 0) ··· 925 925 power_devs[1].platform_data = pdata->power; 926 926 power_devs[1].pdata_size = sizeof(struct pm860x_power_pdata); 927 927 power_devs[1].num_resources = ARRAY_SIZE(charger_resources); 928 - power_devs[1].resources = &charger_resources[0], 928 + power_devs[1].resources = &charger_resources[0]; 929 929 ret = mfd_add_devices(chip->dev, 0, &power_devs[1], 1, 930 930 &charger_resources[0], chip->irq_base, NULL); 931 931 if (ret < 0) ··· 942 942 pdata->chg_desc->charger_regulators = 943 943 &chg_desc_regulator_data[0]; 944 944 pdata->chg_desc->num_charger_regulators = 945 - ARRAY_SIZE(chg_desc_regulator_data), 945 + ARRAY_SIZE(chg_desc_regulator_data); 946 946 power_devs[3].platform_data = pdata->chg_desc; 947 947 power_devs[3].pdata_size = sizeof(*pdata->chg_desc); 948 948 ret = mfd_add_devices(chip->dev, 0, &power_devs[3], 1, ··· 958 958 int ret; 959 959 960 960 onkey_devs[0].num_resources = ARRAY_SIZE(onkey_resources); 961 - onkey_devs[0].resources = &onkey_resources[0], 961 + onkey_devs[0].resources = &onkey_resources[0]; 962 962 ret = mfd_add_devices(chip->dev, 0, &onkey_devs[0], 963 963 ARRAY_SIZE(onkey_devs), &onkey_resources[0], 964 964 chip->irq_base, NULL); ··· 972 972 int ret; 973 973 974 974 codec_devs[0].num_resources = ARRAY_SIZE(codec_resources); 975 - codec_devs[0].resources = &codec_resources[0], 975 + codec_devs[0].resources = &codec_resources[0]; 976 976 ret = mfd_add_devices(chip->dev, 0, &codec_devs[0], 977 977 ARRAY_SIZE(codec_devs), &codec_resources[0], 0, 978 978 NULL);
+2 -2
drivers/mfd/atc260x-core.c
··· 235 235 236 236 mutex_init(atc260x->regmap_mutex); 237 237 238 - regmap_cfg->lock = regmap_lock_mutex, 239 - regmap_cfg->unlock = regmap_unlock_mutex, 238 + regmap_cfg->lock = regmap_lock_mutex; 239 + regmap_cfg->unlock = regmap_unlock_mutex; 240 240 regmap_cfg->lock_arg = atc260x->regmap_mutex; 241 241 242 242 return 0;
+2 -2
drivers/mfd/bd9571mwv.c
··· 93 93 BD9571MWV_INT_INTREQ_BKUP_TRG_INT), 94 94 }; 95 95 96 - static struct regmap_irq_chip bd9571mwv_irq_chip = { 96 + static const struct regmap_irq_chip bd9571mwv_irq_chip = { 97 97 .name = "bd9571mwv", 98 98 .status_base = BD9571MWV_INT_INTREQ, 99 99 .mask_base = BD9571MWV_INT_INTMASK, ··· 159 159 .max_register = 0xff, 160 160 }; 161 161 162 - static struct regmap_irq_chip bd9574mwf_irq_chip = { 162 + static const struct regmap_irq_chip bd9574mwf_irq_chip = { 163 163 .name = "bd9574mwf", 164 164 .status_base = BD9571MWV_INT_INTREQ, 165 165 .mask_base = BD9571MWV_INT_INTMASK,
+5 -10
drivers/mfd/cros_ec_dev.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-or-later 2 2 /* 3 - * cros_ec_dev - expose the Chrome OS Embedded Controller to user-space 3 + * ChromeOS Embedded Controller 4 4 * 5 5 * Copyright (C) 2014 Google, Inc. 6 6 */ ··· 353 353 { 354 354 int ret; 355 355 356 - ret = class_register(&cros_class); 356 + ret = class_register(&cros_class); 357 357 if (ret) { 358 358 pr_err(CROS_EC_DEV_NAME ": failed to register device class\n"); 359 359 return ret; 360 360 } 361 361 362 - /* Register the driver */ 363 362 ret = platform_driver_register(&cros_ec_dev_driver); 364 - if (ret < 0) { 363 + if (ret) { 365 364 pr_warn(CROS_EC_DEV_NAME ": can't register driver: %d\n", ret); 366 - goto failed_devreg; 365 + class_unregister(&cros_class); 367 366 } 368 - return 0; 369 - 370 - failed_devreg: 371 - class_unregister(&cros_class); 372 367 return ret; 373 368 } 374 369 ··· 377 382 module_exit(cros_ec_dev_exit); 378 383 379 384 MODULE_AUTHOR("Bill Richardson <wfrichar@chromium.org>"); 380 - MODULE_DESCRIPTION("Userspace interface to the Chrome OS Embedded Controller"); 385 + MODULE_DESCRIPTION("ChromeOS Embedded Controller"); 381 386 MODULE_VERSION("1.0"); 382 387 MODULE_LICENSE("GPL");
+6 -6
drivers/mfd/da9062-core.c
··· 25 25 #define DA9062_IRQ_LOW 0 26 26 #define DA9062_IRQ_HIGH 1 27 27 28 - static struct regmap_irq da9061_irqs[] = { 28 + static const struct regmap_irq da9061_irqs[] = { 29 29 /* EVENT A */ 30 30 [DA9061_IRQ_ONKEY] = { 31 31 .reg_offset = DA9062_REG_EVENT_A_OFFSET, ··· 79 79 }, 80 80 }; 81 81 82 - static struct regmap_irq_chip da9061_irq_chip = { 82 + static const struct regmap_irq_chip da9061_irq_chip = { 83 83 .name = "da9061-irq", 84 84 .irqs = da9061_irqs, 85 85 .num_irqs = DA9061_NUM_IRQ, ··· 89 89 .ack_base = DA9062AA_EVENT_A, 90 90 }; 91 91 92 - static struct regmap_irq da9062_irqs[] = { 92 + static const struct regmap_irq da9062_irqs[] = { 93 93 /* EVENT A */ 94 94 [DA9062_IRQ_ONKEY] = { 95 95 .reg_offset = DA9062_REG_EVENT_A_OFFSET, ··· 151 151 }, 152 152 }; 153 153 154 - static struct regmap_irq_chip da9062_irq_chip = { 154 + static const struct regmap_irq_chip da9062_irq_chip = { 155 155 .name = "da9062-irq", 156 156 .irqs = da9062_irqs, 157 157 .num_irqs = DA9062_NUM_IRQ, ··· 470 470 } 471 471 }; 472 472 473 - static struct regmap_config da9061_regmap_config = { 473 + static const struct regmap_config da9061_regmap_config = { 474 474 .reg_bits = 8, 475 475 .val_bits = 8, 476 476 .ranges = da9061_range_cfg, ··· 576 576 } 577 577 }; 578 578 579 - static struct regmap_config da9062_regmap_config = { 579 + static const struct regmap_config da9062_regmap_config = { 580 580 .reg_bits = 8, 581 581 .val_bits = 8, 582 582 .ranges = da9062_range_cfg,
+1 -1
drivers/mfd/fsl-imx25-tsadc.c
··· 16 16 #include <linux/platform_device.h> 17 17 #include <linux/regmap.h> 18 18 19 - static struct regmap_config mx25_tsadc_regmap_config = { 19 + static const struct regmap_config mx25_tsadc_regmap_config = { 20 20 .fast_io = true, 21 21 .max_register = 8, 22 22 .reg_bits = 32,
+1 -1
drivers/mfd/gateworks-gsc.c
··· 160 160 }; 161 161 MODULE_DEVICE_TABLE(of, gsc_of_match); 162 162 163 - static struct regmap_bus gsc_regmap_bus = { 163 + static const struct regmap_bus gsc_regmap_bus = { 164 164 .reg_read = gsc_read, 165 165 .reg_write = gsc_write, 166 166 };
+1 -1
drivers/mfd/hi655x-pmic.c
··· 41 41 .mask_base = HI655X_IRQ_MASK_BASE, 42 42 }; 43 43 44 - static struct regmap_config hi655x_regmap_config = { 44 + static const struct regmap_config hi655x_regmap_config = { 45 45 .reg_bits = 32, 46 46 .reg_stride = HI655X_STRIDE, 47 47 .val_bits = 8,
+39
drivers/mfd/intel-lpss-pci.c
··· 424 424 { PCI_VDEVICE(INTEL, 0x5ac4), (kernel_ulong_t)&bxt_spi_info }, 425 425 { PCI_VDEVICE(INTEL, 0x5ac6), (kernel_ulong_t)&bxt_spi_info }, 426 426 { PCI_VDEVICE(INTEL, 0x5aee), (kernel_ulong_t)&bxt_uart_info }, 427 + /* ARL-H */ 428 + { PCI_VDEVICE(INTEL, 0x7725), (kernel_ulong_t)&bxt_uart_info }, 429 + { PCI_VDEVICE(INTEL, 0x7726), (kernel_ulong_t)&bxt_uart_info }, 430 + { PCI_VDEVICE(INTEL, 0x7727), (kernel_ulong_t)&tgl_spi_info }, 431 + { PCI_VDEVICE(INTEL, 0x7730), (kernel_ulong_t)&tgl_spi_info }, 432 + { PCI_VDEVICE(INTEL, 0x7746), (kernel_ulong_t)&tgl_spi_info }, 433 + { PCI_VDEVICE(INTEL, 0x7750), (kernel_ulong_t)&bxt_i2c_info }, 434 + { PCI_VDEVICE(INTEL, 0x7751), (kernel_ulong_t)&bxt_i2c_info }, 435 + { PCI_VDEVICE(INTEL, 0x7752), (kernel_ulong_t)&bxt_uart_info }, 436 + { PCI_VDEVICE(INTEL, 0x7778), (kernel_ulong_t)&bxt_i2c_info }, 437 + { PCI_VDEVICE(INTEL, 0x7779), (kernel_ulong_t)&bxt_i2c_info }, 438 + { PCI_VDEVICE(INTEL, 0x777a), (kernel_ulong_t)&bxt_i2c_info }, 439 + { PCI_VDEVICE(INTEL, 0x777b), (kernel_ulong_t)&bxt_i2c_info }, 427 440 /* RPL-S */ 428 441 { PCI_VDEVICE(INTEL, 0x7a28), (kernel_ulong_t)&bxt_uart_info }, 429 442 { PCI_VDEVICE(INTEL, 0x7a29), (kernel_ulong_t)&bxt_uart_info }, ··· 607 594 { PCI_VDEVICE(INTEL, 0xa879), (kernel_ulong_t)&ehl_i2c_info }, 608 595 { PCI_VDEVICE(INTEL, 0xa87a), (kernel_ulong_t)&ehl_i2c_info }, 609 596 { PCI_VDEVICE(INTEL, 0xa87b), (kernel_ulong_t)&ehl_i2c_info }, 597 + /* PTL-H */ 598 + { PCI_VDEVICE(INTEL, 0xe325), (kernel_ulong_t)&bxt_uart_info }, 599 + { PCI_VDEVICE(INTEL, 0xe326), (kernel_ulong_t)&bxt_uart_info }, 600 + { PCI_VDEVICE(INTEL, 0xe327), (kernel_ulong_t)&tgl_spi_info }, 601 + { PCI_VDEVICE(INTEL, 0xe330), (kernel_ulong_t)&tgl_spi_info }, 602 + { PCI_VDEVICE(INTEL, 0xe346), (kernel_ulong_t)&tgl_spi_info }, 603 + { PCI_VDEVICE(INTEL, 0xe350), (kernel_ulong_t)&ehl_i2c_info }, 604 + { PCI_VDEVICE(INTEL, 0xe351), (kernel_ulong_t)&ehl_i2c_info }, 605 + { PCI_VDEVICE(INTEL, 0xe352), (kernel_ulong_t)&bxt_uart_info }, 606 + { PCI_VDEVICE(INTEL, 0xe378), (kernel_ulong_t)&ehl_i2c_info }, 607 + { PCI_VDEVICE(INTEL, 0xe379), (kernel_ulong_t)&ehl_i2c_info }, 608 + { PCI_VDEVICE(INTEL, 0xe37a), (kernel_ulong_t)&ehl_i2c_info }, 609 + { PCI_VDEVICE(INTEL, 0xe37b), (kernel_ulong_t)&ehl_i2c_info }, 610 + /* PTL-P */ 611 + { PCI_VDEVICE(INTEL, 0xe425), (kernel_ulong_t)&bxt_uart_info }, 612 + { PCI_VDEVICE(INTEL, 0xe426), (kernel_ulong_t)&bxt_uart_info }, 613 + { PCI_VDEVICE(INTEL, 0xe427), (kernel_ulong_t)&tgl_spi_info }, 614 + { PCI_VDEVICE(INTEL, 0xe430), (kernel_ulong_t)&tgl_spi_info }, 615 + { PCI_VDEVICE(INTEL, 0xe446), (kernel_ulong_t)&tgl_spi_info }, 616 + { PCI_VDEVICE(INTEL, 0xe450), (kernel_ulong_t)&ehl_i2c_info }, 617 + { PCI_VDEVICE(INTEL, 0xe451), (kernel_ulong_t)&ehl_i2c_info }, 618 + { PCI_VDEVICE(INTEL, 0xe452), (kernel_ulong_t)&bxt_uart_info }, 619 + { PCI_VDEVICE(INTEL, 0xe478), (kernel_ulong_t)&ehl_i2c_info }, 620 + { PCI_VDEVICE(INTEL, 0xe479), (kernel_ulong_t)&ehl_i2c_info }, 621 + { PCI_VDEVICE(INTEL, 0xe47a), (kernel_ulong_t)&ehl_i2c_info }, 622 + { PCI_VDEVICE(INTEL, 0xe47b), (kernel_ulong_t)&ehl_i2c_info }, 610 623 { } 611 624 }; 612 625 MODULE_DEVICE_TABLE(pci, intel_lpss_pci_ids);
+1 -1
drivers/mfd/intel-m10-bmc-pmci.c
··· 336 336 .n_yes_ranges = ARRAY_SIZE(m10bmc_pmci_regmap_range), 337 337 }; 338 338 339 - static struct regmap_config m10bmc_pmci_regmap_config = { 339 + static const struct regmap_config m10bmc_pmci_regmap_config = { 340 340 .reg_bits = 32, 341 341 .reg_stride = 4, 342 342 .val_bits = 32,
+1 -1
drivers/mfd/intel-m10-bmc-spi.c
··· 24 24 .n_yes_ranges = ARRAY_SIZE(m10bmc_regmap_range), 25 25 }; 26 26 27 - static struct regmap_config intel_m10bmc_regmap_config = { 27 + static const struct regmap_config intel_m10bmc_regmap_config = { 28 28 .reg_bits = 32, 29 29 .val_bits = 32, 30 30 .reg_stride = 4,
+7 -7
drivers/mfd/intel_soc_pmic_bxtwc.c
··· 137 137 REGMAP_IRQ_REG(BXTWC_CRIT_IRQ, 0, GENMASK(1, 0)), 138 138 }; 139 139 140 - static struct regmap_irq_chip bxtwc_regmap_irq_chip = { 140 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip = { 141 141 .name = "bxtwc_irq_chip", 142 142 .status_base = BXTWC_IRQLVL1, 143 143 .mask_base = BXTWC_MIRQLVL1, ··· 146 146 .num_regs = 1, 147 147 }; 148 148 149 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_pwrbtn = { 149 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_pwrbtn = { 150 150 .name = "bxtwc_irq_chip_pwrbtn", 151 151 .status_base = BXTWC_PWRBTNIRQ, 152 152 .mask_base = BXTWC_MPWRBTNIRQ, ··· 155 155 .num_regs = 1, 156 156 }; 157 157 158 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_tmu = { 158 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_tmu = { 159 159 .name = "bxtwc_irq_chip_tmu", 160 160 .status_base = BXTWC_TMUIRQ, 161 161 .mask_base = BXTWC_MTMUIRQ, ··· 164 164 .num_regs = 1, 165 165 }; 166 166 167 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_bcu = { 167 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_bcu = { 168 168 .name = "bxtwc_irq_chip_bcu", 169 169 .status_base = BXTWC_BCUIRQ, 170 170 .mask_base = BXTWC_MBCUIRQ, ··· 173 173 .num_regs = 1, 174 174 }; 175 175 176 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_adc = { 176 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_adc = { 177 177 .name = "bxtwc_irq_chip_adc", 178 178 .status_base = BXTWC_ADCIRQ, 179 179 .mask_base = BXTWC_MADCIRQ, ··· 182 182 .num_regs = 1, 183 183 }; 184 184 185 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_chgr = { 185 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_chgr = { 186 186 .name = "bxtwc_irq_chip_chgr", 187 187 .status_base = BXTWC_CHGR0IRQ, 188 188 .mask_base = BXTWC_MCHGR0IRQ, ··· 191 191 .num_regs = 2, 192 192 }; 193 193 194 - static struct regmap_irq_chip bxtwc_regmap_irq_chip_crit = { 194 + static const struct regmap_irq_chip bxtwc_regmap_irq_chip_crit = { 195 195 .name = "bxtwc_irq_chip_crit", 196 196 .status_base = BXTWC_CRITIRQ, 197 197 .mask_base = BXTWC_MCRITIRQ,
-1
drivers/mfd/intel_soc_pmic_chtwc.c
··· 178 178 .driver_data = (void *)(long)INTEL_CHT_WC_LENOVO_YT3_X90, 179 179 .matches = { 180 180 DMI_MATCH(DMI_SYS_VENDOR, "Intel Corporation"), 181 - DMI_MATCH(DMI_PRODUCT_NAME, "CHERRYVIEW D1 PLATFORM"), 182 181 DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), 183 182 }, 184 183 },
+1
drivers/mfd/max14577.c
··· 143 143 }, 144 144 {}, 145 145 }; 146 + MODULE_DEVICE_TABLE(of, max14577_dt_match); 146 147 147 148 static bool max14577_muic_volatile_reg(struct device *dev, unsigned int reg) 148 149 {
+2 -3
drivers/mfd/max77620.c
··· 400 400 static int max77620_initialise_fps(struct max77620_chip *chip) 401 401 { 402 402 struct device *dev = chip->dev; 403 - struct device_node *fps_np, *fps_child; 403 + struct device_node *fps_np; 404 404 u8 config; 405 405 int fps_id; 406 406 int ret; ··· 414 414 if (!fps_np) 415 415 goto skip_fps; 416 416 417 - for_each_child_of_node(fps_np, fps_child) { 417 + for_each_child_of_node_scoped(fps_np, fps_child) { 418 418 ret = max77620_config_fps(chip, fps_child); 419 419 if (ret < 0) { 420 - of_node_put(fps_child); 421 420 of_node_put(fps_np); 422 421 return ret; 423 422 }
+1 -1
drivers/mfd/mc13xxx-spi.c
··· 116 116 * single transfer. 117 117 */ 118 118 119 - static struct regmap_bus regmap_mc13xxx_bus = { 119 + static const struct regmap_bus regmap_mc13xxx_bus = { 120 120 .write = mc13xxx_spi_write, 121 121 .read = mc13xxx_spi_read, 122 122 };
+9 -14
drivers/mfd/mt6360-core.c
··· 5 5 * Author: Gene Chen <gene_chen@richtek.com> 6 6 */ 7 7 8 + #include <linux/cleanup.h> 8 9 #include <linux/crc8.h> 9 10 #include <linux/i2c.h> 10 11 #include <linux/init.h> ··· 405 404 u8 reg_addr = *(u8 *)(reg + 1); 406 405 struct i2c_client *i2c; 407 406 bool crc_needed = false; 408 - u8 *buf; 409 407 int buf_len = MT6360_ALLOC_READ_SIZE(val_size); 410 408 int read_size = val_size; 411 409 u8 crc; ··· 423 423 read_size += MT6360_CRC_CRC8_SIZE; 424 424 } 425 425 426 - buf = kzalloc(buf_len, GFP_KERNEL); 426 + u8 *buf __free(kfree) = kzalloc(buf_len, GFP_KERNEL); 427 427 if (!buf) 428 428 return -ENOMEM; 429 429 ··· 433 433 ret = i2c_smbus_read_i2c_block_data(i2c, reg_addr, read_size, 434 434 buf + MT6360_CRC_PREDATA_OFFSET); 435 435 if (ret < 0) 436 - goto out; 437 - else if (ret != read_size) { 438 - ret = -EIO; 439 - goto out; 440 - } 436 + return ret; 437 + else if (ret != read_size) 438 + return -EIO; 441 439 442 440 if (crc_needed) { 443 441 crc = crc8(ddata->crc8_tbl, buf, val_size + MT6360_CRC_PREDATA_OFFSET, 0); 444 - if (crc != buf[val_size + MT6360_CRC_PREDATA_OFFSET]) { 445 - ret = -EIO; 446 - goto out; 447 - } 442 + if (crc != buf[val_size + MT6360_CRC_PREDATA_OFFSET]) 443 + return -EIO; 448 444 } 449 445 450 446 memcpy(val, buf + MT6360_CRC_PREDATA_OFFSET, val_size); 451 - out: 452 - kfree(buf); 453 - return (ret < 0) ? ret : 0; 447 + 448 + return 0; 454 449 } 455 450 456 451 static int mt6360_regmap_write(void *context, const void *val, size_t val_size)
+1 -4
drivers/mfd/qcom-spmi-pmic.c
··· 84 84 static struct spmi_device *qcom_pmic_get_base_usid(struct spmi_device *sdev, struct qcom_spmi_dev *ctx) 85 85 { 86 86 struct device_node *spmi_bus; 87 - struct device_node *child; 88 87 int function_parent_usid, ret; 89 88 u32 pmic_addr; 90 89 ··· 107 108 */ 108 109 spmi_bus = of_get_parent(sdev->dev.of_node); 109 110 sdev = ERR_PTR(-ENODATA); 110 - for_each_child_of_node(spmi_bus, child) { 111 + for_each_child_of_node_scoped(spmi_bus, child) { 111 112 ret = of_property_read_u32_index(child, "reg", 0, &pmic_addr); 112 113 if (ret) { 113 - of_node_put(child); 114 114 sdev = ERR_PTR(ret); 115 115 break; 116 116 } ··· 123 125 */ 124 126 sdev = ERR_PTR(-EPROBE_DEFER); 125 127 } 126 - of_node_put(child); 127 128 break; 128 129 } 129 130 }
+6 -6
drivers/mfd/retu-mfd.c
··· 65 65 } 66 66 }; 67 67 68 - static struct regmap_irq retu_irqs[] = { 68 + static const struct regmap_irq retu_irqs[] = { 69 69 [RETU_INT_PWR] = { 70 70 .mask = 1 << RETU_INT_PWR, 71 71 } 72 72 }; 73 73 74 - static struct regmap_irq_chip retu_irq_chip = { 74 + static const struct regmap_irq_chip retu_irq_chip = { 75 75 .name = "RETU", 76 76 .irqs = retu_irqs, 77 77 .num_irqs = ARRAY_SIZE(retu_irqs), ··· 101 101 }, 102 102 }; 103 103 104 - static struct regmap_irq tahvo_irqs[] = { 104 + static const struct regmap_irq tahvo_irqs[] = { 105 105 [TAHVO_INT_VBUS] = { 106 106 .mask = 1 << TAHVO_INT_VBUS, 107 107 } 108 108 }; 109 109 110 - static struct regmap_irq_chip tahvo_irq_chip = { 110 + static const struct regmap_irq_chip tahvo_irq_chip = { 111 111 .name = "TAHVO", 112 112 .irqs = tahvo_irqs, 113 113 .num_irqs = ARRAY_SIZE(tahvo_irqs), ··· 120 120 static const struct retu_data { 121 121 char *chip_name; 122 122 char *companion_name; 123 - struct regmap_irq_chip *irq_chip; 123 + const struct regmap_irq_chip *irq_chip; 124 124 const struct mfd_cell *children; 125 125 int nchildren; 126 126 } retu_data[] = { ··· 216 216 return i2c_smbus_write_word_data(i2c, reg, val); 217 217 } 218 218 219 - static struct regmap_bus retu_bus = { 219 + static const struct regmap_bus retu_bus = { 220 220 .read = retu_regmap_read, 221 221 .write = retu_regmap_write, 222 222 .val_format_endian_default = REGMAP_ENDIAN_NATIVE,
+3 -3
drivers/mfd/rk8xx-core.c
··· 531 531 REGMAP_IRQ_REG_LINE(23, 8) 532 532 }; 533 533 534 - static struct regmap_irq_chip rk805_irq_chip = { 534 + static const struct regmap_irq_chip rk805_irq_chip = { 535 535 .name = "rk805", 536 536 .irqs = rk805_irqs, 537 537 .num_irqs = ARRAY_SIZE(rk805_irqs), ··· 542 542 .init_ack_masked = true, 543 543 }; 544 544 545 - static struct regmap_irq_chip rk806_irq_chip = { 545 + static const struct regmap_irq_chip rk806_irq_chip = { 546 546 .name = "rk806", 547 547 .irqs = rk806_irqs, 548 548 .num_irqs = ARRAY_SIZE(rk806_irqs), ··· 578 578 .init_ack_masked = true, 579 579 }; 580 580 581 - static struct regmap_irq_chip rk817_irq_chip = { 581 + static const struct regmap_irq_chip rk817_irq_chip = { 582 582 .name = "rk817", 583 583 .irqs = rk817_irqs, 584 584 .num_irqs = ARRAY_SIZE(rk817_irqs),
+25
drivers/mfd/rk8xx-i2c.c
··· 21 21 int variant; 22 22 }; 23 23 24 + static bool rk806_is_volatile_reg(struct device *dev, unsigned int reg) 25 + { 26 + switch (reg) { 27 + case RK806_POWER_EN0 ... RK806_POWER_EN5: 28 + case RK806_DVS_START_CTRL ... RK806_INT_MSK1: 29 + return true; 30 + } 31 + 32 + return false; 33 + } 34 + 24 35 static bool rk808_is_volatile_reg(struct device *dev, unsigned int reg) 25 36 { 26 37 /* ··· 132 121 .volatile_reg = rk808_is_volatile_reg, 133 122 }; 134 123 124 + static const struct regmap_config rk806_regmap_config = { 125 + .reg_bits = 8, 126 + .val_bits = 8, 127 + .max_register = RK806_BUCK_RSERVE_REG5, 128 + .cache_type = REGCACHE_MAPLE, 129 + .volatile_reg = rk806_is_volatile_reg, 130 + }; 131 + 135 132 static const struct regmap_config rk808_regmap_config = { 136 133 .reg_bits = 8, 137 134 .val_bits = 8, ··· 167 148 static const struct rk8xx_i2c_platform_data rk805_data = { 168 149 .regmap_cfg = &rk805_regmap_config, 169 150 .variant = RK805_ID, 151 + }; 152 + 153 + static const struct rk8xx_i2c_platform_data rk806_data = { 154 + .regmap_cfg = &rk806_regmap_config, 155 + .variant = RK806_ID, 170 156 }; 171 157 172 158 static const struct rk8xx_i2c_platform_data rk808_data = { ··· 225 201 226 202 static const struct of_device_id rk8xx_i2c_of_match[] = { 227 203 { .compatible = "rockchip,rk805", .data = &rk805_data }, 204 + { .compatible = "rockchip,rk806", .data = &rk806_data }, 228 205 { .compatible = "rockchip,rk808", .data = &rk808_data }, 229 206 { .compatible = "rockchip,rk809", .data = &rk809_data }, 230 207 { .compatible = "rockchip,rk816", .data = &rk816_data },
+4 -4
drivers/mfd/rohm-bd71828.c
··· 316 316 REGMAP_IRQ_REG(BD71815_INT_RTC2, 11, BD71815_INT_RTC2_MASK), 317 317 }; 318 318 319 - static struct regmap_irq bd71828_irqs[] = { 319 + static const struct regmap_irq bd71828_irqs[] = { 320 320 REGMAP_IRQ_REG(BD71828_INT_BUCK1_OCP, 0, BD71828_INT_BUCK1_OCP_MASK), 321 321 REGMAP_IRQ_REG(BD71828_INT_BUCK2_OCP, 0, BD71828_INT_BUCK2_OCP_MASK), 322 322 REGMAP_IRQ_REG(BD71828_INT_BUCK3_OCP, 0, BD71828_INT_BUCK3_OCP_MASK), ··· 407 407 REGMAP_IRQ_REG(BD71828_INT_RTC2, 11, BD71828_INT_RTC2_MASK), 408 408 }; 409 409 410 - static struct regmap_irq_chip bd71828_irq_chip = { 410 + static const struct regmap_irq_chip bd71828_irq_chip = { 411 411 .name = "bd71828_irq", 412 412 .main_status = BD71828_REG_INT_MAIN, 413 413 .irqs = &bd71828_irqs[0], ··· 423 423 .irq_reg_stride = 1, 424 424 }; 425 425 426 - static struct regmap_irq_chip bd71815_irq_chip = { 426 + static const struct regmap_irq_chip bd71815_irq_chip = { 427 427 .name = "bd71815_irq", 428 428 .main_status = BD71815_REG_INT_STAT, 429 429 .irqs = &bd71815_irqs[0], ··· 491 491 int ret; 492 492 struct regmap *regmap; 493 493 const struct regmap_config *regmap_config; 494 - struct regmap_irq_chip *irqchip; 494 + const struct regmap_irq_chip *irqchip; 495 495 unsigned int chip_type; 496 496 struct mfd_cell *mfd; 497 497 int cells;
+1 -1
drivers/mfd/rohm-bd718x7.c
··· 60 60 REGMAP_IRQ_REG(BD718XX_INT_STBY_REQ, 0, BD718XX_INT_STBY_REQ_MASK), 61 61 }; 62 62 63 - static struct regmap_irq_chip bd718xx_irq_chip = { 63 + static const struct regmap_irq_chip bd718xx_irq_chip = { 64 64 .name = "bd718xx-irq", 65 65 .irqs = bd718xx_irqs, 66 66 .num_irqs = ARRAY_SIZE(bd718xx_irqs),
+3 -3
drivers/mfd/rohm-bd9576.c
··· 57 57 .n_yes_ranges = ARRAY_SIZE(volatile_ranges), 58 58 }; 59 59 60 - static struct regmap_config bd957x_regmap = { 60 + static const struct regmap_config bd957x_regmap = { 61 61 .reg_bits = 8, 62 62 .val_bits = 8, 63 63 .volatile_table = &volatile_regs, ··· 65 65 .cache_type = REGCACHE_MAPLE, 66 66 }; 67 67 68 - static struct regmap_irq bd9576_irqs[] = { 68 + static const struct regmap_irq bd9576_irqs[] = { 69 69 REGMAP_IRQ_REG(BD9576_INT_THERM, 0, BD957X_MASK_INT_MAIN_THERM), 70 70 REGMAP_IRQ_REG(BD9576_INT_OVP, 0, BD957X_MASK_INT_MAIN_OVP), 71 71 REGMAP_IRQ_REG(BD9576_INT_SCP, 0, BD957X_MASK_INT_MAIN_SCP), ··· 76 76 REGMAP_IRQ_REG(BD9576_INT_SYS, 0, BD957X_MASK_INT_MAIN_SYS), 77 77 }; 78 78 79 - static struct regmap_irq_chip bd9576_irq_chip = { 79 + static const struct regmap_irq_chip bd9576_irq_chip = { 80 80 .name = "bd9576_irq", 81 81 .irqs = &bd9576_irqs[0], 82 82 .num_irqs = ARRAY_SIZE(bd9576_irqs),
+1 -1
drivers/mfd/sprd-sc27xx-spi.c
··· 135 135 return 0; 136 136 } 137 137 138 - static struct regmap_bus sprd_pmic_regmap = { 138 + static const struct regmap_bus sprd_pmic_regmap = { 139 139 .write = sprd_pmic_spi_write, 140 140 .read = sprd_pmic_spi_read, 141 141 .reg_format_endian_default = REGMAP_ENDIAN_NATIVE,
+7 -13
drivers/mfd/syscon.c
··· 8 8 * Author: Dong Aisheng <dong.aisheng@linaro.org> 9 9 */ 10 10 11 + #include <linux/cleanup.h> 11 12 #include <linux/clk.h> 12 13 #include <linux/err.h> 13 14 #include <linux/hwspinlock.h> ··· 46 45 static struct syscon *of_syscon_register(struct device_node *np, bool check_res) 47 46 { 48 47 struct clk *clk; 49 - struct syscon *syscon; 50 48 struct regmap *regmap; 51 49 void __iomem *base; 52 50 u32 reg_io_width; ··· 54 54 struct resource res; 55 55 struct reset_control *reset; 56 56 57 - syscon = kzalloc(sizeof(*syscon), GFP_KERNEL); 57 + struct syscon *syscon __free(kfree) = kzalloc(sizeof(*syscon), GFP_KERNEL); 58 58 if (!syscon) 59 59 return ERR_PTR(-ENOMEM); 60 60 61 - if (of_address_to_resource(np, 0, &res)) { 62 - ret = -ENOMEM; 63 - goto err_map; 64 - } 61 + if (of_address_to_resource(np, 0, &res)) 62 + return ERR_PTR(-ENOMEM); 65 63 66 64 base = of_iomap(np, 0); 67 - if (!base) { 68 - ret = -ENOMEM; 69 - goto err_map; 70 - } 65 + if (!base) 66 + return ERR_PTR(-ENOMEM); 71 67 72 68 /* Parse the device's DT node for an endianness specification */ 73 69 if (of_property_read_bool(np, "big-endian")) ··· 148 152 list_add_tail(&syscon->list, &syscon_list); 149 153 spin_unlock(&syscon_list_slock); 150 154 151 - return syscon; 155 + return_ptr(syscon); 152 156 153 157 err_reset: 154 158 reset_control_put(reset); ··· 159 163 regmap_exit(regmap); 160 164 err_regmap: 161 165 iounmap(base); 162 - err_map: 163 - kfree(syscon); 164 166 return ERR_PTR(ret); 165 167 } 166 168
-2
drivers/mfd/tc3589x.c
··· 312 312 } 313 313 314 314 static const struct of_device_id tc3589x_match[] = { 315 - /* Legacy compatible string */ 316 - { .compatible = "tc3589x", .data = (void *) TC3589X_UNKNOWN }, 317 315 { .compatible = "toshiba,tc35890", .data = (void *) TC3589X_TC35890 }, 318 316 { .compatible = "toshiba,tc35892", .data = (void *) TC3589X_TC35892 }, 319 317 { .compatible = "toshiba,tc35893", .data = (void *) TC3589X_TC35893 },
+1 -1
drivers/mfd/tps6105x.c
··· 23 23 #include <linux/mfd/core.h> 24 24 #include <linux/mfd/tps6105x.h> 25 25 26 - static struct regmap_config tps6105x_regmap_config = { 26 + static const struct regmap_config tps6105x_regmap_config = { 27 27 .reg_bits = 8, 28 28 .val_bits = 8, 29 29 .max_register = TPS6105X_REG_3,
+1 -1
drivers/mfd/tps65086.c
··· 45 45 REGMAP_IRQ_REG(TPS65086_IRQ_FAULT, 0, TPS65086_IRQ_FAULT_MASK), 46 46 }; 47 47 48 - static struct regmap_irq_chip tps65086_irq_chip = { 48 + static const struct regmap_irq_chip tps65086_irq_chip = { 49 49 .name = "tps65086", 50 50 .status_base = TPS65086_IRQ, 51 51 .mask_base = TPS65086_IRQ_MASK,
+1 -1
drivers/mfd/tps65090.c
··· 120 120 }, 121 121 }; 122 122 123 - static struct regmap_irq_chip tps65090_irq_chip = { 123 + static const struct regmap_irq_chip tps65090_irq_chip = { 124 124 .name = "tps65090", 125 125 .irqs = tps65090_irqs, 126 126 .num_irqs = ARRAY_SIZE(tps65090_irqs),
+1 -1
drivers/mfd/tps65218.c
··· 186 186 }, 187 187 }; 188 188 189 - static struct regmap_irq_chip tps65218_irq_chip = { 189 + static const struct regmap_irq_chip tps65218_irq_chip = { 190 190 .name = "tps65218", 191 191 .irqs = tps65218_irqs, 192 192 .num_irqs = ARRAY_SIZE(tps65218_irqs),
+2 -2
drivers/mfd/tps65219.c
··· 159 159 #define TPS65219_REGMAP_IRQ_REG(int_name, register_position) \ 160 160 REGMAP_IRQ_REG(int_name, register_position, int_name##_MASK) 161 161 162 - static struct regmap_irq tps65219_irqs[] = { 162 + static const struct regmap_irq tps65219_irqs[] = { 163 163 TPS65219_REGMAP_IRQ_REG(TPS65219_INT_LDO3_SCG, TPS65219_REG_INT_LDO_3_4_POS), 164 164 TPS65219_REGMAP_IRQ_REG(TPS65219_INT_LDO3_OC, TPS65219_REG_INT_LDO_3_4_POS), 165 165 TPS65219_REGMAP_IRQ_REG(TPS65219_INT_LDO3_UV, TPS65219_REG_INT_LDO_3_4_POS), ··· 211 211 TPS65219_REGMAP_IRQ_REG(TPS65219_INT_PB_RISING_EDGE_DETECT, TPS65219_REG_INT_PB_POS), 212 212 }; 213 213 214 - static struct regmap_irq_chip tps65219_irq_chip = { 214 + static const struct regmap_irq_chip tps65219_irq_chip = { 215 215 .name = "tps65219_irq", 216 216 .main_status = TPS65219_REG_INT_SOURCE, 217 217 .num_main_regs = 1,
+3 -3
drivers/mfd/tps65910.c
··· 197 197 }, 198 198 }; 199 199 200 - static struct regmap_irq_chip tps65911_irq_chip = { 200 + static const struct regmap_irq_chip tps65911_irq_chip = { 201 201 .name = "tps65910", 202 202 .irqs = tps65911_irqs, 203 203 .num_irqs = ARRAY_SIZE(tps65911_irqs), ··· 208 208 .ack_base = TPS65910_INT_STS, 209 209 }; 210 210 211 - static struct regmap_irq_chip tps65910_irq_chip = { 211 + static const struct regmap_irq_chip tps65910_irq_chip = { 212 212 .name = "tps65910", 213 213 .irqs = tps65910_irqs, 214 214 .num_irqs = ARRAY_SIZE(tps65910_irqs), ··· 223 223 struct tps65910_platform_data *pdata) 224 224 { 225 225 int ret; 226 - static struct regmap_irq_chip *tps6591x_irqs_chip; 226 + static const struct regmap_irq_chip *tps6591x_irqs_chip; 227 227 228 228 if (!irq) { 229 229 dev_warn(tps65910->dev, "No interrupt support, no core IRQ\n");
+1 -1
drivers/mfd/tps65912-core.c
··· 57 57 REGMAP_IRQ_REG(TPS65912_IRQ_PGOOD_LDO10, 3, TPS65912_INT_STS4_PGOOD_LDO10), 58 58 }; 59 59 60 - static struct regmap_irq_chip tps65912_irq_chip = { 60 + static const struct regmap_irq_chip tps65912_irq_chip = { 61 61 .name = "tps65912", 62 62 .irqs = tps65912_irqs, 63 63 .num_irqs = ARRAY_SIZE(tps65912_irqs),
+1 -1
drivers/mfd/twl6040.c
··· 620 620 { .reg_offset = 0, .mask = TWL6040_READYINT, }, 621 621 }; 622 622 623 - static struct regmap_irq_chip twl6040_irq_chip = { 623 + static const struct regmap_irq_chip twl6040_irq_chip = { 624 624 .name = "twl6040", 625 625 .irqs = twl6040_irqs, 626 626 .num_irqs = ARRAY_SIZE(twl6040_irqs),
+1 -1
drivers/mfd/wcd934x.c
··· 109 109 }, 110 110 }; 111 111 112 - static struct regmap_config wcd934x_regmap_config = { 112 + static const struct regmap_config wcd934x_regmap_config = { 113 113 .reg_bits = 16, 114 114 .val_bits = 8, 115 115 .cache_type = REGCACHE_MAPLE,
+1 -1
include/linux/mfd/88pm80x.h
··· 294 294 struct i2c_client *client; 295 295 struct i2c_client *companion; 296 296 struct regmap *regmap; 297 - struct regmap_irq_chip *regmap_irq_chip; 297 + const struct regmap_irq_chip *regmap_irq_chip; 298 298 struct regmap_irq_chip_data *irq_data; 299 299 int type; 300 300 int irq;
-29
include/linux/mfd/ds1wm.h
··· 1 - /* SPDX-License-Identifier: GPL-2.0 */ 2 - /* MFD cell driver data for the DS1WM driver 3 - * 4 - * to be defined in the MFD device that is 5 - * using this driver for one of his sub devices 6 - */ 7 - 8 - struct ds1wm_driver_data { 9 - int active_high; 10 - int clock_rate; 11 - /* in milliseconds, the amount of time to 12 - * sleep following a reset pulse. Zero 13 - * should work if your bus devices recover 14 - * time respects the 1-wire spec since the 15 - * ds1wm implements the precise timings of 16 - * a reset pulse/presence detect sequence. 17 - */ 18 - unsigned int reset_recover_delay; 19 - 20 - /* Say 1 here for big endian Hardware 21 - * (only relevant with bus-shift > 0 22 - */ 23 - bool is_hw_big_endian; 24 - 25 - /* left shift of register number to get register address offsett. 26 - * Only 0,1,2 allowed for 8,16 or 32 bit bus width respectively 27 - */ 28 - unsigned int bus_shift; 29 - };