Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0423808 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull MFD updates from Lee Jones:
 "Core framework:
   - Add the MFD bindings doc to MAINTAINERS

  New drivers:
   - X-Powers AC100 Audio CODEC and RTC
   - TI LP873x PMIC
   - Rockchip RK808 PMIC
   - Samsung Exynos Low Power Audio

  New device support:
   - Add support for STMPE1600 variant to stmpe
   - Add support for PM8018 PMIC to pm8921-core
   - Add support for AXP806 PMIC in axp20x
   - Add support for AXP209 GPIO in axp20x

  New functionality:
   - Add support for Reset to all STMPE variants
   - Add support for MKBP event support to cros_ec
   - Add support for USB to intel_soc_pmic_bxtwc
   - Add support for IRQs and Power Button to tps65217

  Fix-ups:
   - Clean-up defunct author emails (da9063, max14577)
   - Kconfig fixups (wm8350-i2c, as37220
   - Constify (altera-a10sr, sm501)
   - Supply PCI IDs (intel-lpss-pci)
   - Improve clocking (qcom_rpm)
   - Fix IRQ probing (ucb1x00-core)
   - Ensure fault log is cleared (da9052)
   - Remove NO_IRQ check (ucb1x00-core)
   - Supply I2C properties (intel-lpss-acpi, intel-lpss-pci)
   - Non standard declaration (tps65217, max8997-irq)
   - Remove unused code (lp873x, db8500-prcmu, ab8500-debugfs,
     cros_ec_spi)
   - Make non-modular (altera-a10sr, intel_msic, smsc-ece1099,
     sun6i-prcm, twl-core)
   - OF bindings (ac100, stmpe, qcom-pm8xxx, qcom-rpm, rk808, axp20x,
     lp873x, exynos5433-lpass, act8945a, aspeed-scu, twl6040, arizona)

  Bugfixes:
   - Release OF pointer (qcom_rpm)
   - Avoid double shifting in suspend/resume (88pm80x)
   - Fix 'defined but not used' error (exynos-lpass)
   - Fix 'sleeping whilst attomic' (atmel-hlcdc)"

* tag 'mfd-for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (69 commits)
  mfd: arizona: Handle probe deferral for reset GPIO
  mfd: arizona: Remove arizona_of_get_named_gpio helper function
  mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config
  mfd: twl6040: Register child device for twl6040-pdmclk
  mfd: cros_ec_spi: Remove unused variable 'request'
  mfd: omap-usb-host: Return value is not 'const int'
  mfd: ab8500-debugfs: Remove 'weak' function suspend_test_wake_cause_interrupt_is_mine()
  mfd: ab8500-debugfs: Remove ab8500_dump_all_banks_to_mem()
  mfd: db8500-prcmu: Remove unused *prcmu_set_ddr_opp() calls
  mfd: ab8500-debugfs: Prevent initialised field from being over-written
  mfd: max8997-irq: 'inline' should be at the beginning of the declaration
  mfd: rk808: Fix RK818_IRQ_DISCHG_ILIM initializer
  mfd: tps65217: Fix nonstandard declaration
  mfd: lp873x: Remove unused mutex lock from struct lp873x
  mfd: atmel-hlcdc: Do not sleep in atomic context
  mfd: exynos-lpass: Mark PM functions as __maybe_unused
  mfd: intel-lpss: Add default I2C device properties for Apollo Lake
  mfd: twl-core: Make it explicitly non-modular
  mfd: sun6i-prcm: Make it explicitly non-modular
  mfd: smsc-ece1099: Make it explicitly non-modular
  ...
parents 3477d168 b8d336ed
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
X-Powers AC100 Codec/RTC IC Device Tree bindings

AC100 is a audio codec and RTC subsystem combo IC. The 2 parts are
separated, including power supplies and interrupt lines, but share
a common register address space and host interface.

Required properties:
- compatible: "x-powers,ac100"
- reg: The I2C slave address or RSB hardware address for the chip
- sub-nodes:
  - codec
    - compatible:		"x-powers,ac100-codec"
    - interrupt-parent:		The parent interrupt controller
    - interrupts:		SoC NMI / GPIO interrupt connected to the
    				IRQ_AUDIO pin
    - #clock-cells:		Shall be 0
    - clock-output-names:	"4M_adda"

    - see clock/clock-bindings.txt for common clock bindings

  - rtc
    - compatible:		"x-powers,ac100-rtc"
    - interrupt-parent:		The parent interrupt controller
    - interrupts:		SoC NMI / GPIO interrupt connected to the
    				IRQ_RTC pin
    - clocks:			A phandle to the codec's "4M_adda" clock
    - #clock-cells:		Shall be 1
    - clock-output-names:	"cko1_rtc", "cko2_rtc", "cko3_rtc"

    - see clock/clock-bindings.txt for common clock bindings

Example:

ac100: codec@e89 {
	compatible = "x-powers,ac100";
	reg = <0xe89>;

	ac100_codec: codec {
		compatible = "x-powers,ac100-codec";
		interrupt-parent = <&r_pio>;
		interrupts = <0 9 IRQ_TYPE_LEVEL_LOW>; /* PL9 */
		#clock-cells = <0>;
		clock-output-names = "4M_adda";
	};

	ac100_rtc: rtc {
		compatible = "x-powers,ac100-rtc";
		interrupt-parent = <&nmi_intc>;
		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
		clocks = <&ac100_codec>;
		#clock-cells = <1>;
		clock-output-names = "cko1_rtc", "cko2_rtc", "cko3_rtc";
	};
};
+15 −7
Original line number Diff line number Diff line
@@ -14,13 +14,6 @@ Example:
		reg = <0x5b>;
		status = "okay";

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_charger_chglev>;
		active-semi,chglev-gpio = <&pioA 12 GPIO_ACTIVE_HIGH>;
		active-semi,input-voltage-threshold-microvolt = <6600>;
		active-semi,precondition-timeout = <40>;
		active-semi,total-timeout = <3>;

		active-semi,vsel-high;

		regulators {
@@ -73,4 +66,19 @@ Example:
				regulator-always-on;
			};
		};

		charger {
			compatible = "active-semi,act8945a-charger";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>;
			interrupt-parent = <&pioA>;
			interrupts = <45 GPIO_ACTIVE_LOW>;

			active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>;
			active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>;
			active-semi,input-voltage-threshold-microvolt = <6600>;
			active-semi,precondition-timeout = <40>;
			active-semi,total-timeout = <3>;
			status = "okay";
		};
	};
