/*
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/*
 * Integrated Power Management Chip
 * http://www.ti.com/lit/ds/symlink/tps65910.pdf
 */

&tps {
	compatible = "ti,tps65910";

	regulators {
		#address-cells = <1>;
		#size-cells = <0>;

		vrtc_reg: regulator@0 {
			reg = <0>;
			regulator-compatible = "vrtc";
		};

		vio_reg: regulator@1 {
			reg = <1>;
			regulator-compatible = "vio";
		};

		vdd1_reg: regulator@2 {
			reg = <2>;
			regulator-compatible = "vdd1";
		};

		vdd2_reg: regulator@3 {
			reg = <3>;
			regulator-compatible = "vdd2";
		};

		vdd3_reg: regulator@4 {
			reg = <4>;
			regulator-compatible = "vdd3";
		};

		vdig1_reg: regulator@5 {
			reg = <5>;
			regulator-compatible = "vdig1";
		};

		vdig2_reg: regulator@6 {
			reg = <6>;
			regulator-compatible = "vdig2";
		};

		vpll_reg: regulator@7 {
			reg = <7>;
			regulator-compatible = "vpll";
		};

		vdac_reg: regulator@8 {
			reg = <8>;
			regulator-compatible = "vdac";
		};

		vaux1_reg: regulator@9 {
			reg = <9>;
			regulator-compatible = "vaux1";
		};

		vaux2_reg: regulator@10 {
			reg = <10>;
			regulator-compatible = "vaux2";
		};

		vaux33_reg: regulator@11 {
			reg = <11>;
			regulator-compatible = "vaux33";
		};

		vmmc_reg: regulator@12 {
			reg = <12>;
			regulator-compatible = "vmmc";
		};
	};
};
