From patchwork Thu Aug 18 00:50:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Longerbeam X-Patchwork-Id: 9288407 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 790AF600CB for ; Thu, 18 Aug 2016 14:53:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6C33528F56 for ; Thu, 18 Aug 2016 14:53:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 612B128F5C; Thu, 18 Aug 2016 14:53:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id A443228F56 for ; Thu, 18 Aug 2016 14:53:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2284C6EA89; Thu, 18 Aug 2016 14:53:22 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pa0-x242.google.com (mail-pa0-x242.google.com [IPv6:2607:f8b0:400e:c03::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 967426E971 for ; Thu, 18 Aug 2016 00:50:33 +0000 (UTC) Received: by mail-pa0-x242.google.com with SMTP id ez1so397838pab.3 for ; Wed, 17 Aug 2016 17:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BLMxDen+UxsmVvOqqoyd+T4yCWV3tkAADQeUr2lA0wA=; b=u8j0wG/FXiO1xXjlAJyryCrZPYdY3DyBNCFNV7nv9D0Yjjy6ApeazxUVqGkJojCJKI z3OfW1U/FTsTEePdVMErptNTD5kqZl3kFj7VuxrE9plOxMhHyrfe/8CvyYtkFBc2zhzV CuT1uaxTP+w6DxzF9L2Wb7nYaRgmU3IvxWTTsKq/XtHBhUSHpCu2yr4pyBQmyYc2Lm8K 4etOglMhCsNZeTWqU49FVOghkxL7F8G/sqd4Ob3dAZ2wDKo5Peb9DF4DSlVMAqk9XMW+ xYDQpGrX8yhbM4a52tKvB41nC8B6L4NEGWhiV2H3rJWO3BMeGdXTMbOqk8y6d8L8BPPF Aowg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BLMxDen+UxsmVvOqqoyd+T4yCWV3tkAADQeUr2lA0wA=; b=Es/AKAChQ3IaOa8GKo04ZwmrZwoRcY2VlhHxbSRgv+kTMJDCCb5klQXY8/4t/vP90q 8BF+LT9YzvyOifd5lWtHa2o1XjyUAR49Mu4x7nJ424QDDA3DQ5DRGUZ7hsDlNrJlIQ46 e3oNRwhAxhCQYowaPj7dLyXDLvKjE9vDMBeecyH0of9JrUJKUxs9XXsUbUcl78QtwXso KIpHHAhc8ZDNJogVHWGTX26gkNrAaCk56KiGvA6tGluGftwk0v41FZszZzqg70rNySnA XTGf/6HI79VY90qM2izNCRaNJTkNTsSEpVs4XkWb//Mxq09/5sKcR6U7e0EPDG4HTytU sQYg== X-Gm-Message-State: AEkooustRAzIfaaBdo127uxpmS+EYgYdjNzSsTxRjjaNvOI5aSCN6Gdi7unVyIwqts/c/Q== X-Received: by 10.66.189.104 with SMTP id gh8mr24997328pac.125.1471481433178; Wed, 17 Aug 2016 17:50:33 -0700 (PDT) Received: from mothership.sklembedded.com (c-73-241-2-21.hsd1.ca.comcast.net. [73.241.2.21]) by smtp.googlemail.com with ESMTPSA id e72sm49908394pfb.49.2016.08.17.17.50.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 17 Aug 2016 17:50:32 -0700 (PDT) From: Steve Longerbeam X-Google-Original-From: Steve Longerbeam To: p.zabel@pengutronix.de, plagnioj@jcrosoft.com, tomi.valkeinen@ti.com Subject: [PATCH v4 4/4] gpu: ipu-ic: allow multiple handles to ic Date: Wed, 17 Aug 2016 17:50:19 -0700 Message-Id: <1471481419-5917-5-git-send-email-steve_longerbeam@mentor.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1471481419-5917-1-git-send-email-steve_longerbeam@mentor.com> References: <1471481419-5917-1-git-send-email-steve_longerbeam@mentor.com> X-Mailman-Approved-At: Thu, 18 Aug 2016 14:53:20 +0000 Cc: linux-fbdev@vger.kernel.org, Steve Longerbeam , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP The image converter kernel API supports conversion contexts and job queues, so we should allow more than one handle to the IC, so that multiple users can add jobs to the queue. Note however that users that control the IC manually (that do not use the image converter APIs but setup the IC task by hand via calls to ipu_ic_task_enable(), ipu_ic_enable(), etc.) must still be careful not to share the IC handle with other threads. At this point, the only user that still controls the IC manually is the i.mx capture driver. In that case the capture driver only allows one open context to get a handle to the IC at a time, so we should be ok there. Signed-off-by: Steve Longerbeam --- v4: no changes v3: no changes v2: no changes --- drivers/gpu/ipu-v3/ipu-ic.c | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/drivers/gpu/ipu-v3/ipu-ic.c b/drivers/gpu/ipu-v3/ipu-ic.c index 01b1b56..c44aeba 100644 --- a/drivers/gpu/ipu-v3/ipu-ic.c +++ b/drivers/gpu/ipu-v3/ipu-ic.c @@ -338,7 +338,6 @@ struct ipu_ic { enum ipu_color_space out_cs; bool graphics; bool rotation; - bool in_use; struct image_converter cvt; @@ -2370,38 +2369,16 @@ EXPORT_SYMBOL_GPL(ipu_ic_disable); struct ipu_ic *ipu_ic_get(struct ipu_soc *ipu, enum ipu_ic_task task) { struct ipu_ic_priv *priv = ipu->ic_priv; - unsigned long flags; - struct ipu_ic *ic, *ret; if (task >= IC_NUM_TASKS) return ERR_PTR(-EINVAL); - ic = &priv->task[task]; - - spin_lock_irqsave(&priv->lock, flags); - - if (ic->in_use) { - ret = ERR_PTR(-EBUSY); - goto unlock; - } - - ic->in_use = true; - ret = ic; - -unlock: - spin_unlock_irqrestore(&priv->lock, flags); - return ret; + return &priv->task[task]; } EXPORT_SYMBOL_GPL(ipu_ic_get); void ipu_ic_put(struct ipu_ic *ic) { - struct ipu_ic_priv *priv = ic->priv; - unsigned long flags; - - spin_lock_irqsave(&priv->lock, flags); - ic->in_use = false; - spin_unlock_irqrestore(&priv->lock, flags); } EXPORT_SYMBOL_GPL(ipu_ic_put);