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

Commit 1fe9eb18 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull MFD updates from Lee Jones:
 "Changes to existing drivers:
   - increase DT coverage: arizona, mc13xxx, stmpe-i2c, syscon,
     sun6i-prcm
   - regmap use of and/or clean-up: tps65090, twl6040
   - basic renaming: max14577
   - use new cpufreq helpers: db8500-prcmu
   - increase regulator support: stmpe, arizona, wm5102
   - reduce legacy GPIO overhead: stmpe
   - provide necessary remove path: bcm590xx
   - expand sysfs presence: kempld
   - move driver specific code out to drivers: rtc-s5m, arizona
   - clk handling: twl6040
   - use managed (devm_*) resources: ipaq-micro
   - clean-up/remove unused/duplicated code: tps65218, sec, pm8921,
     abx500-core, db8500-prcmu, menelaus
   - build/boot/sematic bug fixes: rtsx_usb, stmpe, bcm590xx, abx500,
     mc13xxx, rdc321x-southbridge, mfd-core, sec, max14577, syscon,
     cros_ec_spi
   - constify stuff: sm501, tps65910, tps6507x, tps6586x, max77686,
     max8997, kempld, max77693, max8907, rtsx_usb, db8500-prcmu,
     max8998, wm8400, sec, lp3943, max14577, as3711, omap-usb-host,
     ipaq-micro

  Support for new devices:
   - add support for max77836 into max14577
   - add support for tps658640 into tps6586x
   - add support for cros-ec-i2c-tunnel into cros_ec
   - add new driver for rtsx_usb_sdmmc and rtsx_usb_ms
   - add new driver for axp20x
   - add new driver for sun6i-prcm
   - add new driver for ipaq-micro"

* tag 'mfd-for-linus-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (77 commits)
  mfd: wm5102: Correct default for LDO Control 2 register
  mfd: menelaus: Use module_i2c_driver
  mfd: tps65218: Terminate of match table
  mfd: db8500-prcmu: Remove check for CONFIG_DBX500_PRCMU_DEBUG
  mfd: ti-keystone-devctrl: Add bindings for device state control
  mfd: palmas: Format the header file
  mfd: abx500-core: Remove unused function abx500_dump_all_banks()
  mfd: arizona: Correct addresses of always-on trigger registers
  mfd: max14577: Cast to architecture agnostic data type
  i2c: ChromeOS EC tunnel driver
  mfd: cros_ec: Sync to the latest cros_ec_commands.h from EC sources
  mfd: cros_ec: spi: Increase cros_ec_spi deadline from 5ms to 100ms
  mfd: cros_ec: spi: Make the cros_ec_spi timeout more reliable
  mfd: cros_ec: spi: Add mutex to cros_ec_spi
  mfd: cros_ec: spi: Calculate delay between transfers correctly
  mfd: arizona: Correct error message for addition of main IRQ chip
  mfd: wm8997: Add registers for high power mode
  mfd: arizona: Add MICVDD to mapped regulators
  mfd: ipaq-micro: Make mfd_cell array const
  mfd: ipaq-micro: Use devm_ioremap_resource()
  ...
parents 0bb46462 89abd4df
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
I2C bus that tunnels through the ChromeOS EC (cros-ec)
======================================================
On some ChromeOS board designs we've got a connection to the EC (embedded
controller) but no direct connection to some devices on the other side of
the EC (like a battery and PMIC).  To get access to those devices we need
to tunnel our i2c commands through the EC.

The node for this device should be under a cros-ec node like google,cros-ec-spi
or google,cros-ec-i2c.


Required properties:
- compatible: google,cros-ec-i2c-tunnel
- google,remote-bus: The EC bus we'd like to talk to.

Optional child nodes:
- One node per I2C device connected to the tunnelled I2C bus.


Example:
	cros-ec@0 {
		compatible = "google,cros-ec-spi";

		...

		i2c-tunnel {
			compatible = "google,cros-ec-i2c-tunnel";
			#address-cells = <1>;
			#size-cells = <0>;

			google,remote-bus = <0>;

			battery: sbs-battery@b {
				compatible = "sbs,sbs-battery";
				reg = <0xb>;
				sbs,poll-retry-count = <1>;
			};
		};
	}
+59 −0
Original line number Diff line number Diff line
* Allwinner PRCM (Power/Reset/Clock Management) Multi-Functional Device

PRCM is an MFD device exposing several Power Management related devices
(like clks and reset controllers).

Required properties:
 - compatible: "allwinner,sun6i-a31-prcm"
 - reg: The PRCM registers range

