/* Copyright (c) 2012-2013, 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_mdp: qcom,mdss_mdp@fd900000 {
		compatible = "qcom,mdss_mdp";
		reg = <0xfd900000 0x22100>,
			<0xfd924000 0x1000>;
		reg-names = "mdp_phys", "vbif_phys";
		interrupts = <0 72 0>;
		vdd-supply = <&gdsc_mdss>;

		qcom,max-clk-rate = <320000000>;
		qcom,mdss-pipe-vig-off = <0x00001200 0x00001600
					       0x00001A00>;
		qcom,mdss-pipe-rgb-off = <0x00001E00 0x00002200
					       0x00002600>;
		qcom,mdss-pipe-dma-off = <0x00002A00 0x00002E00>;
		qcom,mdss-pipe-vig-fetch-id = <1 4 7>;
		qcom,mdss-pipe-rgb-fetch-id = <16 17 18>;
		qcom,mdss-pipe-dma-fetch-id = <10 13>;
		qcom,mdss-smp-data = <22 4096>;

		qcom,mdss-ctl-off = <0x00000600 0x00000700 0x00000800
				     0x00000900 0x0000A00>;
		qcom,mdss-mixer-intf-off = <0x00003200 0x00003600
					    0x00003A00>;
		qcom,mdss-mixer-wb-off = <0x00003E00 0x00004200>;
		qcom,mdss-dspp-off = <0x00004600 0x00004A00 0x00004E00>;
		qcom,mdss-wb-off = <0x00011100 0x00013100 0x00015100
				    0x00017100 0x00019100>;
		qcom,mdss-intf-off = <0x00021100 0x00021300
					   0x00021500 0x00021700>;

		qcom,vbif-settings = <0x0004 0x00000001>,
				     <0x00D8 0x00000707>,
				     <0x00F0 0x00000030>,
				     <0x0124 0x00000001>,
				     <0x0178 0x00000FFF>,
				     <0x017C 0x0FFF0FFF>,
				     <0x0160 0x22222222>,
				     <0x0164 0x00002222>;
		qcom,mdp-settings = <0x02E0 0x000000E9>,
				    <0x02E4 0x00000055>,
				    <0x03AC 0xC0000CCC>,
				    <0x03B4 0xC0000CCC>,
				    <0x03BC 0x00CCCCCC>,
				    <0x04A8 0x0CCCC0C0>,
				    <0x04B0 0xCCCCC0C0>,
				    <0x04B8 0xCCCCC000>;

		mdss_fb0: qcom,mdss_fb_primary {
			cell-index = <0>;
			compatible = "qcom,mdss-fb";
			qcom,memory-reservation-type = "EBI1";
			qcom,memory-reservation-size = <0x800000>;
		};

		mdss_fb1: qcom,mdss_fb_external {
			cell-index = <1>;
			compatible = "qcom,mdss-fb";
		};

		mdss_fb2: qcom,mdss_fb_wfd {
			cell-index = <2>;
			compatible = "qcom,mdss-fb";
		};
	};

	mdss_dsi0: qcom,mdss_dsi@fd922800 {
		compatible = "qcom,mdss-dsi-ctrl";
		label = "MDSS DSI CTRL->0";
		cell-index = <0>;
		reg = <0xfd922800 0x600>;
		vdd-supply = <&pm8941_l22>;
		vddio-supply = <&pm8941_l12>;
		vdda-supply = <&pm8941_l2>;
		qcom,mdss-fb-map = <&mdss_fb0>;
	};

	mdss_dsi1: qcom,mdss_dsi@fd922e00 {
		compatible = "qcom,mdss-dsi-ctrl";
		label = "MDSS DSI CTRL->1";
		cell-index = <1>;
		reg = <0xfd922e00 0x600>;
		vdd-supply = <&pm8941_l22>;
		vddio-supply = <&pm8941_l12>;
		vdda-supply = <&pm8941_l2>;
		qcom,mdss-fb-map = <&mdss_fb0>;
	};

	mdss_hdmi_tx: qcom,hdmi_tx@fd922100 {
		cell-index = <0>;
		compatible = "qcom,hdmi-tx";
		reg =	<0xfd922100 0x35C>,
			<0xfd922500 0x7C>,
			<0xfc4b8000 0x60F0>;
		reg-names = "core_physical", "phy_physical", "qfprom_physical";

		hpd-gdsc-supply = <&gdsc_mdss>;
		hpd-5v-supply = <&pm8941_mvs2>;
		core-vdda-supply = <&pm8941_l12>;
		core-vcc-supply = <&pm8941_s3>;
		qcom,supply-names = "hpd-gdsc", "hpd-5v", "core-vdda", "core-vcc";
		qcom,min-voltage-level = <0 0 1800000 1800000>;
		qcom,max-voltage-level = <0 0 1800000 1800000>;
		qcom,enable-load = <0 0 1800000 0>;
		qcom,disable-load = <0 0 0 0>;

		qcom,hdmi-tx-cec = <&msmgpio 31 0>;
		qcom,hdmi-tx-ddc-clk = <&msmgpio 32 0>;
		qcom,hdmi-tx-ddc-data = <&msmgpio 33 0>;
		qcom,hdmi-tx-hpd = <&msmgpio 34 0>;
		qcom,mdss-fb-map = <&mdss_fb1>;
		qcom,msm-hdmi-audio-rx {
			compatible = "qcom,msm-hdmi-audio-codec-rx";
		};
	};

	qcom,mdss_wb_panel {
		compatible = "qcom,mdss_wb";
		qcom,mdss_pan_res = <1920 1080>;
		qcom,mdss_pan_bpp = <24>;
		qcom,mdss-fb-map = <&mdss_fb2>;
	};

	mdss_edp: qcom,mdss_edp@fd923400 {
		compatible = "qcom,mdss-edp";
		reg = <0xfd923400 0x700>,
			<0xfd8c2000 0x1000>;
		reg-names = "edp_base", "mmss_cc_base";
		vdda-supply = <&pm8941_l12>;
		gpio-panel-en = <&msmgpio 58 0>;
		gpio-panel-pwm = <&pm8941_gpios 36 0>;
		qcom,panel-lpg-channel = <7>; /* LPG Channel 8 */
		qcom,panel-pwm-period = <53>;
		status = "disable";
		qcom,mdss-fb-map = <&mdss_fb0>;
		gpio-panel-hpd = <&msmgpio 102 0>;
	};
};
