/* 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,max-clk-rate = <200000000>;
		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-pingpong-off = <0x00021B00>;
		qcom,mdss-wb-off = <0x00011100 0x00013100>;
		qcom,mdss-intf-off = <0x00000000 0x00021300>;
		qcom,mdss-rot-block-size = <64>;

		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>;
	};
};
