From patchwork Tue Mar 26 13:33:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomi Valkeinen X-Patchwork-Id: 2336601 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id E0EF53FD40 for ; Tue, 26 Mar 2013 13:34:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934355Ab3CZNex (ORCPT ); Tue, 26 Mar 2013 09:34:53 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:55870 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934351Ab3CZNev (ORCPT ); Tue, 26 Mar 2013 09:34:51 -0400 Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id r2QDYpg7028422; Tue, 26 Mar 2013 08:34:51 -0500 Received: from DLEE70.ent.ti.com (dlee70.ent.ti.com [157.170.170.113]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id r2QDYpvo015602; Tue, 26 Mar 2013 08:34:51 -0500 Received: from dlelxv22.itg.ti.com (172.17.1.197) by DLEE70.ent.ti.com (157.170.170.113) with Microsoft SMTP Server id 14.2.342.3; Tue, 26 Mar 2013 08:34:50 -0500 Received: from deskari.tieu.ti.com (h64-3.vpn.ti.com [172.24.64.3]) by dlelxv22.itg.ti.com (8.13.8/8.13.8) with ESMTP id r2QDYUc6025381; Tue, 26 Mar 2013 08:34:49 -0500 From: Tomi Valkeinen To: , , Archit Taneja CC: Tomi Valkeinen Subject: [PATCH 14/26] OMAPDSS: HDMI: new panel registration Date: Tue, 26 Mar 2013 15:33:44 +0200 Message-ID: <1364304836-18134-15-git-send-email-tomi.valkeinen@ti.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1364304836-18134-1-git-send-email-tomi.valkeinen@ti.com> References: <1364304836-18134-1-git-send-email-tomi.valkeinen@ti.com> MIME-Version: 1.0 Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org This patch adds new way to register HDMI panels. This new method will be used by the panel drivers that are converted away from the current dss bus based model. Signed-off-by: Tomi Valkeinen --- drivers/video/omap2/dss/dss.h | 2 ++ drivers/video/omap2/dss/hdmi.c | 41 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index d603a40..eb1e325 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h @@ -450,6 +450,8 @@ static inline unsigned long hdmi_get_pixel_clock(void) return 0; } #endif +int omap_hdmi_register_panel(struct omap_dss_device *dssdev); +void omap_hdmi_free_panel(struct omap_dss_device *dssdev); int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev); void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev); int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev); diff --git a/drivers/video/omap2/dss/hdmi.c b/drivers/video/omap2/dss/hdmi.c index 4b32dd3..f9e38c4 100644 --- a/drivers/video/omap2/dss/hdmi.c +++ b/drivers/video/omap2/dss/hdmi.c @@ -328,7 +328,7 @@ static void hdmi_runtime_put(void) WARN_ON(r < 0 && r != -ENOSYS); } -static int __init hdmi_init_display(struct omap_dss_device *dssdev) +static int hdmi_init_display(struct omap_dss_device *dssdev) { int r; @@ -960,6 +960,45 @@ int hdmi_audio_config(struct omap_dss_audio *audio) #endif +int omap_hdmi_register_panel(struct omap_dss_device *dssdev) +{ + struct omap_dss_hdmi_data *priv = dssdev->data; + int r; + + dssdev->type = OMAP_DISPLAY_TYPE_HDMI; + + hdmi.ct_cp_hpd_gpio = priv->ct_cp_hpd_gpio; + hdmi.ls_oe_gpio = priv->ls_oe_gpio; + hdmi.hpd_gpio = priv->hpd_gpio; + + r = hdmi_init_display(dssdev); + if (r) { + DSSERR("device %s init failed: %d\n", dssdev->name, r); + return r; + } + + r = omapdss_output_set_device(&hdmi.output, dssdev); + if (r) { + DSSERR("failed to connect output to new device: %s\n", + dssdev->name); + hdmi_uninit_display(dssdev); + return r; + } + + dss_add_panel(dssdev); + + return 0; +} +EXPORT_SYMBOL(omap_hdmi_register_panel); + +void omap_hdmi_free_panel(struct omap_dss_device *dssdev) +{ + hdmi_uninit_display(dssdev); + omapdss_output_unset_device(&hdmi.output); + dss_remove_panel(dssdev); +} +EXPORT_SYMBOL(omap_hdmi_free_panel); + static struct omap_dss_device * __init hdmi_find_dssdev(struct platform_device *pdev) { struct omap_dss_board_info *pdata = pdev->dev.platform_data;