/* 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.
 */

/ {
	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,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 0x000000AA>,
				    <0x02E4 0x00000055>;

		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,hdmi-tx-supply-names = "hpd-gdsc", "hpd-5v", "core-vdda", "core-vcc";
		qcom,hdmi-tx-supply-type = <1 1 0 0>;
		qcom,hdmi-tx-min-voltage-level = <0 0 1800000 1800000>;
		qcom,hdmi-tx-max-voltage-level = <0 0 1800000 1800000>;
		qcom,hdmi-tx-op-mode = <0 0 1800000 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>;
	};
};
