/* 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,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 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>;
	};
};
