From 3a7bcb3a748066332bff87d12956cebcf6116dc0 Mon Sep 17 00:00:00 2001 From: Russell King Date: Sun, 18 Dec 2011 12:06:25 +0000 Subject: [PATCH] --- yaml --- r: 295357 b: refs/heads/master c: cc6e75af8df7aa40019ff58357170c8dd960281f h: refs/heads/master i: 295355: dfff861a188fea5973a1f888a9113096359301c2 v: v3 --- [refs] | 2 +- trunk/include/linux/amba/bus.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a64bc135635b..3cdccd2e1778 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2eac58d5026e4ec8b17ff8b62877fea9e1d2f1b3 +refs/heads/master: cc6e75af8df7aa40019ff58357170c8dd960281f diff --git a/trunk/include/linux/amba/bus.h b/trunk/include/linux/amba/bus.h index e1929620e5a8..a9fab831caf8 100644 --- a/trunk/include/linux/amba/bus.h +++ b/trunk/include/linux/amba/bus.h @@ -92,4 +92,37 @@ void amba_release_regions(struct amba_device *); #define amba_manf(d) AMBA_MANF_BITS((d)->periphid) #define amba_part(d) AMBA_PART_BITS((d)->periphid) +#define __AMBA_DEV(busid, data, mask) \ + { \ + .coherent_dma_mask = mask, \ + .init_name = busid, \ + .platform_data = data, \ + } + +/* + * APB devices do not themselves have the ability to address memory, + * so DMA masks should be zero (much like USB peripheral devices.) + * The DMA controller DMA masks should be used instead (much like + * USB host controllers in conventional PCs.) + */ +#define AMBA_APB_DEVICE(name, busid, id, base, irqs, data) \ +struct amba_device name##_device = { \ + .dev = __AMBA_DEV(busid, data, 0), \ + .res = DEFINE_RES_MEM(base, SZ_4K), \ + .irq = irqs, \ + .periphid = id, \ +} + +/* + * AHB devices are DMA capable, so set their DMA masks + */ +#define AMBA_AHB_DEVICE(name, busid, id, base, irqs, data) \ +struct amba_device name##_device = { \ + .dev = __AMBA_DEV(busid, data, ~0ULL), \ + .res = DEFINE_RES_MEM(base, SZ_4K), \ + .dma_mask = ~0ULL, \ + .irq = irqs, \ + .periphid = id, \ +} + #endif