Blame view
arch/arm/mach-s5pv210/dma.c
3.51 KB
dafc95430 ARM: S5PV210: Use... |
1 2 3 4 5 |
/* linux/arch/arm/mach-s5pv210/dma.c * * Copyright (c) 2011 Samsung Electronics Co., Ltd. * http://www.samsung.com * |
7d1a2077a S5PV210: DMA: Add... |
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
* Copyright (C) 2010 Samsung Electronics Co. Ltd. * Jaswinder Singh <jassi.brar@samsung.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
7d1a2077a S5PV210: DMA: Add... |
23 |
#include <linux/dma-mapping.h> |
dafc95430 ARM: S5PV210: Use... |
24 25 |
#include <linux/amba/bus.h> #include <linux/amba/pl330.h> |
7d1a2077a S5PV210: DMA: Add... |
26 |
|
dafc95430 ARM: S5PV210: Use... |
27 |
#include <asm/irq.h> |
7d1a2077a S5PV210: DMA: Add... |
28 29 30 31 32 |
#include <plat/devs.h> #include <plat/irqs.h> #include <mach/map.h> #include <mach/irqs.h> |
dafc95430 ARM: S5PV210: Use... |
33 |
#include <mach/dma.h> |
7d1a2077a S5PV210: DMA: Add... |
34 35 |
static u64 dma_dmamask = DMA_BIT_MASK(32); |
8742e0441 ARM: S5PV210: Mod... |
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
u8 pdma0_peri[] = { DMACH_UART0_RX, DMACH_UART0_TX, DMACH_UART1_RX, DMACH_UART1_TX, DMACH_UART2_RX, DMACH_UART2_TX, DMACH_UART3_RX, DMACH_UART3_TX, DMACH_MAX, DMACH_I2S0_RX, DMACH_I2S0_TX, DMACH_I2S0S_TX, DMACH_I2S1_RX, DMACH_I2S1_TX, DMACH_MAX, DMACH_MAX, DMACH_SPI0_RX, DMACH_SPI0_TX, DMACH_SPI1_RX, DMACH_SPI1_TX, DMACH_MAX, DMACH_MAX, DMACH_AC97_MICIN, DMACH_AC97_PCMIN, DMACH_AC97_PCMOUT, DMACH_MAX, DMACH_PWM, DMACH_SPDIF, |
7d1a2077a S5PV210: DMA: Add... |
65 |
}; |
dafc95430 ARM: S5PV210: Use... |
66 67 |
struct dma_pl330_platdata s5pv210_pdma0_pdata = { .nr_valid_peri = ARRAY_SIZE(pdma0_peri), |
8742e0441 ARM: S5PV210: Mod... |
68 |
.peri_id = pdma0_peri, |
7d1a2077a S5PV210: DMA: Add... |
69 |
}; |
dafc95430 ARM: S5PV210: Use... |
70 71 72 |
struct amba_device s5pv210_device_pdma0 = { .dev = { .init_name = "dma-pl330.0", |
7d1a2077a S5PV210: DMA: Add... |
73 74 75 76 |
.dma_mask = &dma_dmamask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s5pv210_pdma0_pdata, }, |
dafc95430 ARM: S5PV210: Use... |
77 78 79 |
.res = { .start = S5PV210_PA_PDMA0, .end = S5PV210_PA_PDMA0 + SZ_4K, |
7d1a2077a S5PV210: DMA: Add... |
80 81 |
.flags = IORESOURCE_MEM, }, |
dafc95430 ARM: S5PV210: Use... |
82 83 |
.irq = {IRQ_PDMA0, NO_IRQ}, .periphid = 0x00041330, |
7d1a2077a S5PV210: DMA: Add... |
84 |
}; |
8742e0441 ARM: S5PV210: Mod... |
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
u8 pdma1_peri[] = { DMACH_UART0_RX, DMACH_UART0_TX, DMACH_UART1_RX, DMACH_UART1_TX, DMACH_UART2_RX, DMACH_UART2_TX, DMACH_UART3_RX, DMACH_UART3_TX, DMACH_MAX, DMACH_I2S0_RX, DMACH_I2S0_TX, DMACH_I2S0S_TX, DMACH_I2S1_RX, DMACH_I2S1_TX, DMACH_I2S2_RX, DMACH_I2S2_TX, DMACH_SPI0_RX, DMACH_SPI0_TX, DMACH_SPI1_RX, DMACH_SPI1_TX, DMACH_MAX, DMACH_MAX, DMACH_PCM0_RX, DMACH_PCM0_TX, DMACH_PCM1_RX, DMACH_PCM1_TX, DMACH_MSM_REQ0, DMACH_MSM_REQ1, DMACH_MSM_REQ2, DMACH_MSM_REQ3, DMACH_PCM2_RX, DMACH_PCM2_TX, |
7d1a2077a S5PV210: DMA: Add... |
118 |
}; |
dafc95430 ARM: S5PV210: Use... |
119 120 |
struct dma_pl330_platdata s5pv210_pdma1_pdata = { .nr_valid_peri = ARRAY_SIZE(pdma1_peri), |
8742e0441 ARM: S5PV210: Mod... |
121 |
.peri_id = pdma1_peri, |
dafc95430 ARM: S5PV210: Use... |
122 123 124 125 126 |
}; struct amba_device s5pv210_device_pdma1 = { .dev = { .init_name = "dma-pl330.1", |
7d1a2077a S5PV210: DMA: Add... |
127 128 129 130 |
.dma_mask = &dma_dmamask, .coherent_dma_mask = DMA_BIT_MASK(32), .platform_data = &s5pv210_pdma1_pdata, }, |
dafc95430 ARM: S5PV210: Use... |
131 132 133 134 135 136 137 |
.res = { .start = S5PV210_PA_PDMA1, .end = S5PV210_PA_PDMA1 + SZ_4K, .flags = IORESOURCE_MEM, }, .irq = {IRQ_PDMA1, NO_IRQ}, .periphid = 0x00041330, |
7d1a2077a S5PV210: DMA: Add... |
138 139 140 141 |
}; static int __init s5pv210_dma_init(void) { |
8742e0441 ARM: S5PV210: Mod... |
142 143 |
dma_cap_set(DMA_SLAVE, s5pv210_pdma0_pdata.cap_mask); dma_cap_set(DMA_CYCLIC, s5pv210_pdma0_pdata.cap_mask); |
dafc95430 ARM: S5PV210: Use... |
144 |
amba_device_register(&s5pv210_device_pdma0, &iomem_resource); |
8742e0441 ARM: S5PV210: Mod... |
145 146 147 |
dma_cap_set(DMA_SLAVE, s5pv210_pdma1_pdata.cap_mask); dma_cap_set(DMA_CYCLIC, s5pv210_pdma1_pdata.cap_mask); |
f86147cc8 ARM: S5PV210: reg... |
148 |
amba_device_register(&s5pv210_device_pdma1, &iomem_resource); |
7d1a2077a S5PV210: DMA: Add... |
149 150 151 152 |
return 0; } arch_initcall(s5pv210_dma_init); |