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

Commit 8de4651a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull MFD (multi-function device) updates from Samuel Ortiz:
 "For the 3.12 merge window we have one new driver for the DA9063 PMIC
  from Dialog Semiconductor.

  Besides that driver we also have:

   - Device tree support for the s2mps11 driver

   - More devm_* conversion for the pm8921, max89xx, menelaus, tps65010,
     wl1273 and pcf50633-adc drivers.

   - A conversion to threaded IRQ and IRQ domain for the twl6030 driver.

   - A fairly big update for the rtsx driver: Better power saving
     support, better vendor settings handling, and a few fixes.

   - Support for a couple more boards (COMe-bHL6 and COMe-cTH6) for the
     Kontron driver.

   - A conversion to the dev_get_platdata() API for all MFD drivers.

   - A removal of non-DT (legacy) support for the twl6040 driver.

   - A few fixes and additions (Mic detect level) to the wm5110 register
     tables.

   - Regmap support for the davinci_voicecodec driver.

   - The usual bunch of minor cleanups and janitorial fixes"

* tag 'mfd-3.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next: (81 commits)
  mfd: ucb1x00-core: Rewrite ucb1x00_add_dev()
  mfd: ab8500-debugfs: Apply a check for -ENOMEM after allocating memory for event name
  mfd: ab8500-debugfs: Apply a check for -ENOMEM after allocating memory for sysfs
  mfd: timberdale: Use module_pci_driver
  mfd: timberdale: Remove redundant break
  mfd: timberdale: Staticize local variables
  mfd: ab8500-debugfs: Staticize local variables
  mfd: db8500-prcmu: Staticize clk_mgt
  mfd: db8500-prcmu: Use ANSI function declaration
  mfd: omap-usb-host: Staticize usbhs_driver_name
  mfd: 88pm805: Fix potential NULL pdata dereference
  mfd: 88pm800: Fix potential NULL pdata dereference
  mfd: twl6040: Use regmap for register cache
  mfd: davinci_voicecodec: Provide a regmap for register I/O
  mfd: davinci_voicecodec: Remove unused read and write functions
  mmc: memstick: rtsx: Modify copyright comments
  mmc: rtsx: Clear SD_CLK toggle enable bit if switching voltage fail
  mfd: mmc: rtsx: Change default tx phase
  mfd: pcf50633-adc: Use devm_*() functions
  mfd: rtsx: Copyright modifications
  ...
parents 327fff3e 9c31e884
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ twl6035 (palmas)
twl6037 (palmas)
tps65913 (palmas)
tps65914 (palmas)
tps659038

Required properties:
- compatible : Should be from the list
@@ -14,6 +15,7 @@ Required properties:
  ti,tps65913
  ti,tps65914
  ti,tps80036
  ti,tps659038
and also the generic series names
  ti,palmas
- interrupt-controller : palmas has its own internal IRQs
+109 −0
Original line number Diff line number Diff line

* Samsung S2MPS11 Voltage and Current Regulator

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

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

Optional properties:
- interrupt-parent: Specifies the phandle of the interrupt controller to which
  the interrupts from s2mps11 are delivered to.
- interrupts: Interrupt specifiers for interrupt sources.

Optional nodes:
- clocks: s2mps11 provides 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]
  - #clock-cells: should be 1.

  - The following is the list of clocks generated by the controller. Each clock
    is assigned an identifier and client nodes use this identifier to specify
    the clock which they consume.
    Clock               ID
    ----------------------
    32KhzAP		0
    32KhzCP		1
    32KhzBT		2

- regulators: The regulators of s2mps11 that have to be instantiated should be
included in a sub-node named 'regulators'. Regulator nodes included in this
sub-node should be of the format as listed below.

	regulator_name {
		[standard regulator constraints....];
	};

 regulator-ramp-delay for BUCKs = [6250/12500/25000(default)/50000] uV/us

 BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explictly
 regulator-ramp-delay = <0> can be used for them to disable ramp delay.
 In absence of regulator-ramp-delay property, default ramp delay will be used.

NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set
for a particular group of BUCKs. So provide same regulator-ramp-delay<value>.
Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6],
BUCK[3, 4], and BUCK[7, 8, 10]

The regulator constraints inside the regulator nodes use the standard regulator
bindings which are documented elsewhere.

The following are the names of the regulators that the s2mps11 pmic block
supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
as per the datasheet of s2mps11.

	- LDOn
		  - valid values for n are 1 to 28
		  - Example: LDO0, LD01, LDO28
	- BUCKn
		  - valid values for n are 1 to 9.
		  - Example: BUCK1, BUCK2, BUCK9

Example:

	s2mps11_pmic@66 {
		compatible = "samsung,s2mps11-pmic";
		reg = <0x66>;

		s2m_osc: clocks{
			#clock-cells = 1;
			clock-output-names = "xx", "yy", "zz";
		};

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ABB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			buck2_reg: BUCK2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
				regulator-ramp-delay = <50000>;
			};
		};
	};
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ Optional nodes:
	       ti,smps-range - OTP has the wrong range set for the hardware so override
	       0 - low range, 1 - high range.

- ti,system-power-controller: Telling whether or not this pmic is controlling
			      the system power.

Example:

#include <dt-bindings/interrupt-controller/irq.h>
@@ -48,6 +51,8 @@ pmic {

	ti,ldo6-vibrator;

	ti,system-power-controller;

	regulators {
		smps12_reg : smps12 {
			regulator-name = "smps12";
+1 −2
Original line number Diff line number Diff line
/* Realtek PCI-Express Memstick Card Interface driver
 *
 * Copyright(c) 2009 Realtek Semiconductor Corp. All rights reserved.
 * Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
@@ -17,7 +17,6 @@
 *
 * Author:
 *   Wei WANG <wei_wang@realsil.com.cn>
 *   No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China
 */

#include <linux/module.h>
+7 −5
Original line number Diff line number Diff line
@@ -333,9 +333,11 @@ static int device_rtc_init(struct pm80x_chip *chip,
{
	int ret;

	if (pdata) {
		rtc_devs[0].platform_data = pdata->rtc;
		rtc_devs[0].pdata_size =
				pdata->rtc ? sizeof(struct pm80x_rtc_pdata) : 0;
	}
	ret = mfd_add_devices(chip->dev, 0, &rtc_devs[0],
			      ARRAY_SIZE(rtc_devs), NULL, 0, NULL);
	if (ret) {
@@ -541,7 +543,7 @@ static int pm800_probe(struct i2c_client *client,
{
	int ret = 0;
	struct pm80x_chip *chip;
	struct pm80x_platform_data *pdata = client->dev.platform_data;
	struct pm80x_platform_data *pdata = dev_get_platdata(&client->dev);
	struct pm80x_subchip *subchip;

	ret = pm80x_init(client);
@@ -578,7 +580,7 @@ static int pm800_probe(struct i2c_client *client,
		goto err_device_init;
	}

	if (pdata->plat_config)
	if (pdata && pdata->plat_config)
		pdata->plat_config(chip, pdata);

	return 0;
Loading