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

Commit ac5a28b0 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'mfd-for-linus-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd

Pull MFD updates from Lee Jones:
 "New Device Support
   - Add support for Ricoh RC5T619 PMIC to rn5t618
   - Add support for PM8821 PMIC to qcom-pm8xxx

  New Functionality:
   - Add support for GPIO to lpc_ich
   - Add support for GPADC to sun4i
   - Add ability for rk808 to shutdown

  Fix-ups:
   - Simplify/strip unnecessary code; tps65218, palmas, tps65217
   - Device Tree binding updates; tps65218, altera-a10sr
   - Provide/export device ID info; tps65218, axp20x-i2c, hi655x-pmic,
     fsl-imx25-tsadc, intel_soc_pmic_bxtwc
   - Use MFD API instead of of_platform_populate(); tps65218
   - Generalise name-space; pm8xxx
   - Supply/edit regmap configuration; axp20x, cs47l24-tables, axp20x
   - Enable compile testing; max77620, max77686, exynos-lpass,
     abx500-core
   - Coding style issues; wm8994-core, wm5102-tables
   - Supply endian support; syscon
   - Remove module support; ab3100-core, ab8500-debugfs, ab8500-gpadc,
     abx500-core

  Bug Fixes:
   - Fix ordering issues; wm8994
   - Fix dependencies (build-time/run-time); exynos_lpass, sun4i-gpadc
   - Fix compiler warnings; sun4i-gpadc
   - Fix leaks; mfd-core
   - Fix page fault during module unload; tps65217"

* tag 'mfd-for-linus-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (49 commits)
  mfd: tps65217: Support an interrupt pin as the system wakeup
  mfd: tps65217: Make an interrupt handler simpler
  mfd: tps65217: Update register interrupt mask bits instead of writing operation
  mfd: tps65217: Specify the IRQ name
  mfd: tps65217: Fix page fault on unloading modules
  mfd: palmas: Remove redundant check in palmas_power_off
  mfd: arizona: Disable IRQs during driver remove
  mfd: pm8xxx: add support to pm8821
  mfd: intel-lpss: Try to enable Memory-Write-Invalidate
  mfd: rn5t618: Add Ricoh RC5T619 PMIC support
  mfd: axp20x: Add address extension registers for AXP806 regmap
  mfd: intel_soc_pmic_bxtwc: Fix a typo in MODULE_DEVICE_TABLE()
  mfd: core: Fix device reference leak in mfd_clone_cell
  mfd: bcm590xx: Simplify a test
  mfd: sun4i-gpadc: Select regmap-irq
  mfd: abx500-core: drop unused MODULE_ tags from non-modular code
  mfd: ab8500: make sysctrl explicitly non-modular
  mfd: ab8500-gpadc: Make it explicitly non-modular
  mfd: ab8500-debugfs: Make it explicitly non-modular
  mfd: ab8500-core: Make it explicitly non-modular
  ...
parents b0b3a37b 93559191
Loading
Loading
Loading
Loading
+46 −0
Original line number Diff line number Diff line
* Altera Arria10 Development Kit System Resource Chip

Required parent device properties:
- compatible		: "altr,a10sr"
- spi-max-frequency	: Maximum SPI frequency.
- reg			: The SPI Chip Select address for the Arria10
			  System Resource chip
- interrupt-parent	: The parent interrupt controller.
- interrupts		: The interrupt line the device is connected to.
- interrupt-controller	: Marks the device node as an interrupt controller.
- #interrupt-cells	: The number of cells to describe an IRQ, should be 2.
			    The first cell is the IRQ number.
			    The second cell is the flags, encoded as trigger
			    masks from ../interrupt-controller/interrupts.txt.

The A10SR consists of these sub-devices:

Device                   Description
------                   ----------
a10sr_gpio               GPIO Controller

Arria10 GPIO
Required Properties:
- compatible        : Should be "altr,a10sr-gpio"
- gpio-controller   : Marks the device node as a GPIO Controller.
- #gpio-cells       : Should be two.  The first cell is the pin number and
                      the second cell is used to specify flags.
                      See ../gpio/gpio.txt for more information.

Example:

        resource-manager@0 {
		compatible = "altr,a10sr";
		reg = <0>;
		spi-max-frequency = <100000>;
		interrupt-parent = <&portb>;
		interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
		interrupt-controller;
		#interrupt-cells = <2>;

		a10sr_gpio: gpio-controller {
			compatible = "altr,a10sr-gpio";
			gpio-controller;
			#gpio-cells = <2>;
		};
	};
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ voltages and other various functionality to Qualcomm SoCs.
	Value type: <string>
	Definition: must be one of:
		    "qcom,pm8058"
		    "qcom,pm8821"
		    "qcom,pm8921"

- #address-cells:
+10 −6
Original line number Diff line number Diff line
* Ricoh RN5T567/RN5T618 PMIC

