Commit 69352bd5 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull MFD updates from Lee Jones:
 "Samsung Exynos ACPM:
   - Populate child platform devices from device tree data
   - Introduce a new API, 'devm_acpm_get_by_node()', for child devices
     to get the ACPM handle

  ROHM PMICs:
   - Add support for the ROHM BD96802 scalable companion PMIC to the
     BD96801 core driver
   - Add support for controlling the BD96802 using the BD96801 regulator
     driver
   - Add support to the BD96805, which is almost identical to the
     BD96801
   - Add support to the BD96806, which is similar to the BD96802

  Maxim MAX77759:
   - Add a core driver for the MAX77759 companion PMIC
   - Add a GPIO driver for the expander functions on the MAX77759
   - Add an NVMEM driver to expose the non-volatile memory on the
     MAX77759

  STMicroelectronics STM32MP25:
   - Add support for the STM32MP25 SoC to the stm32-lptimer
   - Add support for the STM32MP25 to the clocksource driver, handling
     new register access requirements
   - Add support for the STM32MP25 to the PWM driver, enabling up to two
     PWM outputs

  Broadcom BCM590xx:
   - Add support for the BCM59054 PMU
   - Parse the PMU ID and revision to support behavioral differences
     between chip revisions
   - Add regulator support for the BCM59054

  Samsung S2MPG10:
   - Add support for the S2MPG10 PMIC, which communicates via the
     Samsung ACPM firmware instead of I2C

  Exynos ACPM:
   - Improve timeout detection reliability by using ktime APIs instead
     of a loop counter assumption
   - Allow PMIC access during late system shutdown by switching to
     'udelay()' instead of a sleeping function
   - Fix an issue where reading command results longer than 8 bytes
     would fail
   - Silence non-error '-EPROBE_DEFER' messages during boot to clean up
     logs

  Exynos LPASS:
   - Fix an error handling path by switching to
     'devm_regmap_init_mmio()' to prevent resource leaks
   - Fix a bug where 'exynos_lpass_disable()' was called twice in the
     remove function
   - Fix another resource leak in the probe's error path by using
     'devm_add_action_or_reset()'

  Samsung SEC:
   - Handle the s2dos05, which does not have IRQ support, explicitly to
     prevent warnings
   - Fix the core driver to correctly handle errors from
     'sec_irq_init()' instead of ignoring them

  STMPE-SPI:
   - Correct an undeclared identifier in the 'MODULE_DEVICE_TABLE' macro

  MAINTAINERS:
   - Adjust a file path for the Siemens IPC LED drivers entry to fix a
     broken reference

  Maxim Drivers:
   - Correct the spelling of "Electronics" in Samsung copyright headers
     across multiple files

  General:
   - Fix wakeup source memory leaks on device unbind for 88pm886,
     as3722, max14577, max77541, max77705, max8925, rt5033, and
     sprd-sc27xx drivers

  Samsung SEC Drivers:
   - Split the driver into a transport-agnostic core ('sec-core') and
     transport-specific ('sec-i2c', 'sec-acpm') modules to support
     non-I2C devices
   - Merge the 'sec-core' and 'sec-irq' modules to reduce memory
     consumption
   - Move internal APIs to a private header to clean up the public API
   - Improve code style by sorting includes, cleaning up headers,
     sorting device tables, and using helper macros like
     'dev_err_probe()', 'MFD_CELL', and 'REGMAP_IRQ_REG'
   - Make regmap configuration for s2dos05/s2mpu05 explicit to improve
     clarity
   - Rework platform data and regmap instantiation to use OF match data
     instead of a large switch statement

  ROHM BD96801/2:
   - Prepare the driver for new models by separating chip-specific data
     into its own structure
   - Drop IC name prefix from IRQ resource names in both the MFD and
     regulator drivers for simplification

  Broadcom BCM590xx:
   - Refactor the regulator driver to store descriptions in a table to
     ease support for new chips
   - Rename BCM59056-specific data to prepare for the addition of other
     regulators
   - Use 'dev_err_probe()' for cleaner error handling

  Exynos ACPM:
   - Correct kerneldoc warnings and use the conventional 'np' argument
     name

  General MFD:
   - Convert 'aat2870' and 'tps65010' to use the per-client debugfs
     directory provided by the I2C core
   - Convert 'sm501', 'tps65010' and 'ucb1x00' to use the new GPIO line
     value setter callbacks
   - Constify 'regmap_irq_chip' and other structures in '88pm886' to
     move data to read-only sections

  BCM590xx:
   - Drop the unused "id" member from the 'bcm590xx' struct in
     preparation for a replacement

  Samsung SEC Core:
   - Remove forward declarations for functions that no longer exist

  SM501:
   - Remove the unused 'sm501_find_clock()' function

  New Compatibles:
   - Google: Add a PMIC child node to the 'google,gs101-acpm-ipc'
     binding
   - ROHM: Add new bindings for 'rohm,bd96802-regulator' and
     'rohm,bd96802-pmic', and add compatibles for BD96805 and BD96806
   - Maxim: Add new bindings for 'maxim,max77759-gpio',
     'maxim,max77759-nvmem', and the top-level 'maxim,max77759'
   - STM: Add 'stm32mp25' compatible to the 'stm32-lptimer' binding
   - Broadcom: Add 'bcm59054' compatible
   - Atmel/Microchip: Add 'microchip,sama7d65-gpbr' and
     'microchip,sama7d65-secumod' compatibles
   - Samsung: Add 's2mpg10' compatible to the 'samsung,s2mps11' MFD
     binding
   - MediaTek: Add compatibles for 'mt6893' (scpsys), 'mt7988-topmisc',
     and 'mt8365-infracfg-nao'
   - Qualcomm: Add 'qcom,apq8064-mmss-sfpb' and 'qcom,apq8064-sps-sic'
     syscon compatibles

  Refactoring & Cleanup:
   - Convert Broadcom BCM59056 devicetree bindings to YAML and split
     them into MFD and regulator parts
   - Convert the Microchip AT91 secumod binding to YAML
   - Drop unrelated consumer nodes from binding examples to reduce bloat
   - Correct indentation and style in various DTS examples"

