Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp421486imm; Fri, 1 Jun 2018 03:25:55 -0700 (PDT) X-Google-Smtp-Source: ADUXVKILGjfww+lP0xrl4F4Yo0RvmsO5n2MjfmwjsppClGZPJL0Ndn5P/8mO1KYK/o7iq7LeebTi X-Received: by 2002:a17:902:8207:: with SMTP id x7-v6mr10598357pln.100.1527848755639; Fri, 01 Jun 2018 03:25:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527848755; cv=none; d=google.com; s=arc-20160816; b=JB7tmUU6wLOEyXzlDs4NBEvb+56NfUzjb+otSMiK+GkHKxK4aVXZgu/WhxWMUvPvyW 3GpZwicDlxPEgOo2VfXUv5McGEtjNeyMf56usXYQfqd6I04VxmJSuaqnV/fEPcxsiY6L ybB6vkDNEOlhez+8PcOm65UfKbJCC7wPne2jsEI/AckAi0DHwggu1Xw3knpgaFzRiSEv VpIe+3MWeFb9GLZYNbAAl0jr4V+OV1JMK267fAfp3hVoHNz5SuCsra+zM8Y4HirBovKA G4KXtrqfs7kWhY+z8PBFkCSUtEejgiN2yNNzPAa/gRGmknY+vqaBPgB4tkfrRp5wTUv4 LjIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=VUh1fsvYxFlrlM92c3+Wh6QUgUZL9BV0RrjXhNf3ExE=; b=mCkbbin3ODqyp3rzVJ6JfNctYzvA51Yf1oVNrzvUfAHubVH9CtkpDPiCQLgZ4hJfRG Z8bIT93gfu5EVjR/dp5LlyJdwp1mbrwnjEu7nm7UnADfVBHtmugvoT1gDNQVJV6pfbcR Wc3AkV7Mks/LnPkv6vHNYhLUPaSjE0QTmPYj0qHAjhWk6DQ6UPOcJnq5MyAOWjBKxm/+ V5UQKpwIfeSlLk7WRaw0pRBfaFkVm3bOjfrwYOIvPQnD5jkny46OWtAZrhyV9nsJ/xX9 TiwPeLZMLjNoMkUbatwMxCWGvStgCxOY3Axx867U5HW00LOhneU5n2uaybb+mxbHg0DY WrOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=URm5Il8g; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c8-v6si3078956pgv.443.2018.06.01.03.25.41; Fri, 01 Jun 2018 03:25:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=URm5Il8g; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751617AbeFAKYH (ORCPT + 99 others); Fri, 1 Jun 2018 06:24:07 -0400 Received: from fllnx210.ext.ti.com ([198.47.19.17]:40982 "EHLO fllnx210.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750793AbeFAKYG (ORCPT ); Fri, 1 Jun 2018 06:24:06 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by fllnx210.ext.ti.com (8.15.1/8.15.1) with ESMTP id w51ANWWN029515; Fri, 1 Jun 2018 05:23:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1527848612; bh=VUh1fsvYxFlrlM92c3+Wh6QUgUZL9BV0RrjXhNf3ExE=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=URm5Il8g34o46x70ORbm4sFIOZdW2nYG4EvoJOa4PhrYu05inf46m8DtDv8Vq3imT wXVNOE2MLPlcQ5KDy9zsxlNNcENSHuiPvA6oqLt6IkCnCUJkoJ0BxjbP19MnM1HYzR 1+9SfN7s4ia4E9yTr8lItQup6QF2voVtocWzRogk= Received: from DFLE104.ent.ti.com (dfle104.ent.ti.com [10.64.6.25]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id w51ANWhE015754; Fri, 1 Jun 2018 05:23:32 -0500 Received: from DFLE115.ent.ti.com (10.64.6.36) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Fri, 1 Jun 2018 05:23:32 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE115.ent.ti.com (10.64.6.36) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Fri, 1 Jun 2018 05:23:32 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id w51ANTAU011599; Fri, 1 Jun 2018 05:23:30 -0500 From: Peter Ujfalusi To: , CC: , , , , , , Subject: [RFC] dmaengine: Add metadat_ops for dma_async_tx_descriptor Date: Fri, 1 Jun 2018 13:24:29 +0300 Message-ID: <20180601102429.16429-1-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <32208a9c-2b15-d345-1432-f1e387531f9b@ti.com> References: <32208a9c-2b15-d345-1432-f1e387531f9b@ti.com> MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the DMA supports per descriptor metadata it can implement the attach, get_ptr/set_len callbacks. Client drivers must only use either attach or get_ptr/set_len to avoid miss configuration. Wrappers are also added for the metadata_ops: dmaengine_desc_attach_metadata() dmaengine_desc_get_metadata_ptr() dmaengine_desc_set_metadata_len() Signed-off-by: Peter Ujfalusi --- Hi, since attachments are bouncing back, I send the patch separately Regards, Peter include/linux/dmaengine.h | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 51fbb861e84b..ac42ace36aa3 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -491,6 +491,18 @@ struct dmaengine_unmap_data { dma_addr_t addr[0]; }; +struct dma_async_tx_descriptor; + +struct dma_descriptor_metadata_ops { + int (*attach)(struct dma_async_tx_descriptor *desc, void *data, + size_t len); + + void *(*get_ptr)(struct dma_async_tx_descriptor *desc, + size_t *payload_len, size_t *max_len); + int (*set_len)(struct dma_async_tx_descriptor *desc, + size_t payload_len); +}; + /** * struct dma_async_tx_descriptor - async transaction descriptor * ---dma generic offload fields--- @@ -520,6 +532,7 @@ struct dma_async_tx_descriptor { dma_async_tx_callback_result callback_result; void *callback_param; struct dmaengine_unmap_data *unmap; + struct dma_descriptor_metadata_ops *metadata_ops; #ifdef CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH struct dma_async_tx_descriptor *next; struct dma_async_tx_descriptor *parent; @@ -932,6 +945,43 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy( len, flags); } +static inline int dmaengine_desc_attach_metadata( + struct dma_async_tx_descriptor *desc, void *data, size_t len) +{ + if (!desc) + return 0; + + if (!desc->metadata_ops || !desc->metadata_ops->attach) + return -ENOTSUPP; + + return desc->metadata_ops->attach(desc, data, len); +} + +static inline void *dmaengine_desc_get_metadata_ptr( + struct dma_async_tx_descriptor *desc, size_t *payload_len, + size_t *max_len) +{ + if (!desc) + return NULL; + + if (!desc->metadata_ops || !desc->metadata_ops->get_ptr) + return ERR_PTR(-ENOTSUPP); + + return desc->metadata_ops->get_ptr(desc, payload_len, max_len); +} + +static inline int dmaengine_desc_set_metadata_len( + struct dma_async_tx_descriptor *desc, size_t payload_len) +{ + if (!desc) + return 0; + + if (!desc->metadata_ops || !desc->metadata_ops->set_len) + return -ENOTSUPP; + + return desc->metadata_ops->set_len(desc, payload_len); +} + /** * dmaengine_terminate_all() - Terminate all active DMA transfers * @chan: The channel for which to terminate the transfers -- Peter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki