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

Commit d7ab7302 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull MFD update from Samuel Ortiz:
 "For 3.10 we have a few new MFD drivers for:

   - The ChromeOS embedded controller which provides keyboard, battery
     and power management services.  This controller is accessible
     through i2c or SPI.

   - Silicon Laboratories 476x controller, providing access to their FM
     chipset and their audio codec.

   - Realtek's RTS5249, a memory stick, MMC and SD/SDIO PCI based
     reader.

   - Nokia's Tahvo power button and watchdog device.  This device is
     very similar to Retu and is thus supported by the same code base.

   - STMicroelectronics STMPE1801, a keyboard and GPIO controller
     supported by the stmpe driver.

   - ST-Ericsson AB8540 and AB8505 power management and voltage
     converter controllers through the existing ab8500 code.

  Some other drivers got cleaned up or improved.  In particular:

   - The Linaro/STE guys got the ab8500 driver in sync with their
     internal code through a series of optimizations, fixes and
     improvements.

   - The AS3711 and OMAP USB drivers now have DT support.

   - The arizona clock and interrupt handling code got improved.

   - The wm5102 register patch and boot mechanism also got improved."

* tag 'mfd-3.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next: (104 commits)
  mfd: si476x: Don't use 0bNNN
  mfd: vexpress: Handle pending config transactions
  mfd: ab8500: Export ab8500_gpadc_sw_hw_convert properly
  mfd: si476x: Fix i2c warning
  mfd: si476x: Add header files and Kbuild plumbing
  mfd: si476x: Add chip properties handling code
  mfd: si476x: Add the bulk of the core driver
  mfd: si476x: Add commands abstraction layer
  mfd: rtsx: Support RTS5249
  mfd: retu: Add Tahvo support
  mfd: ucb1400: Pass ucb1400-gpio data through ac97 bus
  mfd: wm8994: Add some OF properties
  mfd: wm8994: Add device ID data to WM8994 OF device IDs
  input: Export matrix_keypad_parse_of_params()
  mfd: tps65090: Add compatible string for charger subnode
  mfd: db8500-prcmu: Support platform dependant device selection
  mfd: syscon: Fix warnings when printing resource_size_t
  of: Add stub of_get_parent for non-OF builds
  mfd: omap-usb-tll: Convert to devm_ioremap_resource()
  mfd: omap-usb-host: Convert to devm_ioremap_resource()
  ...
parents 01227a88 99f4c6b6
Loading
Loading
Loading
Loading
+72 −0
Original line number Diff line number Diff line
ChromeOS EC Keyboard

Google's ChromeOS EC Keyboard is a simple matrix keyboard implemented on
a separate EC (Embedded Controller) device. It provides a message for reading
key scans from the EC. These are then converted into keycodes for processing
by the kernel.

This binding is based on matrix-keymap.txt and extends/modifies it as follows:

Required properties:
- compatible: "google,cros-ec-keyb"

Optional properties:
- google,needs-ghost-filter: True to enable a ghost filter for the matrix
keyboard. This is recommended if the EC does not have its own logic or
hardware for this.


Example:

