[Sound-open-firmware] [RFC PATCH 2/6] dma: ops: introduce channel_status() op to retrieve number of channels in use

Liam Girdwood liam.r.girdwood at linux.intel.com
Tue Jun 5 11:18:11 CEST 2018


On Mon, 2018-06-04 at 21:23 -0700, Ranjani Sridharan wrote:
> This patch adds a new dma op for retreiving the number of channels
> in use in a given DMAC. This will be useful in providing basic
> and primitive QoS while allocating DMAC for various users.
> 
> Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
> ---
>  src/drivers/dw-dma.c  | 19 +++++++++++++++++++
>  src/drivers/hda-dma.c | 20 ++++++++++++++++++++
>  src/include/sof/dma.h |  7 +++++++
>  3 files changed, 46 insertions(+)
> 
> diff --git a/src/drivers/dw-dma.c b/src/drivers/dw-dma.c
> index c064330..0ed742f 100644
> --- a/src/drivers/dw-dma.c
> +++ b/src/drivers/dw-dma.c
> @@ -289,6 +289,24 @@ static inline void dw_update_bits(struct dma *dma,
> uint32_t reg, uint32_t mask,
>         io_reg_update_bits(dma_base(dma) + reg, mask, value);
>  }
>  
> +/* get the number of DMA channels in use */
> +static int dw_dma_channel_status(struct dma *dma)
> +{
> +       struct dma_pdata *p = dma_get_drvdata(dma);
> +       int i, count = 0;
> +
> +       trace_dma("Dct");
> +
> +       for (i = 0; i < DW_MAX_CHAN; i++) {
> +
> +               /* find channels in use */
> +               if (p->chan[i].status != COMP_STATE_INIT)
> +                       count++;
> +       }
> +
> +       return count;
> +}


Easier and quicker just to store this as data and atomically inc/dec via channel
get()/put().

Liam


More information about the Sound-open-firmware mailing list