From patchwork Fri Mar 26 21:02:28 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: omar ramirez X-Patchwork-Id: 88579 X-Patchwork-Delegate: omar.ramirez@ti.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.3/8.14.3) with ESMTP id o2QKkptQ020899 for ; Fri, 26 Mar 2010 20:46:53 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753334Ab0CZUqw (ORCPT ); Fri, 26 Mar 2010 16:46:52 -0400 Received: from bear.ext.ti.com ([192.94.94.41]:38332 "EHLO bear.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752990Ab0CZUqw (ORCPT ); Fri, 26 Mar 2010 16:46:52 -0400 Received: from dlep33.itg.ti.com ([157.170.170.112]) by bear.ext.ti.com (8.13.7/8.13.7) with ESMTP id o2QKkmc5019806 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 26 Mar 2010 15:46:48 -0500 Received: from legion.dal.design.ti.com (localhost [127.0.0.1]) by dlep33.itg.ti.com (8.13.7/8.13.7) with ESMTP id o2QKklX5016825; Fri, 26 Mar 2010 15:46:47 -0500 (CDT) Received: from Matrix (matrix.am.dhcp.ti.com [128.247.75.166]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id o2QKklZ15971; Fri, 26 Mar 2010 15:46:47 -0500 (CDT) Received: by Matrix (Postfix, from userid 1003) id F0797410618; Fri, 26 Mar 2010 15:02:28 -0600 (CST) From: Omar Ramirez Luna To: linux-omap Cc: Ameya Palande , Hiroshi Doyu , Felipe Contreras , Nishanth Menon , Omar Ramirez Luna Subject: [PATCH 2/2] DSPBRIDGE: Distinguish between read or write buffers Date: Fri, 26 Mar 2010 15:02:28 -0600 Message-Id: <1269637348-20608-3-git-send-email-omar.ramirez@ti.com> X-Mailer: git-send-email 1.5.4.3 In-Reply-To: <1269637348-20608-2-git-send-email-omar.ramirez@ti.com> References: <1269637348-20608-1-git-send-email-omar.ramirez@ti.com> <1269637348-20608-2-git-send-email-omar.ramirez@ti.com> Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Fri, 26 Mar 2010 20:46:53 +0000 (UTC) diff --git a/arch/arm/plat-omap/include/dspbridge/dbdefs.h b/arch/arm/plat-omap/include/dspbridge/dbdefs.h index 7fcc4aa..d01d9ae 100644 --- a/arch/arm/plat-omap/include/dspbridge/dbdefs.h +++ b/arch/arm/plat-omap/include/dspbridge/dbdefs.h @@ -490,7 +490,10 @@ bit 3 - MMU element size = 8bit (valid only for non mixed page entries) bit 4 - MMU element size = 16bit (valid only for non mixed page entries) bit 5 - MMU element size = 32bit (valid only for non mixed page entries) bit 6 - MMU element size = 64bit (valid only for non mixed page entries) - */ + +bit 14 - Input (read only) buffer +bit 15 - Output (writeable) buffer +*/ /* Types of mapping attributes */ @@ -518,6 +521,8 @@ bit 6 - MMU element size = 64bit (valid only for non mixed page entries) #define DSP_MAPDONOTLOCK 0x00000100 +#define DSP_MAP_DIR_MASK 0x3FFF + #define GEM_CACHE_LINE_SIZE 128 #define GEM_L1P_PREFETCH_SIZE 128 diff --git a/drivers/dsp/bridge/rmgr/proc.c b/drivers/dsp/bridge/rmgr/proc.c index ac141a8..64659ec 100644 --- a/drivers/dsp/bridge/rmgr/proc.c +++ b/drivers/dsp/bridge/rmgr/proc.c @@ -70,6 +70,12 @@ #define DSP_CACHE_LINE 128 +#define BUFMODE_MASK (3 << 14) + +/* Buffer modes from DSP perspective */ +#define RBUF 0x4000 /* Input buffer */ +#define WBUF 0x8000 /* Output Buffer */ + extern char *iva_img; /* ----------------------------------- Globals */ @@ -1070,11 +1076,13 @@ dsp_status proc_map(void *hprocessor, void *pmpu_addr, u32 ul_size, struct dmm_map_object *map_obj; #ifdef CONFIG_BRIDGE_CACHE_LINE_CHECK - if (!IS_ALIGNED((u32)pmpu_addr, DSP_CACHE_LINE) || - !IS_ALIGNED(ul_size, DSP_CACHE_LINE)) { - pr_err("%s: not aligned: 0x%x (%d)\n", __func__, + if ((ul_map_attr & BUFMODE_MASK) != RBUF) { + if (!IS_ALIGNED((u32)pmpu_addr, DSP_CACHE_LINE) || + !IS_ALIGNED(ul_size, DSP_CACHE_LINE)) { + pr_err("%s: not aligned: 0x%x (%d)\n", __func__, (u32)pmpu_addr, ul_size); - return -EFAULT; + return -EFAULT; + } } #endif diff --git a/drivers/dsp/bridge/wmd/tiomap3430.c b/drivers/dsp/bridge/wmd/tiomap3430.c index a972ea2..cbf3203 100644 --- a/drivers/dsp/bridge/wmd/tiomap3430.c +++ b/drivers/dsp/bridge/wmd/tiomap3430.c @@ -1308,11 +1308,11 @@ static dsp_status bridge_brd_mem_map(struct wmd_dev_context *hDevContext, if (ul_num_bytes == 0) return DSP_EINVALIDARG; - if (ul_map_attr != 0) { + if (ul_map_attr & DSP_MAP_DIR_MASK) { attrs = ul_map_attr; } else { /* Assign default attributes */ - attrs = DSP_MAPVIRTUALADDR | DSP_MAPELEMSIZE16; + attrs = ul_map_attr | (DSP_MAPVIRTUALADDR | DSP_MAPELEMSIZE16); } /* Take mapping properties */ if (attrs & DSP_MAPBIGENDIAN)