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,pmic-revid
  Usage:      required
  Value type: phandle
  Definition: Should specify the phandle of SMB's
	revid module. This is used to identify
	the SMB subtype.

- qcom,parallel-mode
  Usage:      optional
  Value type: <u32>
  Definition: Specifies parallel charging mode. If not specified, MID-MID
	      option is selected by default.

- 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,charger-temp-max-mdegc
  Usage:      optional
  Value type: <u32>
  Definition: Specifies the maximum charger temperature in milli-degrees
	      Celsius. If unspecified a default of 80000 will be used.

- qcom,connector-temp-max-mdegc
  Usage:      optional
  Value type: <u32>
  Definition: Specifies the maximum connector temperature in milli-degrees
	      Celsius. If unspecified a default value of 105000 will be used.

- io-channels
  Usage:      optional
  Value type: List of <phandle u32>
  Definition: List of phandle and IIO specifier pairs, one pair
		for each IIO input to the device. Note: if the
		IIO provider specifies '0' for #io-channel-cells,
		then only the phandle portion of the pair will appear.

- io-channel-names
  Usage:      optional
  Value type: List of <string>
  Definition: List of IIO input name strings sorted in the same
		order as the io-channels property. Consumer drivers
		will use io-channel-names to match IIO input names
		with IIO specifiers.

================================================
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
"qcom,smb138x-vconn"	- Regulator for enabling VCONN

- 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;
	dpdm-supply = <&qusb_phy0>;

	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";
	};
};
