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

Pull MFD updates from Lee Jones:
 "New Support & Features:
   - Add comprehensive support for the ROHM BD72720 PMIC, including core
     MFD, regulator, GPIO, clock gate, RTC, and power-supply drivers
   - Add support for the Rockchip RK801 PMIC, including core MFD and
     regulator drivers
   - Add support for the ROHM BD73900 PMIC by leveraging existing common
     drivers
   - Wire up RTC, hwmon, and input sub-devices for the Apple SMC
     (macsmc) driver
   - Add support for the Delta Networks TN48M switch CPLD via the
     simple-mfd-i2c driver
   - Add support for the TS133 variant to the QNAP MCU driver
   - Provide support for the sama7d65 XLCD controller in the Atmel HLCDC
     driver
   - Add backlight sub-device support to the Congatec Board Controller
     (cgbc)
   - Add Intel Nova Lake-S (NVL-S) PCI IDs to the Intel LPSS driver

  Improvements & Fixes:
   - Implement a "wrapper regmap" for the ROHM BD72720 to handle dual
     I2C slave addresses (0x4b and 0x4c) transparently for child devices
   - Introduce mutex locking around 'mfd_of_node_list' in the MFD core
     to ensure safe concurrent access
   - Fix a potential regulator resource leak in the Arizona core driver
     during boot sequence failures
   - Resolve child device duplication issues on driver rebind for
     Qualcomm PM8xxx and OMAP USB host drivers by using
     of_platform_depopulate()
   - Fix IRQ domain name duplication for the Samsung S2MPG10 by adding a
     unique domain suffix
   - Implement LOCK register handling for the TI TPS65214 variant to
     unlock registers at probe time
   - Fully convert the Loongson-2K BMC driver to use managed resources
     (pcim) and the standard PCI resource API
   - Ensure the Apple SMC mutex is correctly initialized during probe to
     prevent NULL pointer dereferences
   - Expand the ROHM BD71828 power-supply driver to support 9-bit
     register addresses
   - Simplify the Samsung S5M RTC driver by querying platform device IRQ
     resources directly
   - Revert an incorrect read-to-write mask change in the DA9052 SPI
     driver to restore default OTP behavior
   - Fix kernel-doc warnings in the TI TPS6105x driver

- Cleanups & Refactoring
   - Simplify the MFD core by utilizing the scoped
     for_each_child_of_node_scoped() macro and streamlining device_node
     storage
   - Rename ROHM BD71828 IC-specific entities to use consistent prefixes
     for better extensibility
   - Refactor ROHM BD71828 regmap definitions using the
     regmap_reg_range() macro
   - Update the ROHM BD71828 driver to use standard C-style comment
     headers
   - Remove the now unused 'irq_data' field from the Samsung SEC core
     structure
   - Drop unnecessary use of irqd_get_trigger_type() in the Maxim
     MAX77759 driver
   - Default MFD_SPACEMIT_P1 to 'm' if ARCH_SPACEMIT is selected
   - Add missing charger-related registers to the ROHM BD71828 core
     header and Type-C CC registers to the AXP717

  Device Tree Binding Updates:
   - Add new bindings for the ROHM BD72720 PMIC, Rockchip RK801 PMIC,
     Bitmain BM1880 System Controller, and NXP LPC32xx System Control
     Block
   - Clarify trickle-charge terminology and add properties for voltage
     drop (VDR) correction and upper charge limits to the generic
     battery binding
   - Document GPR syscon for NXP S32 SoCs and the smp-memram subnode for
     Aspeed SCU
   - Document numerous new Qualcomm SPMI PMIC compatibles (pmcx0102,
     pmh0101, pmk8850, etc)
   - Add compatibles for the sama7d65 XLCD (Atmel), LAN9691 Flexcom
     (Microchip), and various MediaTek SCPSYS and regulator components
   - Fix a dead link to the audio codec binding in the DA9055
     documentation"

* tag 'mfd-next-6.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (41 commits)
  dt-bindings: mfd: da9055: Fix dead link to codec binding
  mfd: cgbc: Add support for backlight
  dt-bindings: mfd: qcom,spmi-pmic: Document PMICs present on Glymur and Kaanapali
  dt-bindings: mfd: Document smp-memram subnode for aspeed,ast2x00-scu
  mfd: intel-lpss: Add Intel Nova Lake-S PCI IDs
  mfd: ls2kbmc: Use PCI API instead of direct accesses
  mfd: ls2kbmc: Fully convert to use managed resources
  dt-bindings: mfd: mediatek: mt6397: Add missing MT6331 regulator compat
  dt-bindings: mfd: mediatek,mt8195-scpsys: Add mediatek,mt6795-scpsys
  dt-bindings: mfd: atmel,sama5d2-flexcom: Add microchip,lan9691-flexcom
  mfd: omap-usb-host: Fix OF populate on driver rebind
  mfd: qcom-pm8xxx: Fix OF populate on driver rebind
  dt-bindings: mfd: syscon: Allow syscon compatible for mediatek,mt7981-topmisc
  mfd: qnap-mcu: Add driver data for TS133 variant
  dt-bindings: mfd: qnap,ts433-mcu: Add qnap,ts133-mcu compatible
  mfd: sec: Fix IRQ domain names duplication
  mfd: simple-mfd-i2c: Add Delta TN48M CPLD support
  mfd: macsmc: Initialize mutex
  dt-bindings: mfd: nxp: Add NXP LPC32xx System Control Block
  mfd: Kconfig: Default MFD_SPACEMIT_P1 to 'm' if ARCH_SPACEMIT
  ...