* tag 'mfd-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (81 commits)
  mfd: maxim: Correct Samsung "Electronics" spelling in copyright headers
  mfd: maxim: Correct Samsung "Electronics" spelling in headers
  mfd: sm501: Remove unused sm501_find_clock
  mfd: 88pm886: Constify struct regmap_irq_chip and some other structures
  dt-bindings: mfd: syscon: Add mediatek,mt8365-infracfg-nao
  mfd: sprd-sc27xx: Fix wakeup source leaks on device unbind
  mfd: rt5033: Fix wakeup source leaks on device unbind
  mfd: max8925: Fix wakeup source leaks on device unbind
  mfd: max77705: Fix wakeup source leaks on device unbind
  mfd: max77541: Fix wakeup source leaks on device unbind
  mfd: max14577: Fix wakeup source leaks on device unbind
  mfd: as3722: Fix wakeup source leaks on device unbind
  mfd: 88pm886: Fix wakeup source leaks on device unbind
  dt-bindings: mfd: Correct indentation and style in DTS example
  dt-bindings: mfd: Drop unrelated nodes from DTS example
  dt-bindings: mfd: syscon: Add qcom,apq8064-sps-sic
  dt-bindings: mfd: syscon: Add qcom,apq8064-mmss-sfpb
  mfd: stmpe-spi: Correct the name used in MODULE_DEVICE_TABLE
  dt-bindings: mfd: syscon: Add mt7988-topmisc
  mfd: exynos-lpass: Fix another error handling path in exynos_lpass_probe()
  ...
parents 2043ae90 ffb006aa
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/atmel,sama5d2-secumod.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Microchip AT91 Security Module (SECUMOD)

