From patchwork Fri Aug 9 11:11:33 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chanho Park X-Patchwork-Id: 2841882 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 4B1F2BF546 for ; Fri, 9 Aug 2013 11:11:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6A4352028F for ; Fri, 9 Aug 2013 11:11:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0E52420276 for ; Fri, 9 Aug 2013 11:11:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S967577Ab3HILLu (ORCPT ); Fri, 9 Aug 2013 07:11:50 -0400 Received: from mailout3.samsung.com ([203.254.224.33]:59058 "EHLO mailout3.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967570Ab3HILLt (ORCPT ); Fri, 9 Aug 2013 07:11:49 -0400 Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MR900KAUGEZLSP0@mailout3.samsung.com> for linux-samsung-soc@vger.kernel.org; Fri, 09 Aug 2013 20:11:47 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.116]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 38.D6.08825.27EC4025; Fri, 09 Aug 2013 20:11:47 +0900 (KST) X-AuditID: cbfee68e-b7f276d000002279-7f-5204ce7275e9 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id E1.CB.32250.27EC4025; Fri, 09 Aug 2013 20:11:46 +0900 (KST) Received: from localhost.localdomain ([10.252.81.149]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MR9006CLGFKN680@mmp1.samsung.com>; Fri, 09 Aug 2013 20:11:46 +0900 (KST) From: Chanho Park To: vinod.koul@intel.com, djbw@fb.com Cc: jaswinder.singh@linaro.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kyungmin.park@samsung.com, Chanho Park Subject: [PATCH-RESEND 1/2] dma: pl330: split off common code to give back descriptors Date: Fri, 09 Aug 2013 20:11:33 +0900 Message-id: <1376046694-2638-2-git-send-email-chanho61.park@samsung.com> X-Mailer: git-send-email 1.7.9.5 In-reply-to: <1376046694-2638-1-git-send-email-chanho61.park@samsung.com> References: <1376046694-2638-1-git-send-email-chanho61.park@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrOLMWRmVeSWpSXmKPExsWyRsSkRLf4HEuQwctLTBaX92tbbO5/wGYx edN9RouzTW/YLTY9vsZqMeP8PiaLl337WRzYPSY2v2P3WLznJZPHnWt72Dw2L6n36NuyitHj 8ya5ALYoLpuU1JzMstQifbsErown/ctYCy4LVRzpPMfewLiHv4uRk0NCwETi1IudjBC2mMSF e+vZuhi5OIQEljJKbJh9hQmm6OLbbmaIxCJGiQd/TrJAOG1MEmd2n2IGqWIT0JXY8vwV0CgO DhEBVYn1l8VAapgF1jNK/Ng0iw2kRlggQuLhidUsIDYLUE3zlDNgq3kFPCQmnD0O1ishoCAx Z5INiMkp4Cmx9LoJiCkEVHHuoynIRAmBZewSHVt3QE0RkPg2+RALRKesxKYDzBAnS0ocXHGD ZQKj8AJGhlWMoqkFyQXFSelFRnrFibnFpXnpesn5uZsYgYF++t+zvh2MNw9YH2JMBho3kVlK NDkfGCl5JfGGxmZGFqYmpsZG5pZmpAkrifOqtVgHCgmkJ5akZqemFqQWxReV5qQWH2Jk4uCU amCMyd+6xZH/9HSd5QwB907c3yKefLKvdFvtpF29JR+azITvbjM6s9Vnzn6uu58kPVYFMnef /3O3h+VQ5atV3jtkqtvOvin/0L3xeWSWgOpVk6wVlpevvTf+37fn0/PrMqv3uz/4+Pffwmc1 PicuuGT4i6k+3GEauF65R6Ngi2Ok/gzPIDbp5i95SizFGYmGWsxFxYkANl1Gp4oCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCIsWRmVeSWpSXmKPExsVy+t9jAd2icyxBBkuWWFhc3q9tsbn/AZvF 5E33GS3ONr1ht9j0+BqrxYzz+5gsXvbtZ3Fg95jY/I7dY/Gel0wed67tYfPYvKTeo2/LKkaP z5vkAtiiGhhtMlITU1KLFFLzkvNTMvPSbZW8g+Od403NDAx1DS0tzJUU8hJzU22VXHwCdN0y c4BOUVIoS8wpBQoFJBYXK+nbYZoQGuKmawHTGKHrGxIE12NkgAYS1jBmPOlfxlpwWajiSOc5 9gbGPfxdjJwcEgImEhffdjND2GISF+6tZ+ti5OIQEljEKPHgz0kWCKeNSeLM7lNgVWwCuhJb nr9i7GLk4BARUJVYf1kMpIZZYD2jxI9Ns9hAaoQFIiQenljNAmKzANU0TznDCGLzCnhITDh7 HKxXQkBBYs4kGxCTU8BTYul1ExBTCKji3EfTCYy8CxgZVjGKphYkFxQnpeca6hUn5haX5qXr JefnbmIEx9EzqR2MKxssDjEKcDAq8fAqbmcOEmJNLCuuzD3EKMHBrCTCu30CS5AQb0piZVVq UX58UWlOavEhxmSgkyYyS4km5wNjPK8k3tDYxMzI0sjc0MLI2Jw0YSVx3gOt1oFCAumJJanZ qakFqUUwW5g4OKUaGEvdF9+/aiDZsbis7+PODRN97aSW5l2e+llDd9aFhB2GPPqNxpyvGq+/ Pxn0YM2upVbOnzcV7YlJ2nhT+SLjTwWDqF0f15/sjz+dq5Fw8PwVtrX9shO+2+pOmZJZNdnB o3xZauf1Xg/PNb1869uW7sjgf8Lkm7ztZZf6b+fwiwvvldwvc/jm5KPEUpyRaKjFXFScCAC4 AtR05wIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch adds __pl330_giveback_descs which give back descriptors when fails allocating descriptors. It requires to eliminate duplication for pl330_prep_dma_sg which will be added later. Signed-off-by: Chanho Park Acked-by : Jassi Brar Signed-off-by: Kyungmin Park --- drivers/dma/pl330.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index 4ad13eb..ebc2af9 100644 --- a/drivers/dma/pl330.c +++ b/drivers/dma/pl330.c @@ -2814,6 +2814,28 @@ pl330_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dst, return &desc->txd; } +static void __pl330_giveback_desc(struct dma_pl330_dmac *pdmac, + struct dma_pl330_desc *first) +{ + unsigned long flags; + struct dma_pl330_desc *desc; + + if (!first) + return; + + spin_lock_irqsave(&pdmac->pool_lock, flags); + + while (!list_empty(&first->node)) { + desc = list_entry(first->node.next, + struct dma_pl330_desc, node); + list_move_tail(&desc->node, &pdmac->desc_pool); + } + + list_move_tail(&first->node, &pdmac->desc_pool); + + spin_unlock_irqrestore(&pdmac->pool_lock, flags); +} + static struct dma_async_tx_descriptor * pl330_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, enum dma_transfer_direction direction, @@ -2822,7 +2844,6 @@ pl330_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, struct dma_pl330_desc *first, *desc = NULL; struct dma_pl330_chan *pch = to_pchan(chan); struct scatterlist *sg; - unsigned long flags; int i; dma_addr_t addr; @@ -2842,20 +2863,7 @@ pl330_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, dev_err(pch->dmac->pif.dev, "%s:%d Unable to fetch desc\n", __func__, __LINE__); - if (!first) - return NULL; - - spin_lock_irqsave(&pdmac->pool_lock, flags); - - while (!list_empty(&first->node)) { - desc = list_entry(first->node.next, - struct dma_pl330_desc, node); - list_move_tail(&desc->node, &pdmac->desc_pool); - } - - list_move_tail(&first->node, &pdmac->desc_pool); - - spin_unlock_irqrestore(&pdmac->pool_lock, flags); + __pl330_giveback_desc(pdmac, first); return NULL; }