All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vinod.koul@intel.com>
To: Abhishek Sahu <absahu@codeaurora.org>
Cc: andy.gross@linaro.org, david.brown@linaro.org,
	dan.j.williams@intel.com, linux-arm-msm@vger.kernel.org,
	linux-soc@vger.kernel.org, dmaengine@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/3] dmaengine: qcom: bam_dma: wrapper functions for command descriptor
Date: Wed, 19 Jul 2017 15:39:02 +0530	[thread overview]
Message-ID: <20170719100902.GG3053@localhost> (raw)
In-Reply-To: <1498481369-29497-3-git-send-email-absahu@codeaurora.org>

On Mon, Jun 26, 2017 at 06:19:28PM +0530, Abhishek Sahu wrote:
> QCOM BAM also supports command descriptor which allows the SW to
> create descriptors of type command which does not generate any
> data transmissions but configures registers in the peripheral.
> In command descriptor the 32bit address point to the start of
> the command block which holds the command elements and the
> 16bit size define the size of the command block.
> 
> Each Command Element is structured by 4 words:
>     Write command: address + cmd
>                    register data
>                    register mask
>                    reserved
> 
>     Read command: address + cmd
>                   read data result address,
>                   reserved
>                   reserved
> 
> This patch creates a new header file for BAM driver which contains the
> structures and wrapper functions for command descriptor. This file will
> be used by different QCOM peripheral drivers for forming the command
> descriptor
> 
> Signed-off-by: Abhishek Sahu <absahu@codeaurora.org>
> ---
>  include/linux/dma/qcom_bam_dma.h | 79 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 79 insertions(+)
>  create mode 100644 include/linux/dma/qcom_bam_dma.h
> 
> diff --git a/include/linux/dma/qcom_bam_dma.h b/include/linux/dma/qcom_bam_dma.h
> new file mode 100644
> index 0000000..077d43a
> --- /dev/null
> +++ b/include/linux/dma/qcom_bam_dma.h
> @@ -0,0 +1,79 @@
> +/*
> + * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved.
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#ifndef _QCOM_BAM_DMA_H
> +#define _QCOM_BAM_DMA_H
> +
> +#include <asm/byteorder.h>
> +
> +/*
> + * This data type corresponds to the native Command Element
> + * supported by BAM DMA Engine.
> + *
> + * @cmd_and_addr - upper 8 bits command and lower 24 bits register address.
> + * @data - for write command: content to be written into peripheral register.
> + *	   for read command: dest addr to write peripheral register value.
> + * @mask - register mask.
> + * @reserved - for future usage.
> + *
> + */
> +struct bam_cmd_element {
> +	__le32 cmd_and_addr;
> +	__le32 data;
> +	__le32 mask;
> +	__le32 reserved;
> +};
> +
> +/*
> + * This enum indicates the command type in a command element
> + */
> +enum bam_command_type {
> +	BAM_WRITE_COMMAND = 0,
> +	BAM_READ_COMMAND,
> +};
> +
> +/*
> + * prep_bam_ce_le32 - Wrapper function to prepare a single BAM command
> + * element with the data already in le32 format.
> + *
> + * @bam_ce: bam command element
> + * @addr: target address
> + * @cmd: BAM command
> + * @data: actual data for write and dest addr for read in le32
> + */
> +static inline void
> +bam_prep_ce_le32(struct bam_cmd_element *bam_ce, u32 addr,
> +		 enum bam_command_type cmd, __le32 data)
> +{
> +	bam_ce->cmd_and_addr =
> +		cpu_to_le32((addr & 0xffffff) | ((cmd & 0xff) << 24));
> +	bam_ce->data = data;
> +	bam_ce->mask = cpu_to_le32(0xffffffff);
> +}

Is this being used by clients?

> +
> +/*
> + * bam_prep_ce - Wrapper function to prepare a single BAM command element
> + * with the data.
> + *
> + * @bam_ce: BAM command element
> + * @addr: target address
> + * @cmd: BAM command
> + * @data: actual data for write and dest addr for read
> + */
> +static inline void
> +bam_prep_ce(struct bam_cmd_element *bam_ce, u32 addr,
> +	    enum bam_command_type cmd, u32 data)
> +{
> +	bam_prep_ce_le32(bam_ce, addr, cmd, cpu_to_le32(data));
> +}
> +#endif
> -- 
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
> 

-- 
~Vinod

  reply	other threads:[~2017-07-19 10:09 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-26 12:49 [PATCH v2 0/3] Support for QCOM BAM DMA command descriptor Abhishek Sahu
2017-06-26 12:49 ` [PATCH v2 1/3] dmaengine: add DMA_PREP_CMD for non-Data descriptors Abhishek Sahu
2017-07-17  9:24   ` Abhishek Sahu
2017-07-19 10:11     ` Vinod Koul
2017-07-19 12:26       ` Abhishek Sahu
2017-07-19 10:07   ` Vinod Koul
2017-07-19 12:18     ` Abhishek Sahu
2017-07-28 16:08       ` Abhishek Sahu
2017-07-31 12:34         ` Vinod Koul
2017-07-31 13:01           ` Abhishek Sahu
2017-07-31 16:35           ` Dave Jiang
2017-08-02  4:53             ` Vinod Koul
2017-06-26 12:49 ` [PATCH v2 2/3] dmaengine: qcom: bam_dma: wrapper functions for command descriptor Abhishek Sahu
2017-07-19 10:09   ` Vinod Koul [this message]
2017-07-19 11:31     ` Abhishek Sahu
2017-06-26 12:49 ` [PATCH v2 3/3] dmaengine: qcom: bam_dma: add command descriptor flag Abhishek Sahu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170719100902.GG3053@localhost \
    --to=vinod.koul@intel.com \
    --cc=absahu@codeaurora.org \
    --cc=andy.gross@linaro.org \
    --cc=dan.j.williams@intel.com \
    --cc=david.brown@linaro.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-soc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.