* Samsung Display Controller Framebuffer Controller

The display controller is used to transfer image data from memory to a
external display device such as an RGB interface LCD panel. It supports
various color formats such as rgb and yuv. It also supports multiple window
overlays.

Required properties:

    - compatible: should be one of the following
      - samsung,exynos4210-fimd: for fimd compatible with Exynos4210 fimd
      - samsung,s5pv210-fimd: for fimd compatible with s5pv210 fimd

    - reg: physical base address of the controller and length of memory
      mapped region.

    - interrupts: Three interrupts should be specified. The format of the
      interrupt specifier depends on the interrupt controller. The interrupts
      should be specified in the following order.
      - VSYNC (Video Frame) interrupt
      - Video FIFO level interrupt
      - FIMD System Interrupt

    - gpios: The gpios used to interface with the external LCD panel. For a
      panel with rgb interface, the gpio interface consists of video data
      lines, HSYNC, VSYNC, Pixel Clock and Data Enable. The gpio's used for
      these interface lines can be listed under this property in any order.

    - samsung,fimd-display: The fimd controller is interfaced with the a
      display device such as a lcd panel. This property should specify the
      phandle of the display device node. For a display device node that
      represents a RGB type display interface, it is expected to specify the
      video interface timing using the following properties.

      - lcd-htiming: Specifies the horizontal timing for the overlay. The
        horizontal timing includes four parameters in the following order.

        - horizontal back porch (in number of lcd clocks)
        - horizontal front porch (in number of lcd clocks)
        - hsync pulse width (in number of lcd clocks)
        - Display panels X resolution.

      - lcd-vtiming: Specifies the vertical timing for the overlay. The
        vertical timing includes four parameters in the following order.

        - vertical back porch (in number of lcd lines)
        - vertical front porch (in number of lcd lines)
        - vsync pulse width (in number of lcd clocks)
        - Y resolution.

    - Overlay/Windows: Multiple overlays/windows can be specified as child
      nodes. Each window should have the following properties (optional
      window properties are marked as 'optional').

      - samsung,fimd-win-id: Specifies the window number of the fimd controller.

      - samsung,fimd-win-bpp: Specifies the bits per pixel. Two values should
	be specified in the following order.
        - default-bpp: bpp supported by the overlay.
        - max-bpp: maximum required bpp for the overlay.

      - samsung,fimd-win-res: (OPTIONAL) Specifies the window resolution in
        pixels. The resolution contains the X and Y pixel values with X being
        specified first. If this property is not specified, the window
        resolution is set to be equal to the display panel resolution.

      - samsung,fimd-win-virtres: (OPTIONAL) Specifies the resolution of the
        virtual frame buffer for the window. The resolution contains the X
        and Y resolution in pixels with value of X being the specified first.

Optional properties:

    - samsung,fimd-vidout-rgb: Video output format is RGB.
    - samsung,fimd-inv-hsync: invert hsync pulse polarity.
    - samsung,fimd-inv-vsync: invert vsync pulse polarity.
    - samsung,fimd-inv-vclk: invert video clock polarity.
    - samsung,fimd-inv-vden: invert video enable signal polarity.
    - samsung,fimd-frame-rate: Number of video frames per second.

Example:

    The following is an example for the fimd framebuffer controller is split
    into two portions. The SoC specific portion can be specified in the SoC
    specific dts file. The board specific portion can be specified in the
    board specific dts file.

    - SoC Specific portion

	fimd@11C00000 {
		compatible = "samsung,exynos4210-fimd";
		interrupt-parent = <&combiner>;
		reg = <0x11C00000 0x8000>;
		interrupts = <11 1>, <11 0>, <11 2>;
	};

    - Board Specific portion

	fimd@11C00000 {
		samsung,fimd-display = <&lcd_fimd0>;
		samsung,fimd-vidout-rgb;
		samsung,fimd-inv-hsync;
		samsung,fimd-inv-vsync;
		samsung,fimd-inv-vclk;
		samsung,fimd-frame-rate = <60>;

		gpios = <&gpf0 0 2 0 0>,
			<&gpf0 1 2 0 0>,
			<&gpf0 2 2 0 0>,
			<&gpf0 3 2 0 0>,
			<&gpf0 4 2 0 0>,
			<&gpf0 5 2 0 0>,
			<&gpf0 6 2 0 0>,
			<&gpf0 7 2 0 0>,
			<&gpf1 0 2 0 0>,
			<&gpf1 1 2 0 0>,
			<&gpf1 2 2 0 0>,
			<&gpf1 3 2 0 0>,
			<&gpf1 4 2 0 0>,
			<&gpf1 5 2 0 0>,
			<&gpf1 6 2 0 0>,
			<&gpf1 7 2 0 0>,
			<&gpf2 0 2 0 0>,
			<&gpf2 1 2 0 0>,
			<&gpf2 2 2 0 0>,
			<&gpf2 3 2 0 0>,
			<&gpf2 4 2 0 0>,
			<&gpf2 5 2 0 0>,
			<&gpf2 6 2 0 0>,
			<&gpf2 7 2 0 0>,
			<&gpf3 0 2 0 0>,
			<&gpf3 1 2 0 0>,
			<&gpf3 2 2 0 0>,
			<&gpf3 3 2 0 0>;

		window0 {
			samsung,fimd-win-id = <0>;
			samsung,fimd-win-bpp = <32 24>;
			samsung,fimd-win-res = <512 300>;
			samsung,fimd-win-vres = <1024 600>;
		};

		window1 {
			samsung,fimd-win-id = <1>;
			samsung,fimd-win-bpp = <32 24>;
			samsung,fimd-win-res = <1024 200>;
			samsung,fimd-win-vres = <1024 600>;
		};
	};
