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

Commit 89a7117d authored by Ivan T. Ivanov's avatar Ivan T. Ivanov Committed by Linus Walleij
Browse files

pinctrl: Device tree bindings for Qualcomm PMIC MPP block



DeviceTree binding documentation for Qualcomm SPMI PMIC MPP
pinctrl drivers.

Signed-off-by: default avatarIvan T. Ivanov <iivanov@mm-sol.com>
Acked-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 43059f6b
Loading
Loading
Loading
Loading
+162 −0
Original line number Diff line number Diff line
Qualcomm PMIC Multi-Purpose Pin (MPP) block

This binding describes the MPP block(s) found in the 8xxx series
of PMIC's from Qualcomm.

- compatible:
	Usage: required
	Value type: <string>
	Definition: Should contain one of:
		    "qcom,pm8841-mpp",
		    "qcom,pm8941-mpp",
		    "qcom,pma8084-mpp",

- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Register base of the MPP block and length.

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Must contain an array of encoded interrupt specifiers for
		    each available MPP

- gpio-controller:
	Usage: required
	Value type: <none>
	Definition: Mark the device node as a GPIO controller

- #gpio-cells:
	Usage: required
	Value type: <u32>
	Definition: Must be 2;
		    the first cell will be used to define MPP number and the
		    second denotes the flags for this MPP

Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
a general description of GPIO and interrupt bindings.

Please refer to pinctrl-bindings.txt in this directory for details of the
common pinctrl bindings used by client devices, including the meaning of the
phrase "pin configuration node".

The pin configuration nodes act as a container for an arbitrary number of
subnodes. Each of these subnodes represents some desired configuration for a
pin or a list of pins. This configuration can include the
mux function to select on those pin(s), and various pin configuration
parameters, as listed below.

SUBNODES:

The name of each subnode is not important; all subnodes should be enumerated
and processed purely based on their content.

Each subnode only affects those parameters that are explicitly listed. In
other words, a subnode that lists a mux function but no pin configuration
parameters implies no information about any pin configuration parameters.
Similarly, a pin subnode that describes a pullup parameter implies no
information about e.g. the mux function.

The following generic properties as defined in pinctrl-bindings.txt are valid
to specify in a pin configuration subnode:

- pins:
	Usage: required
	Value type: <string-array>
	Definition: List of MPP pins affected by the properties specified in
		    this subnode.  Valid pins are:
		    mpp1-mpp4 for pm8841
		    mpp1-mpp8 for pm8941
		    mpp1-mpp4 for pma8084

- function:
	Usage: required
	Value type: <string>
	Definition: Specify the alternative function to be configured for the
		    specified pins.  Valid values are:
		    "normal",
		    "paired",
		    "dtest1",
		    "dtest2",
		    "dtest3",
		    "dtest4"

- bias-disable:
	Usage: optional
	Value type: <none>
	Definition: The specified pins should be configured as no pull.

- bias-pull-up:
	Usage: optional
	Value type: <u32>
	Definition: The specified pins should be configured as pull up.
		    Valid values are 600, 10000 and 30000 in bidirectional mode
		    only, i.e. when operating in qcom,analog-mode and input and
		    outputs are enabled. The hardware ignores the configuration
		    when operating in other modes.

- bias-high-impedance:
	Usage: optional
	Value type: <none>
	Definition: The specified pins will put in high-Z mode and disabled.

- input-enable:
	Usage: optional
	Value type: <none>
	Definition: The specified pins are put in input mode, i.e. their input
		    buffer is enabled

- output-high:
	Usage: optional
	Value type: <none>
	Definition: The specified pins are configured in output mode, driven
		    high.

- output-low:
	Usage: optional
	Value type: <none>
	Definition: The specified pins are configured in output mode, driven
		    low.

- power-source:
	Usage: optional
	Value type: <u32>
	Definition: Selects the power source for the specified pins. Valid power
		    sources are defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>

- qcom,analog-mode:
	Usage: optional
	Value type: <none>
	Definition: Selects Analog mode of operation: combined with input-enable
		    and/or output-high, output-low MPP could operate as
		    Bidirectional Logic, Analog Input, Analog Output.

- qcom,amux-route:
	Usage: optional
	Value type: <u32>
	Definition: Selects the source for analog input. Valid values are
		    defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>
		    PMIC_MPP_AMUX_ROUTE_CH5, PMIC_MPP_AMUX_ROUTE_CH6...

Example:

	mpps@a000 {
		compatible = "qcom,pm8841-mpp";
		reg = <0xa000>;
		gpio-controller;
		#gpio-cells = <2>;
		interrupts = <4 0xa0 0 0>, <4 0xa1 0 0>, <4 0xa2 0 0>, <4 0xa3 0 0>;

		pinctrl-names = "default";
		pinctrl-0 = <&pm8841_default>;

		pm8841_default: default {
			gpio {
				pins = "mpp1", "mpp2", "mpp3", "mpp4";
				function = "normal";
				input-enable;
				power-source = <PM8841_MPP_S3>;
			};
		};
	};
+44 −0
Original line number Diff line number Diff line
/*
 * This header provides constants for the Qualcomm PMIC's
 * Multi-Purpose Pin binding.
 */

#ifndef _DT_BINDINGS_PINCTRL_QCOM_PMIC_MPP_H
#define _DT_BINDINGS_PINCTRL_QCOM_PMIC_MPP_H

/* power-source */
#define PM8841_MPP_VPH			0
#define PM8841_MPP_S3			2

#define PM8941_MPP_VPH			0
#define PM8941_MPP_L1			1
#define PM8941_MPP_S3			2
#define PM8941_MPP_L6			3

#define PMA8084_MPP_VPH			0
#define PMA8084_MPP_L1			1
#define PMA8084_MPP_S4			2
#define PMA8084_MPP_L6			3

/*
 * Analog Input - Set the source for analog input.
 * To be used with "qcom,amux-route" property
 */
#define PMIC_MPP_AMUX_ROUTE_CH5		0
#define PMIC_MPP_AMUX_ROUTE_CH6		1
#define PMIC_MPP_AMUX_ROUTE_CH7		2
#define PMIC_MPP_AMUX_ROUTE_CH8		3
#define PMIC_MPP_AMUX_ROUTE_ABUS1	4
#define PMIC_MPP_AMUX_ROUTE_ABUS2	5
#define PMIC_MPP_AMUX_ROUTE_ABUS3	6
#define PMIC_MPP_AMUX_ROUTE_ABUS4	7

/* To be used with "function" */
#define PMIC_MPP_FUNC_NORMAL		"normal"
#define PMIC_MPP_FUNC_PAIRED		"paired"
#define PMIC_MPP_FUNC_DTEST1		"dtest1"
#define PMIC_MPP_FUNC_DTEST2		"dtest2"
#define PMIC_MPP_FUNC_DTEST3		"dtest3"
#define PMIC_MPP_FUNC_DTEST4		"dtest4"

#endif