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

Commit 3a7dbed7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull MFD updates from Lee Jones:
 "Changes to the core:
   - Honour PLATFORM_DEVID_NONE and PLATFORM_DEVID_AUTO dev IDs

  Changes to existing drivers:
   - IRQ additions/fixes; axp20x, da9063-core
   - Code simplification; i2c-dln2
   - Regmap additions/fixes; max77693
   - Error checking/handling improvements; dln2, db8500-prcmu
   - Bug fixes; dln2, wm8350-core
   - DT support/documentation; max77693, max77686, tps65217, twl4030-power,
                               gpio-tc3589x
   - Decouple syscon interface from platform devices
   - Use MFD hotplug registration; rtsx_usb, viperboard, hid-sensor-hub
   - Regulator fixups; sec-core
   - Power Management additions/fixes; rts5227, tc6393xb
   - Remove relic/redundant code; ab8500-sysctrl, lpc_sch, max77693-private
   - Clean-up/coding style changes; tps65090
   - Clk additions/fixes; tc6393xb, tc6387xb, t7l66xb
   - Add USB-SPI support; dln2
   - Trivial changes; max14577, arizona-spi, lpc_sch, wm8997-tables, wm5102-tables
                      wm5110-tables, axp20x, atmel-hlcdc, rtsx_pci

  New drivers/supported devices:
   - axp288 PMIC support added to axp20x
   - s2mps13 support added to sec-core
   - New support for Diolan DLN-2
   - New support for atmel-hlcdc"

* tag 'mfd-for-linus-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (55 commits)
  mfd: rtsx: Add func to split u32 into register
  mfd: atmel-hlcdc: Add Kconfig option description and name
  mfd: da9063: Get irq base dynamically before registering device
  mfd: max14577: Fix obvious typo in company name in copyright
  mfd: axp20x: Constify axp20x_acpi_match and rid unused warning
  mfd: t7l66xb: prepare/unprepare clocks
  mfd: tc6387xb: prepare/unprepare clocks
  mfd: dln2: add support for USB-SPI module
  mfd: wm5110: Add missing registers for AIF2 channels 3-6
  mfd: tc3589x: get rid of static base
  mfd: arizona: Document HP_CTRL_1L and HP_CTRL_1R registers
  mfd: wm8997: Mark INTERRUPT_STATUS_2_MASK as readable
  mfd: tc6393xb: Prepare/unprepare clocks
  mfd: tps65090: Fix bonkers indenting strategy
  mfd: tc6393xb: Fail ohci suspend if full state restore is required
  mfd: lpc_sch: Don't call mfd_remove_devices()
  mfd: wm8350-core: Fix probable mask then right shift defect
  mfd: ab8500-sysctrl: Drop ab8500_restart
  mfd: db8500-prcmu: Provide sane error path values
  mfd: db8500-prcmu: Check return of devm_ioremap for error
  ...
parents f2fb3804 a3b63979
Loading
Loading
Loading
Loading
+51 −0
Original line number Diff line number Diff line
Device-Tree bindings for Atmel's HLCDC (High LCD Controller) MFD driver

Required properties:
 - compatible: value should be one of the following:
   "atmel,sama5d3-hlcdc"
 - reg: base address and size of the HLCDC device registers.
 - clock-names: the name of the 3 clocks requested by the HLCDC device.
   Should contain "periph_clk", "sys_clk" and "slow_clk".
 - clocks: should contain the 3 clocks requested by the HLCDC device.
 - interrupts: should contain the description of the HLCDC interrupt line

The HLCDC IP exposes two subdevices:
 - a PWM chip: see ../pwm/atmel-hlcdc-pwm.txt
 - a Display Controller: see ../drm/atmel-hlcdc-dc.txt

Example:

	hlcdc: hlcdc@f0030000 {
		compatible = "atmel,sama5d3-hlcdc";
		reg = <0xf0030000 0x2000>;
		clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
		clock-names = "periph_clk","sys_clk", "slow_clk";
		interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
		status = "disabled";

		hlcdc-display-controller {
			compatible = "atmel,hlcdc-display-controller";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0>;

				hlcdc_panel_output: endpoint@0 {
					reg = <0>;
					remote-endpoint = <&panel_input>;
				};
			};
		};

		hlcdc_pwm: hlcdc-pwm {
			compatible = "atmel,hlcdc-pwm";
			pinctrl-names = "default";
			pinctrl-0 = <&pinctrl_lcd_pwm>;
			#pwm-cells = <3>;
		};
	};
+6 −0
Original line number Diff line number Diff line
@@ -34,6 +34,12 @@ to get matched with their hardware counterparts as follow:
	-BUCKn 	:	for BUCKs, where n can lie in range 1 to 9.
			example: BUCK1, BUCK5, BUCK9.

  Regulators which can be turned off during system suspend:
	-LDOn	:	2, 6-8, 10-12, 14-16,
	-BUCKn	:	1-4.
  Use standard regulator bindings for it ('regulator-off-in-suspend').


Example:

	max77686@09 {
+21 −0
Original line number Diff line number Diff line
@@ -27,6 +27,20 @@ Optional properties:

	[*] refer Documentation/devicetree/bindings/regulator/regulator.txt

- haptic : The MAX77693 haptic device utilises a PWM controlled motor to provide
  users with tactile feedback. PWM period and duty-cycle are varied in
  order to provide the approprite level of feedback.

 Required properties:
	- compatible : Must be "maxim,max77693-hpatic"
	- haptic-supply : power supply for the haptic motor
	[*] refer Documentation/devicetree/bindings/regulator/regulator.txt
	- pwms : phandle to the physical PWM(Pulse Width Modulation) device.
	 PWM properties should be named "pwms". And number of cell is different
	 for each pwm device.
	 To get more informations, please refer to documentaion.
	[*] refer Documentation/devicetree/bindings/pwm/pwm.txt

Example:
	max77693@66 {
		compatible = "maxim,max77693";
@@ -52,4 +66,11 @@ Example:
					regulator-boot-on;
			};
		};

		haptic {
			compatible = "maxim,max77693-haptic";
			haptic-supply = <&haptic_supply>;
			pwms = <&pwm 0 40000 0>;
			pwm-names = "haptic";
		};
	};
