/* Copyright (c) 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.
 */

/ {
	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>;
		qcom,mdss-pipe-rgb-off = <0x00001E00>;
		qcom,mdss-pipe-dma-off = <0x00002A00>;
		qcom,mdss-pipe-vig-fetch-id = <1>;
		qcom,mdss-pipe-rgb-fetch-id = <7>;
		qcom,mdss-pipe-dma-fetch-id = <4>;
		qcom,mdss-smp-data = <7 4096>;

		qcom,mdss-ctl-off = <0x00000600 0x00000700>;
		qcom,mdss-mixer-intf-off = <0x00003200>;
		qcom,mdss-mixer-wb-off = <0x00003E00>;
		qcom,mdss-dspp-off = <0x00004600>;
		qcom,mdss-wb-off = <0x00011100 0x00013100>;
		qcom,mdss-intf-off = <0x00000000 0x00021300>;

		qcom,vbif-settings = <0x004 0x00000001>,
				     <0x0D8 0x00000707>,
				     <0x124 0x00000003>;
		qcom,mdp-settings = <0x02E0 0x000000A9>,
				    <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_wfd {
			cell-index = <1>;
			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 = <&pm8226_l15>;
		vddio-supply = <&pm8226_l8>;
		vdda-supply = <&pm8226_l4>;
		qcom,supply-names = "vdd", "vddio", "vdda";
		qcom,supply-type = "regulator", "regulator", "regulator";
		qcom,supply-min-voltage-level = <2800000 1800000 1200000>;
		qcom,supply-max-voltage-level = <2800000 1800000 1200000>;
		qcom,supply-peak-current = <150000 100000 100000>;
		qcom,mdss-fb-map = <&mdss_fb0>;
	};

	qcom,mdss_wb_panel {
		compatible = "qcom,mdss_wb";
		qcom,mdss_pan_res = <1280 720>;
		qcom,mdss_pan_bpp = <24>;
		qcom,mdss-fb-map = <&mdss_fb1>;
	};
};
