Qualcomm Technologies, Inc. SMB138X Charger Specific Bindings

SMB138X Charger is an efficient programmable battery charger capable of charging
a high-capacity lithium-ion battery over micro-USB or USB Type-C ultrafast with
Quick Charge 2.0, Quick Charge 3.0 support. Wireless charging features full
A4WP Rezence 1.2, WPC 1.2, and PMA support.

=======================
Required Node Structure
=======================

SMB138X Charger must be described in two levels of devices nodes.

==================================
First Level Node - SMB138X Charger
==================================

Charger specific properties:
- compatible
  Usage:      required
  Value type: <string>
  Definition: String which indicates the charging mode. Can be one of the
	      following:
              Standalone/Parallel Master	- "qcom,smb138x-charger"
	      Parallel Slave			- "qcom,smb138x-parallel-slave"

- qcom,suspend-input
  Usage:      optional
  Value type: <empty>
  Definition: Boolean flag which indicates that the charger should not draw
	      current from any of its input sources (USB, DC).

- qcom,fcc-max-ua
  Usage:      optional
  Value type: <u32>
  Definition: Specifies the maximum fast charge current in micro-amps.

- qcom,usb-icl-ua
  Usage:      optional
  Value type: <u32>
  Definition: Specifies the USB input current limit in micro-amps.

- qcom,dc-icl-ua
  Usage:      optional
  Value type: <u32>
  Definition: Specifies the DC input current limit in micro-amps.

- qcom,micro-usb
  Usage:      optional
  Value type: <empty>
  Definition: Boolean flag which indicates that the connector type is micro usb.

================================================
Second Level Nodes - SMB138X Charger Peripherals
================================================

Peripheral specific properties:
- reg
  Usage:      required
  Value type: <prop-encoded-array>
  Definition: Address and size of the peripheral's register block.

- interrupts
  Usage:      required
  Value type: <prop-encoded-array>
  Definition: Peripheral interrupt specifier.

- interrupt-names
  Usage:      required
  Value type: <stringlist>
  Definition: Interrupt names.  This list must match up 1-to-1 with the
	      interrupts specified in the 'interrupts' property.

=======================================
Second Level Nodes - SMB138X Regulators
=======================================

The following regulator nodes are supported:
"qcom,smb138x-vbus"	- Regulator for enabling VBUS

- regulator-name
  Usage:      required
  Value type: <string>
  Definition: Specifies the name for this regulator.

=======
Example
=======

smb138x_charger: qcom,smb138x-charger {
	compatible = "qcom,qpnp-smb138x-charger";
	#address-cells = <1>;
	#size-cells = <1>;

	qcom,suspend-input;

	qcom,chgr@1000 {
		reg = <0x1000 0x100>;
		interrupts =    <0x10 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x10 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x10 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x10 0x3 IRQ_TYPE_EDGE_BOTH>,
				<0x10 0x4 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "chg-error",
					"chg-state-change",
					"step-chg-state-change",
					"step-chg-soc-update-fail",
					"step-chg-soc-update-request";
	};

	qcom,otg@1100 {
		reg = <0x1100 0x100>;
		interrupts =    <0x11 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x11 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x11 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x11 0x3 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "otg-fail",
					"otg-overcurrent",
					"otg-oc-dis-sw-sts",
					"testmode-change-detect";
	};

	qcom,bat-if@1200 {
		reg = <0x1200 0x100>;
		interrupts =    <0x12 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x12 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x12 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x12 0x3 IRQ_TYPE_EDGE_BOTH>,
				<0x12 0x4 IRQ_TYPE_EDGE_BOTH>,
				<0x12 0x5 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "bat-temp",
					"bat-ocp",
					"bat-ov",
					"bat-low",
					"bat-therm-or-id-missing",
					"bat-terminal-missing";
	};

	qcom,usb-chgpth@1300 {
		reg = <0x1300 0x100>;
		interrupts =    <0x13 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x3 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x4 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x5 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x6 IRQ_TYPE_EDGE_BOTH>,
				<0x13 0x7 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "usbin-collapse",
					"usbin-lt-3p6v",
					"usbin-uv",
					"usbin-ov",
					"usbin-plugin",
					"usbin-src-change",
					"usbin-icl-change",
					"type-c-change";
	};

	qcom,dc-chgpth@1400 {
		reg = <0x1400 0x100>;
		interrupts =    <0x14 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x3 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x4 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x5 IRQ_TYPE_EDGE_BOTH>,
				<0x14 0x6 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "dcin-collapse",
					"dcin-lt-3p6v",
					"dcin-uv",
					"dcin-ov",
					"dcin-plugin",
					"div2-en-dg",
					"dcin-icl-change";
	};

	qcom,chgr-misc@1600 {
		reg = <0x1600 0x100>;
		interrupts =    <0x16 0x0 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x1 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x2 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x3 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x4 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x5 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x6 IRQ_TYPE_EDGE_BOTH>,
				<0x16 0x7 IRQ_TYPE_EDGE_BOTH>;

		interrupt-names =       "wdog-snarl",
					"wdog-bark",
					"aicl-fail",
					"aicl-done",
					"high-duty-cycle",
					"input-current-limiting",
					"temperature-change",
					"switcher-power-ok";
	};
};
