/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

&soc {
	mdss_dsi0_pll: qcom,mdss_dsi_pll@994400 {
		compatible = "qcom,mdss_dsi_pll_8953";
		label = "MDSS DSI 0 PLL";
		cell-index = <0>;
		#clock-cells = <1>;

		reg = <0x01a94400 0x588>,
		      <0x0184d074 0x8>,
		      <0x01a94200 0x98>;
		reg-names = "pll_base", "gdsc_base", "dynamic_pll_base";

		gdsc-supply = <&gdsc_mdss>;

		clocks = <&clock_gcc clk_gcc_mdss_ahb_clk>;
		clock-names = "iface_clk";
		clock-rate = <0>;

		qcom,dsi-pll-ssc-en;
		qcom,dsi-pll-ssc-mode = "down-spread";
		/* Memory region for passing dynamic refresh pll codes */
		memory-region = <&dfps_data_mem>;

		qcom,platform-supply-entries {
			#address-cells = <1>;
			#size-cells = <0>;

			qcom,platform-supply-entry@0 {
				reg = <0>;
				qcom,supply-name = "gdsc";
				qcom,supply-min-voltage = <0>;
				qcom,supply-max-voltage = <0>;
				qcom,supply-enable-load = <0>;
				qcom,supply-disable-load = <0>;
			};
		};
	};

	mdss_dsi1_pll: qcom,mdss_dsi_pll@996400 {
		compatible = "qcom,mdss_dsi_pll_8953";
		label = "MDSS DSI 1 PLL";
		cell-index = <1>;
		#clock-cells = <1>;

		reg = <0x01a96400 0x588>,
		      <0x0184d074 0x8>,
		      <0x01a96200 0x98>;
		reg-names = "pll_base", "gdsc_base", "dynamic_pll_base";

		gdsc-supply = <&gdsc_mdss>;

		qcom,dsi-pll-ssc-en;
		qcom,dsi-pll-ssc-mode = "down-spread";
		clocks = <&clock_gcc clk_gcc_mdss_ahb_clk>;
		clock-names = "iface_clk";
		clock-rate = <0>;

		qcom,platform-supply-entries {
			#address-cells = <1>;
			#size-cells = <0>;

			qcom,platform-supply-entry@0 {
				reg = <0>;
				qcom,supply-name = "gdsc";
				qcom,supply-min-voltage = <0>;
				qcom,supply-max-voltage = <0>;
				qcom,supply-enable-load = <0>;
				qcom,supply-disable-load = <0>;
			};
		};
	};
};