Ricoh RN5T567/RN5T618 is a power management IC family which integrates
3 to 4 step-down DCDC converters, 7 low-dropout regulators, GPIOs and
a watchdog timer. The RN5T618 provides additionally a Li-ion battery
charger, fuel gauge and an ADC. It can be controlled through an I2C
interface.
Ricoh RN5T567/RN5T618/RC5T619 is a power management IC family which
integrates 3 to 5 step-down DCDC converters, 7 to 10 low-dropout regulators,
GPIOs, and a watchdog timer. It can be controlled through an I2C interface.
The RN5T618/RC5T619 provides additionally a Li-ion battery charger,
fuel gauge, and an ADC.
The RC5T619 additionnally includes USB charger detection and an RTC.

Required properties:
 - compatible: must be one of
		"ricoh,rn5t567"
		"ricoh,rn5t618"
		"ricoh,rc5t619"
 - reg: the I2C slave address of the device

Sub-nodes:
 - regulators: the node is required if the regulator functionality is
   needed. The valid regulator names are: DCDC1, DCDC2, DCDC3, DCDC4
   (RN5T567), LDO1, LDO2, LDO3, LDO4, LDO5, LDORTC1 and LDORTC2.
   (RN5T567/RC5T619), LDO1, LDO2, LDO3, LDO4, LDO5, LDO6, LDO7, LDO8,
   LDO9, LDO10, LDORTC1 and LDORTC2.
   LDO7-10 are specific to RC5T619.
   The common bindings for each individual regulator can be found in:
   Documentation/devicetree/bindings/regulator/regulator.txt

+71 −16
Original line number Diff line number Diff line
TPS65218 family of regulators

Required properties:
For tps65218 regulators/LDOs
- compatible:
  - "ti,tps65218-dcdc1" for DCDC1
  - "ti,tps65218-dcdc2" for DCDC2
  - "ti,tps65218-dcdc3" for DCDC3
  - "ti,tps65218-dcdc4" for DCDC4
  - "ti,tps65218-dcdc5" for DCDC5
  - "ti,tps65218-dcdc6" for DCDC6
  - "ti,tps65218-ldo1" for LDO1

Optional properties:
- Any optional property defined in bindings/regulator/regulator.txt
- compatible: "ti,tps65218"
- reg: I2C slave address

- List of regulators provided by this controller, must be named
  after their hardware counterparts: dcdc[1-6] and ldo1
- This is the list of child nodes that specify the regulator
  initialization data for defined regulators. Not all regulators for the given
  device need to be present. The definition for each of these nodes is defined
  using the standard binding for regulators found at ./regulator.txt.

  The valid names for regulators are:
  tps65217: regulator-dcdc1, regulator-dcdc2, regulator-dcdc3, regulator-dcdc4,
  regulator-dcdc5, regulator-dcdc6, regulator-ldo1, regulator-ls3.
  Each regulator is defined using the standard binding for regulators.

Example:
tps65218: tps65218@24 {
	reg = <0x24>;
	compatible = "ti,tps65218";
	interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* NMIn */
	interrupt-controller;
	#interrupt-cells = <2>;

	dcdc1: regulator-dcdc1 {
		regulator-name = "vdd_core";
		regulator-min-microvolt = <912000>;
		regulator-max-microvolt = <1144000>;
		regulator-boot-on;
		regulator-always-on;
	};

	dcdc2: regulator-dcdc2 {
		regulator-name = "vdd_mpu";
		regulator-min-microvolt = <912000>;
		regulator-max-microvolt = <1378000>;
		regulator-boot-on;
		regulator-always-on;
	};

	dcdc3: regulator-dcdc3 {
		regulator-name = "vdcdc3";
		regulator-min-microvolt = <1500000>;
		regulator-max-microvolt = <1500000>;
		regulator-boot-on;
		regulator-always-on;
	};

	xyz: regulator@0 {
		compatible = "ti,tps65218-dcdc1";
	dcdc5: regulator-dcdc5 {
		regulator-name = "v1_0bat";
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt  = <3000000>;
		regulator-max-microvolt = <1000000>;
		regulator-boot-on;
		regulator-always-on;
	};

	dcdc6: regulator-dcdc6 {
		regulator-name = "v1_8bat";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-boot-on;
		regulator-always-on;
	};

	ldo1: regulator-ldo1 {
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-boot-on;
		regulator-always-on;
	};

	ls3: regulator-ls3 {
		regulator-min-microvolt = <100000>;
		regulator-max-microvolt = <1000000>;
	};
};
+2 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/errno.h>
#include <linux/gpio/driver.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/mfd/tps65218.h>

struct tps65218_gpio {
@@ -30,7 +31,7 @@ static int tps65218_gpio_get(struct gpio_chip *gc, unsigned offset)
	unsigned int val;
	int ret;

	ret = tps65218_reg_read(tps65218, TPS65218_REG_ENABLE2, &val);
	ret = regmap_read(tps65218->regmap, TPS65218_REG_ENABLE2, &val);
	if (ret)
		return ret;

Loading