mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-18 15:51:20 -04:00
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:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user