The prcm node may contain several subdevices definitions:
 - see Documentation/devicetree/clk/sunxi.txt for clock devices
 - see Documentation/devicetree/reset/allwinner,sunxi-clock-reset.txt for reset
   controller devices


Example:

	prcm: prcm@01f01400 {
		compatible = "allwinner,sun6i-a31-prcm";
		reg = <0x01f01400 0x200>;

		/* Put subdevices here */
		ar100: ar100_clk {
			compatible = "allwinner,sun6i-a31-ar100-clk";
			#clock-cells = <0>;
			clocks = <&osc32k>, <&osc24M>, <&pll6>, <&pll6>;
		};

		ahb0: ahb0_clk {
			compatible = "fixed-factor-clock";
			#clock-cells = <0>;
			clock-div = <1>;
			clock-mult = <1>;
			clocks = <&ar100_div>;
			clock-output-names = "ahb0";
		};

		apb0: apb0_clk {
			compatible = "allwinner,sun6i-a31-apb0-clk";
			#clock-cells = <0>;
			clocks = <&ahb0>;
			clock-output-names = "apb0";
		};

		apb0_gates: apb0_gates_clk {
			compatible = "allwinner,sun6i-a31-apb0-gates-clk";
			#clock-cells = <1>;
			clocks = <&apb0>;
			clock-output-names = "apb0_pio", "apb0_ir",
					"apb0_timer01", "apb0_p2wi",
					"apb0_uart", "apb0_1wire",
					"apb0_i2c";
		};

		apb0_rst: apb0_rst {
			compatible = "allwinner,sun6i-a31-clock-reset";
			#reset-cells = <1>;
		};
	};
+19 −0
Original line number Diff line number Diff line
* Device tree bindings for Texas Instruments keystone device state control

The Keystone II devices have a set of registers that are used to control
the status of its peripherals. This node is intended to allow access to
this functionality.

Required properties:

- compatible:		"ti,keystone-devctrl", "syscon"

- reg:			contains offset/length value for device state control
			registers space.

Example:

devctrl: device-state-control@0x02620000 {
	compatible = "ti,keystone-devctrl", "syscon";
	reg = <0x02620000 0x1000>;
};
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ Required properties:

Optional properties, nodes:
- enable-active-high: To power on the twl6040 during boot.
- clocks: phandle to the clk32k clock provider
- clock-names: Must be "clk32k"

Vibra functionality
Required properties:
+5 −13
Original line number Diff line number Diff line
@@ -23,7 +23,8 @@
enum { REG_RE, REG_FE, REG_IE };

#define CACHE_NR_REGS	3
#define CACHE_NR_BANKS	(STMPE_NR_GPIOS / 8)
/* No variant has more than 24 GPIOs */
#define CACHE_NR_BANKS	(24 / 8)

struct stmpe_gpio {
	struct gpio_chip chip;
@@ -31,8 +32,6 @@ struct stmpe_gpio {
	struct device *dev;
	struct mutex irq_lock;
	struct irq_domain *domain;

	int irq_base;
	unsigned norequest_mask;

	/* Caches of interrupt control registers for bus_lock */
@@ -311,13 +310,8 @@ static const struct irq_domain_ops stmpe_gpio_irq_simple_ops = {
static int stmpe_gpio_irq_init(struct stmpe_gpio *stmpe_gpio,
		struct device_node *np)
{
	int base = 0;

	if (!np)
		base = stmpe_gpio->irq_base;

	stmpe_gpio->domain = irq_domain_add_simple(np,
				stmpe_gpio->chip.ngpio, base,
				stmpe_gpio->chip.ngpio, 0,
				&stmpe_gpio_irq_simple_ops, stmpe_gpio);
	if (!stmpe_gpio->domain) {
		dev_err(stmpe_gpio->dev, "failed to create irqdomain\n");
@@ -354,7 +348,7 @@ static int stmpe_gpio_probe(struct platform_device *pdev)
#ifdef CONFIG_OF
	stmpe_gpio->chip.of_node = np;
#endif
	stmpe_gpio->chip.base = pdata ? pdata->gpio_base : -1;
	stmpe_gpio->chip.base = -1;

	if (pdata)
		stmpe_gpio->norequest_mask = pdata->norequest_mask;
@@ -362,9 +356,7 @@ static int stmpe_gpio_probe(struct platform_device *pdev)
		of_property_read_u32(np, "st,norequest-mask",
				&stmpe_gpio->norequest_mask);

	if (irq >= 0)
		stmpe_gpio->irq_base = stmpe->irq_base + STMPE_INT_GPIO(0);
	else
	if (irq < 0)
		dev_info(&pdev->dev,
			"device configured in no-irq mode; "
			"irqs are not available\n");
Loading