maintainers:
  - Nicolas Ferre <nicolas.ferre@microchip.com>

description:
  The Security Module also offers the PIOBU pins which can be used as GPIO pins.
  Note that they maintain their voltage during Backup/Self-refresh.

properties:
  compatible:
    oneOf:
      - items:
          - const: atmel,sama5d2-secumod
          - const: syscon
      - items:
          - enum:
              - microchip,sama7d65-secumod
              - microchip,sama7g5-secumod
          - const: atmel,sama5d2-secumod
          - const: syscon
  reg:
    maxItems: 1

  gpio-controller: true

  "#gpio-cells":
    const: 2

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    security-module@fc040000 {
      compatible = "atmel,sama5d2-secumod", "syscon";
      reg = <0xfc040000 0x100>;
      gpio-controller;
      #gpio-cells = <2>;
    };
+0 −25
Original line number Diff line number Diff line
@@ -46,28 +46,3 @@ Examples:
		reg = <0xffffe800 0x200>;
	};
Security Module (SECUMOD)

The Security Module macrocell provides all necessary secure functions to avoid
voltage, temperature, frequency and mechanical attacks on the chip. It also
embeds secure memories that can be scrambled.

The Security Module also offers the PIOBU pins which can be used as GPIO pins.
Note that they maintain their voltage during Backup/Self-refresh.

required properties:
- compatible: Should be "atmel,<chip>-secumod", "syscon".
  <chip> can be "sama5d2".
- reg: Should contain registers location and length
- gpio-controller:	Marks the port as GPIO controller.
- #gpio-cells:		There are 2. The pin number is the
			first, the second represents additional
			parameters such as GPIO_ACTIVE_HIGH/LOW.


	secumod@fc040000 {
		compatible = "atmel,sama5d2-secumod", "syscon";
		reg = <0xfc040000 0x100>;
		gpio-controller;
		#gpio-cells = <2>;
	};
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ properties:
      - items:
          - enum:
              - atmel,at91sam9260-gpbr
              - microchip,sama7d65-gpbr
          - const: syscon
      - items:
          - enum:
+0 −39
Original line number Diff line number Diff line
-------------------------------
BCM590xx Power Management Units
-------------------------------

Required properties:
- compatible: "brcm,bcm59056"
- reg: I2C slave address
- interrupts: interrupt for the PMU. Generic interrupt client node bindings
  are described in interrupt-controller/interrupts.txt

------------------
Voltage Regulators
------------------

Optional child nodes:
- regulators: container node for regulators following the generic
  regulator binding in regulator/regulator.txt

  The valid regulator node names for BCM59056 are:
  	rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo,
	mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo,
	csr, iosr1, iosr2, msr, sdsr1, sdsr2, vsr,
	gpldo1, gpldo2, gpldo3, gpldo4, gpldo5, gpldo6,
	vbus

Example:
	pmu: bcm59056@8 {
		compatible = "brcm,bcm59056";
		reg = <0x08>;
		interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
		regulators {
			rfldo_reg: rfldo {
				regulator-min-microvolt = <1200000>;
				regulator-max-microvolt = <3300000>;
			};

			...
		};
	};
+76 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/brcm,bcm59056.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom BCM590xx Power Management Units

maintainers:
  - Artur Weber <aweber.kernel@gmail.com>

properties:
  compatible:
    enum:
      - brcm,bcm59054
      - brcm,bcm59056

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  regulators:
    type: object

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: brcm,bcm59054
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/brcm,bcm59054.yaml#

  - if:
      properties:
        compatible:
          contains:
            const: brcm,bcm59056
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/brcm,bcm59056.yaml#

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        pmic@8 {
            compatible = "brcm,bcm59056";
            reg = <0x08>;
            interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;

            regulators {
                rfldo {
                    regulator-min-microvolt = <1200000>;
                    regulator-max-microvolt = <3300000>;
                };
            };
        };
    };
Loading