+12 −10
Original line number Diff line number Diff line

* Samsung S2MPS11, S2MPS14 and S2MPU02 Voltage and Current Regulator
* Samsung S2MPS11, S2MPS13, S2MPS14 and S2MPU02 Voltage and Current Regulator

The Samsung S2MPS11 is a multi-function device which includes voltage and
current regulators, RTC, charger controller and other sub-blocks. It is
@@ -7,8 +7,8 @@ interfaced to the host controller using an I2C interface. Each sub-block is
addressed by the host system using different I2C slave addresses.

Required properties:
- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic"
              or "samsung,s2mpu02-pmic".
- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps13-pmic"
	      or "samsung,s2mps14-pmic" or "samsung,s2mpu02-pmic".
- reg: Specifies the I2C slave address of the pmic block. It should be 0x66.

Optional properties:
@@ -17,8 +17,8 @@ Optional properties:
- interrupts: Interrupt specifiers for interrupt sources.

Optional nodes:
- clocks: s2mps11 and s5m8767 provide three(AP/CP/BT) buffered 32.768 KHz
  outputs, so to register these as clocks with common clock framework
- clocks: s2mps11, s2mps13 and s5m8767 provide three(AP/CP/BT) buffered 32.768
  KHz outputs, so to register these as clocks with common clock framework
  instantiate a sub-node named "clocks". It uses the common clock binding
  documented in :
  [Documentation/devicetree/bindings/clock/clock-bindings.txt]
@@ -30,12 +30,12 @@ Optional nodes:
    the clock which they consume.
    Clock               ID           Devices
    ----------------------------------------------------------
    32KhzAP		0            S2MPS11, S2MPS14, S5M8767
    32KhzCP		1            S2MPS11, S5M8767
    32KhzBT		2            S2MPS11, S2MPS14, S5M8767
    32KhzAP		0            S2MPS11, S2MPS13, S2MPS14, S5M8767
    32KhzCP		1            S2MPS11, S2MPS13, S5M8767
    32KhzBT		2            S2MPS11, S2MPS13, S2MPS14, S5M8767

  - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps14-clk",
		"samsung,s5m8767-clk"
  - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps13-clk",
		"samsung,s2mps14-clk", "samsung,s5m8767-clk"

- regulators: The regulators of s2mps11 that have to be instantiated should be
included in a sub-node named 'regulators'. Regulator nodes included in this
@@ -81,12 +81,14 @@ as per the datasheet of s2mps11.
	- LDOn
		  - valid values for n are:
			- S2MPS11: 1 to 38
			- S2MPS13: 1 to 40
			- S2MPS14: 1 to 25
			- S2MPU02: 1 to 28
		  - Example: LDO1, LDO2, LDO28
	- BUCKn
		  - valid values for n are:
			- S2MPS11: 1 to 10
			- S2MPS13: 1 to 10
			- S2MPS14: 1 to 5
			- S2MPU02: 1 to 7
		  - Example: BUCK1, BUCK2, BUCK9
+24 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include <linux/clk-provider.h>
#include <linux/platform_device.h>
#include <linux/mfd/samsung/s2mps11.h>
#include <linux/mfd/samsung/s2mps13.h>
#include <linux/mfd/samsung/s2mps14.h>
#include <linux/mfd/samsung/s5m8767.h>
#include <linux/mfd/samsung/core.h>
@@ -120,6 +121,24 @@ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = {
	},
};

static struct clk_init_data s2mps13_clks_init[S2MPS11_CLKS_NUM] = {
	[S2MPS11_CLK_AP] = {
		.name = "s2mps13_ap",
		.ops = &s2mps11_clk_ops,
		.flags = CLK_IS_ROOT,
	},
	[S2MPS11_CLK_CP] = {
		.name = "s2mps13_cp",
		.ops = &s2mps11_clk_ops,
		.flags = CLK_IS_ROOT,
	},
	[S2MPS11_CLK_BT] = {
		.name = "s2mps13_bt",
		.ops = &s2mps11_clk_ops,
		.flags = CLK_IS_ROOT,
	},
};

static struct clk_init_data s2mps14_clks_init[S2MPS11_CLKS_NUM] = {
	[S2MPS11_CLK_AP] = {
		.name = "s2mps14_ap",
@@ -184,6 +203,10 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
		s2mps11_reg = S2MPS11_REG_RTC_CTRL;
		clks_init = s2mps11_clks_init;
		break;
	case S2MPS13X:
		s2mps11_reg = S2MPS13_REG_RTCCTRL;
		clks_init = s2mps13_clks_init;
		break;
	case S2MPS14X:
		s2mps11_reg = S2MPS14_REG_RTCCTRL;
		clks_init = s2mps14_clks_init;
@@ -279,6 +302,7 @@ static int s2mps11_clk_remove(struct platform_device *pdev)

static const struct platform_device_id s2mps11_clk_id[] = {
	{ "s2mps11-clk", S2MPS11X},
	{ "s2mps13-clk", S2MPS13X},
	{ "s2mps14-clk", S2MPS14X},
	{ "s5m8767-clk", S5M8767X},
	{ },
Loading