History

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 ...

Linus Torvalds committed 9 months ago

Commit 4668c482 parents 46a1daa 845776137 files · +955 −79Browse files

Showing the changes to include/linux/mfd (5 of 37 files). Show all

Unified · Split

5 files
  1. include/linux/mfd/axp20x.h +3 −0
  2. include/linux/mfd/rk808.h +118 −0
  3. include/linux/mfd/rohm-bd71828.h +2 −0
  4. include/linux/mfd/tps6105x.h +3 −2
  5. include/linux/mfd/tps65219.h +2 −0
include/linux/mfd/axp20x.h+3−0
@@ -174,6 +174,9 @@ enum axp20x_variants { · 173 unmodified lines
174174 #define AXP717_ADC_DATA_SEL 0xcd
175175 #define AXP717_ADC_DATA_H 0xce
176176 #define AXP717_ADC_DATA_L 0xcf
177+#define AXP717_TYPEC_CC_AA_EN 0xe1
178+#define AXP717_TYPEC_CC_MODE_CONTROL 0xe3
179+#define AXP717_TYPEC_CC_STATUS 0xe7
177180
178181 #define AXP806_STARTUP_SRC 0x00
179182 #define AXP806_CHIP_ID 0x03
include/linux/mfd/rk808.h+118−0
@@ -340,6 +340,123 @@ enum rk818_reg { · 339 unmodified lines
340340 #define RK818_USB_ILMIN_2000MA 0x7
341341 #define RK818_USB_CHG_SD_VSEL_MASK 0x70
342342
343+/* RK801 */
344+enum rk801_reg {
345+ RK801_ID_DCDC1,
346+ RK801_ID_DCDC2,
347+ RK801_ID_DCDC4,
348+ RK801_ID_DCDC3,
349+ RK801_ID_LDO1,
350+ RK801_ID_LDO2,
351+ RK801_ID_SWITCH,
352+ RK801_ID_MAX,
353+};
354+
355+#define RK801_SLP_REG_OFFSET 5
356+#define RK801_NUM_REGULATORS 7
357+
358+#define RK801_HW_SYNC_US 32
359+
360+/* RK801 Register Definitions */
361+#define RK801_ID_MSB 0x00
362+#define RK801_ID_LSB 0x01
363+#define RK801_OTP_VER_REG 0x02
364+#define RK801_POWER_EN0_REG 0x03
365+#define RK801_POWER_EN1_REG 0x04
366+#define RK801_POWER_SLP_EN_REG 0x05
367+#define RK801_POWER_FPWM_EN_REG 0x06
368+#define RK801_SLP_LP_CONFIG_REG 0x07
369+#define RK801_BUCK_CONFIG_REG 0x08
370+#define RK801_BUCK1_ON_VSEL_REG 0x09
371+#define RK801_BUCK2_ON_VSEL_REG 0x0a
372+#define RK801_BUCK4_ON_VSEL_REG 0x0b
373+#define RK801_LDO1_ON_VSEL_REG 0x0c
374+#define RK801_LDO2_ON_VSEL_REG 0x0d
375+#define RK801_BUCK1_SLP_VSEL_REG 0x0e
376+#define RK801_BUCK2_SLP_VSEL_REG 0x0f
377+#define RK801_BUCK4_SLP_VSEL_REG 0x10
378+#define RK801_LDO1_SLP_VSEL_REG 0x11
379+#define RK801_LDO2_SLP_VSEL_REG 0x12
380+#define RK801_LDO_SW_IMAX_REG 0x13
381+#define RK801_SYS_STS_REG 0x14
382+#define RK801_SYS_CFG0_REG 0x15
383+#define RK801_SYS_CFG1_REG 0x16
384+#define RK801_SYS_CFG2_REG 0x17
385+#define RK801_SYS_CFG3_REG 0x18
386+#define RK801_SYS_CFG4_REG 0x19
387+#define RK801_SLEEP_CFG_REG 0x1a
388+#define RK801_ON_SOURCE_REG 0x1b
389+#define RK801_OFF_SOURCE_REG 0x1c
390+#define RK801_PWRON_KEY_REG 0x1d
391+#define RK801_INT_STS0_REG 0x1e
392+#define RK801_INT_MASK0_REG 0x1f
393+#define RK801_INT_CONFIG_REG 0x20
394+#define RK801_CON_BACK1_REG 0x21
395+#define RK801_CON_BACK2_REG 0x22
396+#define RK801_DATA_CON0_REG 0x23
397+#define RK801_DATA_CON1_REG 0x24
398+#define RK801_DATA_CON2_REG 0x25
399+#define RK801_DATA_CON3_REG 0x26
400+#define RK801_POWER_EXIT_SLP_SEQ0_REG 0x27
401+#define RK801_POWER_EXIT_SLP_SEQ1_REG 0x28
402+#define RK801_POWER_EXIT_SLP_SEQ2_REG 0x29
403+#define RK801_POWER_EXIT_SLP_SEQ3_REG 0x2a
404+#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ0_REG 0x2b
405+#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ1_REG 0x2c
406+#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ2_REG 0x2d
407+#define RK801_POWER_ENTER_SLP_OR_SHTD_SEQ3_REG 0x2e
408+#define RK801_BUCK_DEBUG1_REG 0x2f
409+#define RK801_BUCK_DEBUG2_REG 0x30
410+#define RK801_BUCK_DEBUG3_REG 0x31
411+#define RK801_BUCK_DEBUG4_REG 0x32
412+#define RK801_BUCK_DEBUG5_REG 0x33
413+#define RK801_BUCK_DEBUG7_REG 0x34
414+#define RK801_OTP_EN_CON_REG 0x35
415+#define RK801_TEST_CON_REG 0x36
416+#define RK801_EFUSE_CONTROL_REG 0x37
417+#define RK801_SYS_CFG3_OTP_REG 0x38
418+
419+/* RK801 IRQ Definitions */
420+#define RK801_IRQ_PWRON_FALL 0
421+#define RK801_IRQ_PWRON_RISE 1
422+#define RK801_IRQ_PWRON 2
423+#define RK801_IRQ_PWRON_LP 3
424+#define RK801_IRQ_HOTDIE 4
425+#define RK801_IRQ_VDC_RISE 5
426+#define RK801_IRQ_VDC_FALL 6
427+#define RK801_IRQ_PWRON_FALL_MSK BIT(0)
428+#define RK801_IRQ_PWRON_RISE_MSK BIT(1)
429+#define RK801_IRQ_PWRON_MSK BIT(2)
430+#define RK801_IRQ_PWRON_LP_MSK BIT(3)
431+#define RK801_IRQ_HOTDIE_MSK BIT(4)
432+#define RK801_IRQ_VDC_RISE_MSK BIT(5)
433+#define RK801_IRQ_VDC_FALL_MSK BIT(6)
434+/* RK801_SLP_LP_CONFIG_REG */
435+#define RK801_BUCK_SLP_LP_EN BIT(3)
436+#define RK801_PLDO_SLP_LP_EN BIT(1)
437+#define RK801_SLP_LP_MASK (RK801_PLDO_SLP_LP_EN | RK801_BUCK_SLP_LP_EN)
438+/* RK801_SLEEP_CFG_REG */
439+#define RK801_SLEEP_FUN_MSK 0x3
440+#define RK801_NONE_FUN 0x0
441+#define RK801_SLEEP_FUN 0x1
442+#define RK801_SHUTDOWN_FUN 0x2
443+#define RK801_RESET_FUN 0x3
444+/* RK801_SYS_CFG2_REG */
445+#define RK801_SLEEP_POL_MSK BIT(1)
446+#define RK801_SLEEP_ACT_H BIT(1)
447+#define RK801_SLEEP_ACT_L 0
448+#define RK801_RST_MSK (0x3 << 4)
449+#define RK801_RST_RESTART_PMU (0x0 << 4)
450+#define RK801_RST_RESTART_REG (0x1 << 4)
451+#define RK801_RST_RESTART_REG_RESETB (0x2 << 4)
452+/* RK801_INT_CONFIG_REG */
453+#define RK801_INT_POL_MSK BIT(1)
454+#define RK801_INT_ACT_H BIT(1)
455+#define RK801_INT_ACT_L 0
456+#define RK801_FPWM_MODE 1
457+#define RK801_AUTO_PWM_MODE 0
458+#define RK801_PLDO_HRDEC_EN BIT(6)
459+
343460 /* RK805 */
344461 enum rk805_reg {
345462 RK805_ID_DCDC1,
@@ -1332,6 +1449,7 @@ enum { · 986 unmodified lines
13321449 };
13331450
13341451 enum {
1452+ RK801_ID = 0x8010,
13351453 RK805_ID = 0x8050,
13361454 RK806_ID = 0x8060,
13371455 RK808_ID = 0x0000,
include/linux/mfd/rohm-bd71828.h+2−0
@@ -249,6 +249,8 @@ enum { · 248 unmodified lines
249249 #define BD71828_REG_BATCAP_MON_LIMIT_U 0xcc
250250 #define BD71828_REG_CONF 0x64
251251
252+#define BD71828_REG_ILIM_STAT 0x6d
253+#define BD71828_REG_DCIN_SET 0x70
252254 #define BD71828_REG_DCIN_CLPS 0x71
253255
254256 #define BD71828_REG_MEAS_CLEAR 0xaf
include/linux/mfd/tps6105x.h+3−2
@@ -53,7 +53,7 @@ · 52 unmodified lines
5353 /**
5454 * enum tps6105x_mode - desired mode for the TPS6105x
5555 * @TPS6105X_MODE_SHUTDOWN: this instance is inactive, not used for anything
56− * @TPS61905X_MODE_TORCH: this instance is used as a LED, usually a while
56+ * @TPS6105X_MODE_TORCH: this instance is used as a LED, usually a while
5757 * LED, for example as backlight or flashlight. If this is set, the
5858 * TPS6105X will register to the LED framework
5959 * @TPS6105X_MODE_TORCH_FLASH: this instance is used as a flashgun, usually
@@ -82,7 +82,8 @@ struct tps6105x_platform_data { · 22 unmodified lines
8282
8383 /**
8484 * struct tps6105x - state holder for the TPS6105x drivers
85− * @i2c_client: corresponding I2C client
85+ * @pdata: associated platform data
86+ * @client: corresponding I2C client
8687 * @regulator: regulator device if used in voltage mode
8788 * @regmap: used for i2c communcation on accessing registers
8889 */
include/linux/mfd/tps65219.h+2−0
@@ -149,6 +149,8 @@ enum pmic_id { · 148 unmodified lines
149149 #define TPS65215_ENABLE_LDO2_EN_MASK BIT(5)
150150 #define TPS65214_ENABLE_LDO1_EN_MASK BIT(5)
151151 #define TPS65219_ENABLE_LDO4_EN_MASK BIT(6)
152+/* Register Unlock */
153+#define TPS65214_LOCK_ACCESS_CMD 0x5a
152154 /* power ON-OFF sequence slot */
153155 #define TPS65219_BUCKS_LDOS_SEQUENCE_OFF_SLOT_MASK GENMASK(3, 0)
154156 #define TPS65219_BUCKS_LDOS_SEQUENCE_ON_SLOT_MASK GENMASK(7, 4)