[U-Boot] [RFC v2 01/15] dma: move dma_ops to dma-uclass.h

Simon Glass
2018-02-20T18:49:26Z

Hi Alvaro,

On 20 February 2018 at 10:46, Álvaro Fernández Rojas <noltari@gmail.com> wrote:
> Move dma_ops to a separate header file, following other uclass implementations.
>
> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
> ---
> drivers/dma/dma-uclass.c | 3 ++-
> include/dma-uclass.h | 38 ++++++++++++++++++++++++++++++++++++++
> include/dma.h | 22 ----------------------
> 3 files changed, 40 insertions(+), 23 deletions(-)
> create mode 100644 include/dma-uclass.h
>
> diff --git a/drivers/dma/dma-uclass.c b/drivers/dma/dma-uclass.c
> index 3d0ce22fbc..6fd4e1b35d 100644
> --- a/drivers/dma/dma-uclass.c
> +++ b/drivers/dma/dma-uclass.c
> @@ -10,10 +10,11 @@
> */
>
> #include <common.h>
> -#include <dma.h>
> #include <dm.h>
> #include <dm/uclass-internal.h>
> #include <dm/device-internal.h>
> +#include <dma.h>
> +#include <dma-uclass.h>
> #include <errno.h>
>
> DECLARE_GLOBAL_DATA_PTR;
> diff --git a/include/dma-uclass.h b/include/dma-uclass.h
> new file mode 100644
> index 0000000000..e29ad103f2
> --- /dev/null
> +++ b/include/dma-uclass.h
> @@ -0,0 +1,38 @@
> +/*
> + * Copyright (C) 2018 Álvaro Fernández Rojas <noltari@gmail.com>
> + * Copyright (C) 2015 Texas Instruments Incorporated, <www.ti.com>
> + * Written by Mugunthan V N <mugunthanvnm@ti.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#ifndef _DMA_UCLASS_H
> +#define _DMA_UCLASS_H
> +
> +/* See dma.h for background documentation. */
> +
> +#include <dma.h>
> +
> +/*
> + * struct dma_ops - Driver model DMA operations
> + *
> + * The uclass interface is implemented by all DMA devices which use
> + * driver model.
> + */
> +struct dma_ops {
> + /*
> + * Get the current timer count

Is this the correct purpose for the transfer() method?
> + *
> + * @dev: The DMA device
> + * @direction: direction of data transfer should be one from
> + enum dma_direction
> + * @dst: Destination pointer
> + * @src: Source pointer
> + * @len: Length of the data to be copied.

Is this the number of bytes

What does this function actually do? Does it queue a transfer which
completes later? How do I check if it is done?

Please add a lot more docs here.

> + * @return: 0 if OK, -ve on error
> + */
> + int (*transfer)(struct udevice *dev, int direction, void *dst,
> + void *src, size_t len);
> +};
> +
> +#endif /* _DMA_UCLASS_H */
> diff --git a/include/dma.h b/include/dma.h
> index 71fa77f2ea..89320f10d9 100644
> --- a/include/dma.h
> +++ b/include/dma.h
> @@ -28,28 +28,6 @@ enum dma_direction {
> #define DMA_SUPPORTS_DEV_TO_DEV BIT(3)
>
> /*
> - * struct dma_ops - Driver model DMA operations
> - *
> - * The uclass interface is implemented by all DMA devices which use
> - * driver model.
> - */
> -struct dma_ops {
> - /*
> - * Get the current timer count
> - *
> - * @dev: The DMA device
> - * @direction: direction of data transfer should be one from
> - enum dma_direction
> - * @dst: Destination pointer
> - * @src: Source pointer
> - * @len: Length of the data to be copied.
> - * @return: 0 if OK, -ve on error
> - */
> - int (*transfer)(struct udevice *dev, int direction, void *dst,
> - void *src, size_t len);
> -};
> -
> -/*
> * struct dma_dev_priv - information about a device used by the uclass
> *
> * @supported: mode of transfers that DMA can support, should be
> --
> 2.11.0
>

Regards,
Simon