From patchwork Thu Sep 13 12:15:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: archit taneja X-Patchwork-Id: 1451911 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 024583FE79 for ; Thu, 13 Sep 2012 12:15:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757973Ab2IMMP5 (ORCPT ); Thu, 13 Sep 2012 08:15:57 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:52155 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757720Ab2IMMPy (ORCPT ); Thu, 13 Sep 2012 08:15:54 -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 q8DCFs27001493; Thu, 13 Sep 2012 07:15:54 -0500 Received: from DFLE73.ent.ti.com (dfle73.ent.ti.com [128.247.5.110]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id q8DCFsu4031101; Thu, 13 Sep 2012 07:15:54 -0500 Received: from dlelxv24.itg.ti.com (172.17.1.199) by dfle73.ent.ti.com (128.247.5.110) with Microsoft SMTP Server id 14.1.323.3; Thu, 13 Sep 2012 07:15:53 -0500 Received: from legion.dal.design.ti.com (legion.dal.design.ti.com [128.247.22.53]) by dlelxv24.itg.ti.com (8.13.8/8.13.8) with ESMTP id q8DCFrwW026769; Thu, 13 Sep 2012 07:15:53 -0500 Received: from localhost (a0393947pc.apr.dhcp.ti.com [172.24.137.248]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id q8DCFpw07828; Thu, 13 Sep 2012 07:15:52 -0500 (CDT) From: Archit Taneja To: CC: , , Archit Taneja Subject: [PATCH 17/21] OMAPDSS: DISPC: Configure overlay-like parameters in dispc_wb_setup Date: Thu, 13 Sep 2012 17:45:01 +0530 Message-ID: <1347538505-25359-18-git-send-email-archit@ti.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1347538505-25359-1-git-send-email-archit@ti.com> References: <1347538505-25359-1-git-send-email-archit@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 Create struct omap_dss_writeback_info, this is similar to omap_overlay_info, the major difference is that there is no parameter which describes the input size to writeback, this is because this is always fixed, and decided by the connected overlay or overlay manager. One more difference is that screen_width is renamed to buf_width, to give the value of stride the writeback buffer has. Call dispc_plane_setup() through dispc_wb_setup() to configure overlay-like parameters. The parameters in dispc_plane_setup() which do not hold for writeback are filled passed as zeroes or false, dispc_plane_setup() takes care of not configuring them as they won't possess the needed overlay caps. Signed-off-by: Archit Taneja --- drivers/video/omap2/dss/dispc.c | 30 ++++++++++++++++++++++++++++++ drivers/video/omap2/dss/dss.h | 2 ++ include/video/omapdss.h | 13 +++++++++++++ 3 files changed, 45 insertions(+) diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index a33ed8e..f575875 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -2464,6 +2464,36 @@ int dispc_ovl_setup(enum omap_plane plane, const struct omap_overlay_info *oi, return r; } +int dispc_wb_setup(const struct omap_dss_writeback_info *wi, + const struct omap_video_timings *mgr_timings) +{ + int r; + enum omap_plane plane = OMAP_DSS_WB; + const int pos_x = 0, pos_y = 0; + const u8 zorder = 0, global_alpha = 0; + const bool replication = false; + int in_width = mgr_timings->x_res; + int in_height = mgr_timings->y_res; + unsigned long out_rate; + enum omap_overlay_caps caps = + OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA; + + DSSDBG("dispc_wb_setup, pa %x, pa_uv %x, %d,%d -> %dx%d, cmode %x, " + "rot %d, mir %d\n", wi->paddr, wi->p_uv_addr, in_width, + in_height, wi->width, wi->height, wi->color_mode, wi->rotation, + wi->mirror); + + out_rate = dispc_plane_output_rate(plane); + + r = dispc_plane_setup(plane, caps, out_rate, wi->paddr, wi->p_uv_addr, + wi->buf_width, pos_x, pos_y, in_width, in_height, + wi->width, wi->height, wi->color_mode, wi->rotation, + wi->mirror, zorder, wi->pre_mult_alpha, global_alpha, + wi->rotation_type, replication, mgr_timings); + + return r; +} + int dispc_ovl_enable(enum omap_plane plane, bool enable) { DSSDBG("dispc_enable_plane %d, %d\n", plane, enable); diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h index ea17d68..bd7c5cf 100644 --- a/drivers/video/omap2/dss/dss.h +++ b/drivers/video/omap2/dss/dss.h @@ -482,6 +482,8 @@ void dispc_mgr_setup(enum omap_channel channel, struct omap_overlay_manager_info *info); void dispc_wb_set_channel_in(enum dss_writeback_channel channel); +int dispc_wb_setup(const struct omap_dss_writeback_info *wi, + const struct omap_video_timings *timings); /* VENC */ #ifdef CONFIG_OMAP2_DSS_VENC diff --git a/include/video/omapdss.h b/include/video/omapdss.h index 46097bd..3729173 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h @@ -510,6 +510,19 @@ struct omap_dsi_pin_config { int pins[OMAP_DSS_MAX_DSI_PINS]; }; +struct omap_dss_writeback_info { + u32 paddr; + u32 p_uv_addr; + u16 buf_width; + u16 width; + u16 height; + enum omap_color_mode color_mode; + u8 rotation; + enum omap_dss_rotation_type rotation_type; + bool mirror; + u8 pre_mult_alpha; +}; + struct omap_dss_output { struct list_head list;