cros-ec-keyb {
	compatible = "google,cros-ec-keyb";
	keypad,num-rows = <8>;
	keypad,num-columns = <13>;
	google,needs-ghost-filter;
	/*
	 * Keymap entries take the form of 0xRRCCKKKK where
	 * RR=Row CC=Column KKKK=Key Code
	 * The values below are for a US keyboard layout and
	 * are taken from the Linux driver. Note that the
	 * 102ND key is not used for US keyboards.
	 */
	linux,keymap = <
		/* CAPSLCK F1         B          F10     */
		0x0001003a 0x0002003b 0x00030030 0x00040044
		/* N       =          R_ALT      ESC     */
		0x00060031 0x0008000d 0x000a0064 0x01010001
		/* F4      G          F7         H       */
		0x0102003e 0x01030022 0x01040041 0x01060023
		/* '       F9         BKSPACE    L_CTRL  */
		0x01080028 0x01090043 0x010b000e 0x0200001d
		/* TAB     F3         T          F6      */
		0x0201000f 0x0202003d 0x02030014 0x02040040
		/* ]       Y          102ND      [       */
		0x0205001b 0x02060015 0x02070056 0x0208001a
		/* F8      GRAVE      F2         5       */
		0x02090042 0x03010029 0x0302003c 0x03030006
		/* F5      6          -          \       */
		0x0304003f 0x03060007 0x0308000c 0x030b002b
		/* R_CTRL  A          D          F       */
		0x04000061 0x0401001e 0x04020020 0x04030021
		/* S       K          J          ;       */
		0x0404001f 0x04050025 0x04060024 0x04080027
		/* L       ENTER      Z          C       */
		0x04090026 0x040b001c 0x0501002c 0x0502002e
		/* V       X          ,          M       */
		0x0503002f 0x0504002d 0x05050033 0x05060032
		/* L_SHIFT /          .          SPACE   */
		0x0507002a 0x05080035 0x05090034 0x050B0039
		/* 1       3          4          2       */
		0x06010002 0x06020004 0x06030005 0x06040003
		/* 8       7          0          9       */
		0x06050009 0x06060008 0x0608000b 0x0609000a
		/* L_ALT   DOWN       RIGHT      Q       */
		0x060a0038 0x060b006c 0x060c006a 0x07010010
		/* E       R          W          I       */
		0x07020012 0x07030013 0x07040011 0x07050017
		/* U       R_SHIFT    P          O       */
		0x07060016 0x07070036 0x07080019 0x07090018
		/* UP      LEFT    */
		0x070b0067 0x070c0069>;
};
+73 −0
Original line number Diff line number Diff line
AS3711 is an I2C PMIC from Austria MicroSystems with multiple DCDC and LDO power
supplies, a battery charger and an RTC. So far only bindings for the two stepup
DCDC converters are defined. Other DCDC and LDO supplies are configured, using
standard regulator properties, they must belong to a sub-node, called
"regulators" and be called "sd1" to "sd4" and "ldo1" to "ldo8." Stepup converter
configuration should be placed in a subnode, called "backlight."

Compulsory properties:
- compatible		: must be "ams,as3711"
- reg			: specifies the I2C address

To use the SU1 converter as a backlight source the following two properties must
be provided:
- su1-dev		: framebuffer phandle
- su1-max-uA		: maximum current

To use the SU2 converter as a backlight source the following two properties must
be provided:
- su2-dev		: framebuffer phandle
- su1-max-uA		: maximum current

Additionally one of these properties must be provided to select the type of
feedback used:
- su2-feedback-voltage	: voltage feedback is used
- su2-feedback-curr1	: CURR1 input used for current feedback
- su2-feedback-curr2	: CURR2 input used for current feedback
- su2-feedback-curr3	: CURR3 input used for current feedback
- su2-feedback-curr-auto: automatic current feedback selection

and one of these to select the over-voltage protection pin
- su2-fbprot-lx-sd4	: LX_SD4 is used for over-voltage protection
- su2-fbprot-gpio2	: GPIO2 is used for over-voltage protection
- su2-fbprot-gpio3	: GPIO3 is used for over-voltage protection
- su2-fbprot-gpio4	: GPIO4 is used for over-voltage protection

If "su2-feedback-curr-auto" is selected, one or more of the following properties
have to be specified:
- su2-auto-curr1	: use CURR1 input for current feedback
- su2-auto-curr2	: use CURR2 input for current feedback
- su2-auto-curr3	: use CURR3 input for current feedback

Example:

as3711@40 {
	compatible = "ams,as3711";
	reg = <0x40>;

	regulators {
		sd4 {
			regulator-name = "1.215V";
			regulator-min-microvolt = <1215000>;
			regulator-max-microvolt = <1235000>;
		};
		ldo2 {
			regulator-name = "2.8V CPU";
			regulator-min-microvolt = <2800000>;
			regulator-max-microvolt = <2800000>;
			regulator-always-on;
			regulator-boot-on;
		};
	};

	backlight {
		compatible = "ams,as3711-bl";
		su2-dev = <&lcdc>;
		su2-max-uA = <36000>;
		su2-feedback-curr-auto;
		su2-fbprot-gpio4;
		su2-auto-curr1;
		su2-auto-curr2;
		su2-auto-curr3;
	};
};
+56 −0
Original line number Diff line number Diff line
ChromeOS Embedded Controller

Google's ChromeOS EC is a Cortex-M device which talks to the AP and
implements various function such as keyboard and battery charging.

The EC can be connect through various means (I2C, SPI, LPC) and the
compatible string used depends on the inteface. Each connection method has
its own driver which connects to the top level interface-agnostic EC driver.
Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
the top-level driver.