This commit is contained in:
Linus Torvalds
2026-02-16 11:05:44 -08:00
37 changed files with 955 additions and 79 deletions

View File

@@ -174,6 +174,9 @@ enum axp20x_variants {
#define AXP717_ADC_DATA_SEL 0xcd
#define AXP717_ADC_DATA_H 0xce
#define AXP717_ADC_DATA_L 0xcf
#define AXP717_TYPEC_CC_AA_EN 0xe1
#define AXP717_TYPEC_CC_MODE_CONTROL 0xe3
#define AXP717_TYPEC_CC_STATUS 0xe7
#define AXP806_STARTUP_SRC 0x00
#define AXP806_CHIP_ID 0x03

View File

@@ -340,6 +340,123 @@ enum rk818_reg {
#define RK818_USB_ILMIN_2000MA 0x7
#define RK818_USB_CHG_SD_VSEL_MASK 0x70
/* RK801 */
enum rk801_reg {
RK801_ID_DCDC1,
RK801_ID_DCDC2,
RK801_ID_DCDC4,
RK801_ID_DCDC3,
RK801_ID_LDO1,
RK801_ID_LDO2,
RK801_ID_SWITCH,
RK801_ID_MAX,
};
#define RK801_SLP_REG_OFFSET 5
#define RK801_NUM_REGULATORS 7
#define RK801_HW_SYNC_US 32
/* RK801 Register Definitions */
#define RK801_ID_MSB 0x00
#define RK801_ID_LSB 0x01
#define RK801_OTP_VER_REG 0x02
#define RK801_POWER_EN0_REG 0x03
#define RK801_POWER_EN1_REG 0x04
#define RK801_POWER_SLP_EN_REG 0x05
#define RK801_POWER_FPWM_EN_REG 0x06
#define RK801_SLP_LP_CONFIG_REG 0x07
#define RK801_BUCK_CONFIG_REG 0x08
#define RK801_BUCK1_ON_VSEL_REG 0x09
#define RK801_BUCK2_ON_VSEL_REG 0x0a
#define RK801_BUCK4_ON_VSEL_REG 0x0b
#define RK801_LDO1_ON_VSEL_REG 0x0c
#define RK801_LDO2_ON_VSEL_REG 0x0d
#define RK801_BUCK1_SLP_VSEL_REG 0x0e
#define RK801_BUCK2_SLP_VSEL_REG 0x0f
#define RK801_BUCK4_SLP_VSEL_REG 0x10
#define RK801_LDO1_SLP_VSEL_REG 0x11
#define RK801_LDO2_SLP_VSEL_REG 0x12
#define RK801_LDO_SW_IMAX_REG 0x13
#define RK801_SYS_STS_REG 0x14
#define RK801_SYS_CFG0_REG 0x15
#define RK801_SYS_CFG1_REG 0x16
#define RK801_SYS_CFG2_REG 0x17
#define RK801_SYS_CFG3_REG 0x18
#define RK801_SYS_CFG4_REG 0x19
#define RK801_SLEEP_CFG_REG 0x1a
#define RK801_ON_SOURCE_REG 0x1b
#define RK801_OFF_SOURCE_REG 0x1c
#define RK801_PWRON_KEY_REG 0x1d
#define RK801_INT_STS0_REG 0x1e
#define RK801_INT_MASK0_REG 0x1f
#define RK801_INT_CONFIG_REG 0x20
#define RK801_CON_BACK1_REG 0x21
#define RK801_CON_BACK2_REG 0x22
#define RK801_DATA_CON0_REG 0x23
#define RK801_DATA_CON1_REG 0x24
#define RK801_DATA_CON2_REG 0x25
#define RK801_DATA_CON3_REG 0x26
#define RK801_POWER_EXIT_SLP_SEQ0_REG 0x27
#define RK801_POWER_EXIT_SLP_SEQ1_REG 0x28
#define RK801_POWER_EXIT_SLP_SEQ2_REG 0x29
#define RK801_POWER_EXIT_SLP_SEQ3_REG 0x2a
#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ0_REG 0x2b
#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ1_REG 0x2c
#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ2_REG 0x2d
#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ3_REG 0x2e
#define RK801_BUCK_DEBUG1_REG 0x2f
#define RK801_BUCK_DEBUG2_REG 0x30
#define RK801_BUCK_DEBUG3_REG 0x31
#define RK801_BUCK_DEBUG4_REG 0x32
#define RK801_BUCK_DEBUG5_REG 0x33
#define RK801_BUCK_DEBUG7_REG 0x34
#define RK801_OTP_EN_CON_REG 0x35
#define RK801_TEST_CON_REG 0x36
#define RK801_EFUSE_CONTROL_REG 0x37
#define RK801_SYS_CFG3_OTP_REG 0x38
/* RK801 IRQ Definitions */
#define RK801_IRQ_PWRON_FALL 0
#define RK801_IRQ_PWRON_RISE 1
#define RK801_IRQ_PWRON 2
#define RK801_IRQ_PWRON_LP 3
#define RK801_IRQ_HOTDIE 4
#define RK801_IRQ_VDC_RISE 5
#define RK801_IRQ_VDC_FALL 6
#define RK801_IRQ_PWRON_FALL_MSK BIT(0)
#define RK801_IRQ_PWRON_RISE_MSK BIT(1)
#define RK801_IRQ_PWRON_MSK BIT(2)
#define RK801_IRQ_PWRON_LP_MSK BIT(3)
#define RK801_IRQ_HOTDIE_MSK BIT(4)
#define RK801_IRQ_VDC_RISE_MSK BIT(5)
#define RK801_IRQ_VDC_FALL_MSK BIT(6)
/* RK801_SLP_LP_CONFIG_REG */
#define RK801_BUCK_SLP_LP_EN BIT(3)
#define RK801_PLDO_SLP_LP_EN BIT(1)
#define RK801_SLP_LP_MASK (RK801_PLDO_SLP_LP_EN | RK801_BUCK_SLP_LP_EN)
/* RK801_SLEEP_CFG_REG */
#define RK801_SLEEP_FUN_MSK 0x3
#define RK801_NONE_FUN 0x0
#define RK801_SLEEP_FUN 0x1
#define RK801_SHUTDOWN_FUN 0x2
#define RK801_RESET_FUN 0x3
/* RK801_SYS_CFG2_REG */
#define RK801_SLEEP_POL_MSK BIT(1)
#define RK801_SLEEP_ACT_H BIT(1)
#define RK801_SLEEP_ACT_L 0
#define RK801_RST_MSK (0x3 << 4)
#define RK801_RST_RESTART_PMU (0x0 << 4)
#define RK801_RST_RESTART_REG (0x1 << 4)
#define RK801_RST_RESTART_REG_RESETB (0x2 << 4)
/* RK801_INT_CONFIG_REG */
#define RK801_INT_POL_MSK BIT(1)
#define RK801_INT_ACT_H BIT(1)
#define RK801_INT_ACT_L 0
#define RK801_FPWM_MODE 1
#define RK801_AUTO_PWM_MODE 0
#define RK801_PLDO_HRDEC_EN BIT(6)
/* RK805 */
enum rk805_reg {
RK805_ID_DCDC1,
@@ -1332,6 +1449,7 @@ enum {
};
enum {
RK801_ID = 0x8010,
RK805_ID = 0x8050,
RK806_ID = 0x8060,
RK808_ID = 0x0000,

View File

@@ -249,6 +249,8 @@ enum {
#define BD71828_REG_BATCAP_MON_LIMIT_U 0xcc
#define BD71828_REG_CONF 0x64
#define BD71828_REG_ILIM_STAT 0x6d
#define BD71828_REG_DCIN_SET 0x70
#define BD71828_REG_DCIN_CLPS 0x71
#define BD71828_REG_MEAS_CLEAR 0xaf

View File

@@ -53,7 +53,7 @@
/**
* enum tps6105x_mode - desired mode for the TPS6105x
* @TPS6105X_MODE_SHUTDOWN: this instance is inactive, not used for anything
* @TPS61905X_MODE_TORCH: this instance is used as a LED, usually a while
* @TPS6105X_MODE_TORCH: this instance is used as a LED, usually a while
* LED, for example as backlight or flashlight. If this is set, the
* TPS6105X will register to the LED framework
* @TPS6105X_MODE_TORCH_FLASH: this instance is used as a flashgun, usually
@@ -82,7 +82,8 @@ struct tps6105x_platform_data {
/**
* struct tps6105x - state holder for the TPS6105x drivers
* @i2c_client: corresponding I2C client
* @pdata: associated platform data
* @client: corresponding I2C client
* @regulator: regulator device if used in voltage mode
* @regmap: used for i2c communcation on accessing registers
*/

View File

@@ -149,6 +149,8 @@ enum pmic_id {
#define TPS65215_ENABLE_LDO2_EN_MASK BIT(5)
#define TPS65214_ENABLE_LDO1_EN_MASK BIT(5)
#define TPS65219_ENABLE_LDO4_EN_MASK BIT(6)
/* Register Unlock */
#define TPS65214_LOCK_ACCESS_CMD 0x5a
/* power ON-OFF sequence slot */
#define TPS65219_BUCKS_LDOS_SEQUENCE_OFF_SLOT_MASK GENMASK(3, 0)
#define TPS65219_BUCKS_LDOS_SEQUENCE_ON_SLOT_MASK GENMASK(7, 4)