diff mbox

[1/3] video: Make IPU KMS parse display-timings

Message ID 1365003390-26964-1-git-send-email-rogerio.pimentel@freescale.com (mailing list archive)
State New, archived
Headers show

Commit Message

Rogerio Pimentel April 3, 2013, 3:36 p.m. UTC
From: Marek Vasut <marex@denx.de>

This patch adds support for parsing of the DT display-timings prop
to IPU KMS driver.

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Marek Vasut <marex@denx.de>
---
 drivers/staging/imx-drm/parallel-display.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Philipp Zabel April 4, 2013, 7:37 a.m. UTC | #1
Am Mittwoch, den 03.04.2013, 12:36 -0300 schrieb Rogerio Pimentel:
> From: Marek Vasut <marex@denx.de>
> 
> This patch adds support for parsing of the DT display-timings prop
> to IPU KMS driver.
> 
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
>  drivers/staging/imx-drm/parallel-display.c |   10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/staging/imx-drm/parallel-display.c b/drivers/staging/imx-drm/parallel-display.c
> index a8064fc..2a25202 100644
> --- a/drivers/staging/imx-drm/parallel-display.c
> +++ b/drivers/staging/imx-drm/parallel-display.c
> @@ -57,6 +57,7 @@ static void imx_pd_connector_destroy(struct drm_connector *connector)
>  static int imx_pd_connector_get_modes(struct drm_connector *connector)
>  {
>  	struct imx_parallel_display *imxpd = con_to_imxpd(connector);
> +	struct device_node *np = imxpd->dev->of_node;
>  	int num_modes = 0;
>  
>  	if (imxpd->edid) {
> @@ -72,6 +73,15 @@ static int imx_pd_connector_get_modes(struct drm_connector *connector)
>  		num_modes++;
>  	}
>  
> +	if (np) {
> +		struct drm_display_mode *mode = drm_mode_create(connector->dev);
> +		of_get_drm_display_mode(np, &imxpd->mode, 0);

Since the mode is stored in imxpd->mode anyway, of_get_drm_display_mode
could be called once in the probe function instead of every time
get_modes is called.

> +		drm_mode_copy(mode, &imxpd->mode);
> +		mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
> +		drm_mode_probed_add(connector, mode);
> +		num_modes++;
> +	}
> +
>  	return num_modes;
>  }

regards
Philipp
diff mbox

Patch

diff --git a/drivers/staging/imx-drm/parallel-display.c b/drivers/staging/imx-drm/parallel-display.c
index a8064fc..2a25202 100644
--- a/drivers/staging/imx-drm/parallel-display.c
+++ b/drivers/staging/imx-drm/parallel-display.c
@@ -57,6 +57,7 @@  static void imx_pd_connector_destroy(struct drm_connector *connector)
 static int imx_pd_connector_get_modes(struct drm_connector *connector)
 {
 	struct imx_parallel_display *imxpd = con_to_imxpd(connector);
+	struct device_node *np = imxpd->dev->of_node;
 	int num_modes = 0;
 
 	if (imxpd->edid) {
@@ -72,6 +73,15 @@  static int imx_pd_connector_get_modes(struct drm_connector *connector)
 		num_modes++;
 	}
 
+	if (np) {
+		struct drm_display_mode *mode = drm_mode_create(connector->dev);
+		of_get_drm_display_mode(np, &imxpd->mode, 0);
+		drm_mode_copy(mode, &imxpd->mode);
+		mode->type |= DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
+		drm_mode_probed_add(connector, mode);
+		num_modes++;
+	}
+
 	return num_modes;
 }