Required properties (I2C):
- compatible: "google,cros-ec-i2c"
- reg: I2C slave address

Required properties (SPI):
- compatible: "google,cros-ec-spi"
- reg: SPI chip select

Required properties (LPC):
- compatible: "google,cros-ec-lpc"
- reg: List of (IO address, size) pairs defining the interface uses


Example for I2C:

i2c@12CA0000 {
	cros-ec@1e {
		reg = <0x1e>;
		compatible = "google,cros-ec-i2c";
		interrupts = <14 0>;
		interrupt-parent = <&wakeup_eint>;
		wakeup-source;
	};


Example for SPI:

spi@131b0000 {
	ec@0 {
		compatible = "google,cros-ec-spi";
		reg = <0x0>;
		interrupts = <14 0>;
		interrupt-parent = <&wakeup_eint>;
		wakeup-source;
		spi-max-frequency = <5000000>;
		controller-data {
		cs-gpio = <&gpf0 3 4 3 0>;
		samsung,spi-cs;
		samsung,spi-feedback-delay = <2>;
		};
	};
};


Example for LPC is not supplied as it is not yet implemented.
+80 −0
Original line number Diff line number Diff line
OMAP HS USB Host

Required properties:

- compatible: should be "ti,usbhs-host"
- reg: should contain one register range i.e. start and length
- ti,hwmods: must contain "usb_host_hs"

Optional properties:

- num-ports: number of USB ports. Usually this is automatically detected
  from the IP's revision register but can be overridden by specifying
  this property. A maximum of 3 ports are supported at the moment.

- portN-mode: String specifying the port mode for port N, where N can be
  from 1 to 3. If the port mode is not specified, that port is treated
  as unused. When specified, it must be one of the following.
	"ehci-phy",
        "ehci-tll",
        "ehci-hsic",
        "ohci-phy-6pin-datse0",
        "ohci-phy-6pin-dpdm",
        "ohci-phy-3pin-datse0",
        "ohci-phy-4pin-dpdm",
        "ohci-tll-6pin-datse0",
        "ohci-tll-6pin-dpdm",
        "ohci-tll-3pin-datse0",
        "ohci-tll-4pin-dpdm",
        "ohci-tll-2pin-datse0",
        "ohci-tll-2pin-dpdm",

- single-ulpi-bypass: Must be present if the controller contains a single
  ULPI bypass control bit. e.g. OMAP3 silicon <= ES2.1

Required properties if child node exists:

- #address-cells: Must be 1
- #size-cells: Must be 1
- ranges: must be present

Properties for children:

The OMAP HS USB Host subsystem contains EHCI and OHCI controllers.
See Documentation/devicetree/bindings/usb/omap-ehci.txt and
omap3-ohci.txt

Example for OMAP4:

usbhshost: usbhshost@4a064000 {
	compatible = "ti,usbhs-host";
	reg = <0x4a064000 0x800>;
	ti,hwmods = "usb_host_hs";
	#address-cells = <1>;
	#size-cells = <1>;
	ranges;

	usbhsohci: ohci@4a064800 {
		compatible = "ti,ohci-omap3", "usb-ohci";
		reg = <0x4a064800 0x400>;
		interrupt-parent = <&gic>;
		interrupts = <0 76 0x4>;
	};

	usbhsehci: ehci@4a064c00 {
		compatible = "ti,ehci-omap", "usb-ehci";
		reg = <0x4a064c00 0x400>;
		interrupt-parent = <&gic>;
		interrupts = <0 77 0x4>;
	};
};

&usbhshost {
	port1-mode = "ehci-phy";
	port2-mode = "ehci-tll";
	port3-mode = "ehci-phy";
};

&usbhsehci {
	phys = <&hsusb1_phy 0 &hsusb3_phy>;
};
+17 −0
Original line number Diff line number Diff line
OMAP HS USB Host TLL (Transceiver-Less Interface)

Required properties:

- compatible : should be "ti,usbhs-tll"
- reg : should contain one register range i.e. start and length
- interrupts : should contain the TLL module's interrupt
- ti,hwmod : must contain "usb_tll_hs"

Example:

	usbhstll: usbhstll@4a062000 {
		compatible = "ti,usbhs-tll";
		reg = <0x4a062000 0x1000>;
		interrupts = <78>;
		ti,hwmods = "usb_tll_hs";
	  };
Loading