+18 −0
Original line number Diff line number Diff line
@@ -85,6 +85,24 @@ Optional properties:
    present, the number of values should be less than or equal to the
    number of inputs, unspecified inputs will use the chip default.

  - wlf,max-channels-clocked : The maximum number of channels to be clocked on
    each AIF, useful for I2S systems with multiple data lines being mastered.
    Specify one cell for each AIF to be configured, specify zero for AIFs that
    should be handled normally.
    If present, number of cells must be less than or equal to the number of
    AIFs. If less than the number of AIFs, for cells that have not been
    specified the corresponding AIFs will be treated as default setting.

  - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
      wm8998, wm1814)

  - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
    wm8998, wm1814)

  - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if
    they are being externally supplied. As covered in
    Documentation/devicetree/bindings/regulator/regulator.txt
+18 −0
Original line number Diff line number Diff line
The Aspeed System Control Unit manages the global behaviour of the SoC,
configuring elements such as clocks, pinmux, and reset.

Required properties:
- compatible:	One of:
		"aspeed,ast2400-scu", "syscon", "simple-mfd"
		"aspeed,g4-scu", "syscon", "simple-mfd"
		"aspeed,ast2500-scu", "syscon", "simple-mfd"
		"aspeed,g5-scu", "syscon", "simple-mfd"

- reg:		contains the offset and length of the SCU memory region

Example:

syscon: syscon@1e6e2000 {
	compatible = "aspeed,ast2400-scu", "syscon", "simple-mfd";
	reg = <0x1e6e2000 0x1a8>;
};
+26 −2
Original line number Diff line number Diff line
@@ -10,7 +10,8 @@ axp809 (X-Powers)

Required properties:
- compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp806",
	      "x-powers,axp809"
- reg: The I2C slave address or RSB hardware address for the AXP chip
- interrupt-parent: The parent interrupt controller
- interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
@@ -47,7 +48,6 @@ Optional properties for DCDC regulators:
			  probably makes sense for HiFi audio related
			  applications that aren't battery constrained.


AXP202/AXP209 regulators, type, and corresponding input supply names:

Regulator	  Type		  Supply Name		  Notes
@@ -86,6 +86,30 @@ LDO_IO1 : LDO : ips-supply : GPIO 1
RTC_LDO		: LDO		: ips-supply		: always on
DRIVEVBUS	: Enable output	: drivevbus-supply	: external regulator

AXP806 regulators, type, and corresponding input supply names:

Regulator	  Type		  Supply Name		  Notes
---------	  ----		  -----------		  -----
DCDCA		: DC-DC buck	: vina-supply		: poly-phase capable
DCDCB		: DC-DC buck	: vinb-supply		: poly-phase capable
DCDCC		: DC-DC	buck	: vinc-supply		: poly-phase capable
DCDCD		: DC-DC	buck	: vind-supply		: poly-phase capable
DCDCE		: DC-DC	buck	: vine-supply		: poly-phase capable
ALDO1		: LDO		: aldoin-supply		: shared supply
ALDO2		: LDO		: aldoin-supply		: shared supply
ALDO3		: LDO		: aldoin-supply		: shared supply
BLDO1		: LDO		: bldoin-supply		: shared supply
BLDO2		: LDO		: bldoin-supply		: shared supply
BLDO3		: LDO		: bldoin-supply		: shared supply
BLDO4		: LDO		: bldoin-supply		: shared supply
CLDO1		: LDO		: cldoin-supply		: shared supply
CLDO2		: LDO		: cldoin-supply		: shared supply
CLDO3		: LDO		: cldoin-supply		: shared supply
SW		: On/Off Switch : swin-supply

Additionally, the AXP806 DC-DC regulators support poly-phase arrangements
for higher output current. The possible groupings are: A+B, A+B+C, D+E.

AXP809 regulators, type, and corresponding input supply names:

Regulator	  Type		  Supply Name		  Notes
Loading