summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2016-02-23 08:13:46 -0500
committerTom Rini <trini@konsulko.com>2016-02-23 08:13:46 -0500
commitb625fab7069cab52fd8e0c3dbb25e0d04d020173 (patch)
tree13d5c94c6c36724136264a4c3b9764583eace1c4 /include
parentbed6bd326e89366152609821a752d361b2183b46 (diff)
parent674f3609aad39f099a5c3605643a6be124504b96 (diff)
downloadu-boot-imx-b625fab7069cab52fd8e0c3dbb25e0d04d020173.zip
u-boot-imx-b625fab7069cab52fd8e0c3dbb25e0d04d020173.tar.gz
u-boot-imx-b625fab7069cab52fd8e0c3dbb25e0d04d020173.tar.bz2
Merge branch 'master' of git://git.denx.de/u-boot-spi
Diffstat (limited to 'include')
-rw-r--r--include/configs/zynq-common.h4
-rw-r--r--include/dm/uclass-id.h1
-rw-r--r--include/dma.h86
3 files changed, 91 insertions, 0 deletions
diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
index 638be2f..4a81d41 100644
--- a/include/configs/zynq-common.h
+++ b/include/configs/zynq-common.h
@@ -197,7 +197,11 @@
/* Environment */
#ifndef CONFIG_ENV_IS_NOWHERE
# ifndef CONFIG_SYS_NO_FLASH
+/* Environment in NOR flash */
# define CONFIG_ENV_IS_IN_FLASH
+# elif defined(CONFIG_ZYNQ_QSPI)
+/* Environment in Serial Flash */
+# define CONFIG_ENV_IS_IN_SPI_FLASH
# elif defined(CONFIG_SYS_NO_FLASH)
# define CONFIG_ENV_IS_NOWHERE
# endif
diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h
index 73cd3ac..3bea308 100644
--- a/include/dm/uclass-id.h
+++ b/include/dm/uclass-id.h
@@ -31,6 +31,7 @@ enum uclass_id {
UCLASS_CROS_EC, /* Chrome OS EC */
UCLASS_DISK, /* Disk controller, e.g. SATA */
UCLASS_DISPLAY, /* Display (e.g. DisplayPort, HDMI) */
+ UCLASS_DMA, /* Direct Memory Access */
UCLASS_RAM, /* RAM controller */
UCLASS_ETH, /* Ethernet device */
UCLASS_GPIO, /* Bank of general-purpose I/O pins */
diff --git a/include/dma.h b/include/dma.h
new file mode 100644
index 0000000..71fa77f
--- /dev/null
+++ b/include/dma.h
@@ -0,0 +1,86 @@
+/*
+ * (C) Copyright 2015
+ * Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _DMA_H_
+#define _DMA_H_
+
+/*
+ * enum dma_direction - dma transfer direction indicator
+ * @DMA_MEM_TO_MEM: Memcpy mode
+ * @DMA_MEM_TO_DEV: From Memory to Device
+ * @DMA_DEV_TO_MEM: From Device to Memory
+ * @DMA_DEV_TO_DEV: From Device to Device
+ */
+enum dma_direction {
+ DMA_MEM_TO_MEM,
+ DMA_MEM_TO_DEV,
+ DMA_DEV_TO_MEM,
+ DMA_DEV_TO_DEV,
+};
+
+#define DMA_SUPPORTS_MEM_TO_MEM BIT(0)
+#define DMA_SUPPORTS_MEM_TO_DEV BIT(1)
+#define DMA_SUPPORTS_DEV_TO_MEM BIT(2)
+#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
+ * one/multiple of DMA_SUPPORTS_*
+ */
+struct dma_dev_priv {
+ u32 supported;
+};
+
+/*
+ * dma_get_device - get a DMA device which supports transfer
+ * type of transfer_type
+ *
+ * @transfer_type - transfer type should be one/multiple of
+ * DMA_SUPPORTS_*
+ * @devp - udevice pointer to return the found device
+ * @return - will return on success and devp will hold the
+ * pointer to the device
+ */
+int dma_get_device(u32 transfer_type, struct udevice **devp);
+
+/*
+ * dma_memcpy - try to use DMA to do a mem copy which will be
+ * much faster than CPU mem copy
+ *
+ * @dst - destination pointer
+ * @src - souce pointer
+ * @len - data length to be copied
+ * @return - on successful transfer returns no of bytes
+ transferred and on failure return error code.
+ */
+int dma_memcpy(void *dst, void *src, size_t len);
+
+#endif /* _DMA_H_ */