summaryrefslogtreecommitdiffstats
path: root/arch/arm/include
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-06-11 22:36:27 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2018-06-11 22:36:27 +0200
commit2bf93d1edb895287cf275782dee0ec25fce48580 (patch)
treeeef142deb46c8c66dbace250049cfc03c27a969e /arch/arm/include
parent22222b76c8592ee3bf43a4d67e2a652d533b294a (diff)
parentf0aa8a8cba8b87feb40f2d438ddcfdc50acfbd6c (diff)
downloadbarebox-2bf93d1edb895287cf275782dee0ec25fce48580.tar.gz
barebox-2bf93d1edb895287cf275782dee0ec25fce48580.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'arch/arm/include')
-rw-r--r--arch/arm/include/asm/dma.h11
-rw-r--r--arch/arm/include/asm/syscounter.h24
-rw-r--r--arch/arm/include/asm/system.h24
3 files changed, 59 insertions, 0 deletions
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h
index a68886b162..bb7e62af03 100644
--- a/arch/arm/include/asm/dma.h
+++ b/arch/arm/include/asm/dma.h
@@ -34,6 +34,17 @@ static inline void dma_free_coherent(void *mem, dma_addr_t dma_handle,
free(mem);
}
+static inline dma_addr_t dma_map_single(struct device_d *dev, void *ptr, size_t size,
+ enum dma_data_direction dir)
+{
+ return (dma_addr_t)ptr;
+}
+
+static inline void dma_unmap_single(struct device_d *dev, dma_addr_t addr, size_t size,
+ enum dma_data_direction dir)
+{
+}
+
static inline void dma_sync_single_for_cpu(dma_addr_t address, size_t size,
enum dma_data_direction dir)
{
diff --git a/arch/arm/include/asm/syscounter.h b/arch/arm/include/asm/syscounter.h
new file mode 100644
index 0000000000..a644cfaad6
--- /dev/null
+++ b/arch/arm/include/asm/syscounter.h
@@ -0,0 +1,24 @@
+#ifndef _ASM_SYSCNT_H_
+#define _ASM_SYSCNT_H_
+
+#include <io.h>
+
+#define SYSCNT_CNTCR 0x0000
+#define SYSCNT_CNTCR_EN BIT(0)
+#define SYSCNT_CNTCR_HDBG BIT(1)
+#define SYSCNT_CNTCR_FCREQ(n) BIT(8 + (n))
+
+#define SYSCNT_CNTFID(n) (0x0020 + 4 * (n))
+
+static inline void syscnt_enable(void __iomem *syscnt)
+{
+ writel(SYSCNT_CNTCR_EN | SYSCNT_CNTCR_HDBG | SYSCNT_CNTCR_FCREQ(0),
+ syscnt + SYSCNT_CNTCR);
+}
+
+static inline u32 syscnt_get_cntfrq(void __iomem *syscnt)
+{
+ return readl(syscnt + SYSCNT_CNTFID(0));
+}
+
+#endif \ No newline at end of file
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 57c76186b4..5cf828ea36 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -77,6 +77,30 @@ static inline unsigned long read_mpidr(void)
return val;
}
+
+static inline void set_cntfrq(unsigned long cntfrq)
+{
+ asm volatile("msr cntfrq_el0, %0" : : "r" (cntfrq) : "memory");
+}
+
+static inline unsigned long get_cntfrq(void)
+{
+ unsigned long cntfrq;
+
+ asm volatile("mrs %0, cntfrq_el0" : "=r" (cntfrq));
+ return cntfrq;
+}
+
+static inline unsigned long get_cntpct(void)
+{
+ unsigned long cntpct;
+
+ isb();
+ asm volatile("mrs %0, cntpct_el0" : "=r" (cntpct));
+
+ return cntpct;
+}
+
#endif
static inline unsigned int get_cr(void)
{