diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-02-11 06:06:41 -0500 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-02-11 06:06:41 -0500 |
commit | 2944c2f5d5c88d5893d6a1dad51d0768aed52d00 (patch) | |
tree | b09658ebfcbb078afe82beb6e462b3edebd03ddd /arch | |
parent | f8843c91c60ed744cc7dd6326e44ddb91250ab35 (diff) | |
parent | 5b1d3c3472f1941ab1a78575fe9ada718a7c0c25 (diff) |
Merge remote-tracking branch 'asoc/topic/samsung' into asoc-next
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boot/dts/exynos5250-smdk5250.dts | 26 | ||||
-rw-r--r-- | arch/arm/boot/dts/exynos5250.dtsi | 44 | ||||
-rw-r--r-- | arch/arm/mach-exynos/mach-exynos5-dt.c | 6 | ||||
-rw-r--r-- | arch/arm/plat-samsung/dma-ops.c | 10 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/dma-ops.h | 3 | ||||
-rw-r--r-- | arch/arm/plat-samsung/s3c-dma-ops.c | 3 |
6 files changed, 82 insertions, 10 deletions
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts index e05b18f3c33d..4db9db0a8443 100644 --- a/arch/arm/boot/dts/exynos5250-smdk5250.dts +++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts | |||
@@ -49,6 +49,11 @@ | |||
49 | compatible = "samsung,s524ad0xd1"; | 49 | compatible = "samsung,s524ad0xd1"; |
50 | reg = <0x51>; | 50 | reg = <0x51>; |
51 | }; | 51 | }; |
52 | |||
53 | wm8994: wm8994@1a { | ||
54 | compatible = "wlf,wm8994"; | ||
55 | reg = <0x1a>; | ||
56 | }; | ||
52 | }; | 57 | }; |
53 | 58 | ||
54 | i2c@121D0000 { | 59 | i2c@121D0000 { |
@@ -204,4 +209,25 @@ | |||
204 | samsung,mfc-r = <0x43000000 0x800000>; | 209 | samsung,mfc-r = <0x43000000 0x800000>; |
205 | samsung,mfc-l = <0x51000000 0x800000>; | 210 | samsung,mfc-l = <0x51000000 0x800000>; |
206 | }; | 211 | }; |
212 | |||
213 | i2s0: i2s@03830000 { | ||
214 | gpios = <&gpz 0 2 0 0>, <&gpz 1 2 0 0>, <&gpz 2 2 0 0>, | ||
215 | <&gpz 3 2 0 0>, <&gpz 4 2 0 0>, <&gpz 5 2 0 0>, | ||
216 | <&gpz 6 2 0 0>; | ||
217 | }; | ||
218 | |||
219 | i2s1: i2s@12D60000 { | ||
220 | status = "disabled"; | ||
221 | }; | ||
222 | |||
223 | i2s2: i2s@12D70000 { | ||
224 | status = "disabled"; | ||
225 | }; | ||
226 | |||
227 | sound { | ||
228 | compatible = "samsung,smdk-wm8994"; | ||
229 | |||
230 | samsung,i2s-controller = <&i2s0>; | ||
231 | samsung,audio-codec = <&wm8994>; | ||
232 | }; | ||
207 | }; | 233 | }; |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 3acf594ea60b..f50b4e854355 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
@@ -211,8 +211,9 @@ | |||
211 | compatible = "samsung,exynos4210-spi"; | 211 | compatible = "samsung,exynos4210-spi"; |
212 | reg = <0x12d20000 0x100>; | 212 | reg = <0x12d20000 0x100>; |
213 | interrupts = <0 66 0>; | 213 | interrupts = <0 66 0>; |
214 | tx-dma-channel = <&pdma0 5>; /* preliminary */ | 214 | dmas = <&pdma0 5 |
215 | rx-dma-channel = <&pdma0 4>; /* preliminary */ | 215 | &pdma0 4>; |
216 | dma-names = "tx", "rx"; | ||
216 | #address-cells = <1>; | 217 | #address-cells = <1>; |
217 | #size-cells = <0>; | 218 | #size-cells = <0>; |
218 | }; | 219 | }; |
@@ -221,8 +222,9 @@ | |||
221 | compatible = "samsung,exynos4210-spi"; | 222 | compatible = "samsung,exynos4210-spi"; |
222 | reg = <0x12d30000 0x100>; | 223 | reg = <0x12d30000 0x100>; |
223 | interrupts = <0 67 0>; | 224 | interrupts = <0 67 0>; |
224 | tx-dma-channel = <&pdma1 5>; /* preliminary */ | 225 | dmas = <&pdma1 5 |
225 | rx-dma-channel = <&pdma1 4>; /* preliminary */ | 226 | &pdma1 4>; |
227 | dma-names = "tx", "rx"; | ||
226 | #address-cells = <1>; | 228 | #address-cells = <1>; |
227 | #size-cells = <0>; | 229 | #size-cells = <0>; |
228 | }; | 230 | }; |
@@ -231,8 +233,9 @@ | |||
231 | compatible = "samsung,exynos4210-spi"; | 233 | compatible = "samsung,exynos4210-spi"; |
232 | reg = <0x12d40000 0x100>; | 234 | reg = <0x12d40000 0x100>; |
233 | interrupts = <0 68 0>; | 235 | interrupts = <0 68 0>; |
234 | tx-dma-channel = <&pdma0 7>; /* preliminary */ | 236 | dmas = <&pdma0 7 |
235 | rx-dma-channel = <&pdma0 6>; /* preliminary */ | 237 | &pdma0 6>; |
238 | dma-names = "tx", "rx"; | ||
236 | #address-cells = <1>; | 239 | #address-cells = <1>; |
237 | #size-cells = <0>; | 240 | #size-cells = <0>; |
238 | }; | 241 | }; |
@@ -269,6 +272,35 @@ | |||
269 | #size-cells = <0>; | 272 | #size-cells = <0>; |
270 | }; | 273 | }; |
271 | 274 | ||
275 | i2s0: i2s@03830000 { | ||
276 | compatible = "samsung,i2s-v5"; | ||
277 | reg = <0x03830000 0x100>; | ||
278 | dmas = <&pdma0 10 | ||
279 | &pdma0 9 | ||
280 | &pdma0 8>; | ||
281 | dma-names = "tx", "rx", "tx-sec"; | ||
282 | samsung,supports-6ch; | ||
283 | samsung,supports-rstclr; | ||
284 | samsung,supports-secdai; | ||
285 | samsung,idma-addr = <0x03000000>; | ||
286 | }; | ||
287 | |||
288 | i2s1: i2s@12D60000 { | ||
289 | compatible = "samsung,i2s-v5"; | ||
290 | reg = <0x12D60000 0x100>; | ||
291 | dmas = <&pdma1 12 | ||
292 | &pdma1 11>; | ||
293 | dma-names = "tx", "rx"; | ||
294 | }; | ||
295 | |||
296 | i2s2: i2s@12D70000 { | ||
297 | compatible = "samsung,i2s-v5"; | ||
298 | reg = <0x12D70000 0x100>; | ||
299 | dmas = <&pdma0 12 | ||
300 | &pdma0 11>; | ||
301 | dma-names = "tx", "rx"; | ||
302 | }; | ||
303 | |||
272 | amba { | 304 | amba { |
273 | #address-cells = <1>; | 305 | #address-cells = <1>; |
274 | #size-cells = <1>; | 306 | #size-cells = <1>; |
diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index e99d3d8f2bcf..ea9e3020972d 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c | |||
@@ -104,6 +104,12 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = { | |||
104 | OF_DEV_AUXDATA("samsung,mfc-v6", 0x11000000, "s5p-mfc-v6", NULL), | 104 | OF_DEV_AUXDATA("samsung,mfc-v6", 0x11000000, "s5p-mfc-v6", NULL), |
105 | OF_DEV_AUXDATA("samsung,exynos5250-tmu", 0x10060000, | 105 | OF_DEV_AUXDATA("samsung,exynos5250-tmu", 0x10060000, |
106 | "exynos-tmu", NULL), | 106 | "exynos-tmu", NULL), |
107 | OF_DEV_AUXDATA("samsung,i2s-v5", 0x03830000, | ||
108 | "samsung-i2s.0", NULL), | ||
109 | OF_DEV_AUXDATA("samsung,i2s-v5", 0x12D60000, | ||
110 | "samsung-i2s.1", NULL), | ||
111 | OF_DEV_AUXDATA("samsung,i2s-v5", 0x12D70000, | ||
112 | "samsung-i2s.2", NULL), | ||
107 | {}, | 113 | {}, |
108 | }; | 114 | }; |
109 | 115 | ||
diff --git a/arch/arm/plat-samsung/dma-ops.c b/arch/arm/plat-samsung/dma-ops.c index d088afa034e8..71d58ddea9c1 100644 --- a/arch/arm/plat-samsung/dma-ops.c +++ b/arch/arm/plat-samsung/dma-ops.c | |||
@@ -19,7 +19,8 @@ | |||
19 | #include <mach/dma.h> | 19 | #include <mach/dma.h> |
20 | 20 | ||
21 | static unsigned samsung_dmadev_request(enum dma_ch dma_ch, | 21 | static unsigned samsung_dmadev_request(enum dma_ch dma_ch, |
22 | struct samsung_dma_req *param) | 22 | struct samsung_dma_req *param, |
23 | struct device *dev, char *ch_name) | ||
23 | { | 24 | { |
24 | dma_cap_mask_t mask; | 25 | dma_cap_mask_t mask; |
25 | void *filter_param; | 26 | void *filter_param; |
@@ -33,7 +34,12 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch, | |||
33 | */ | 34 | */ |
34 | filter_param = (dma_ch == DMACH_DT_PROP) ? | 35 | filter_param = (dma_ch == DMACH_DT_PROP) ? |
35 | (void *)param->dt_dmach_prop : (void *)dma_ch; | 36 | (void *)param->dt_dmach_prop : (void *)dma_ch; |
36 | return (unsigned)dma_request_channel(mask, pl330_filter, filter_param); | 37 | |
38 | if (dev->of_node) | ||
39 | return (unsigned)dma_request_slave_channel(dev, ch_name); | ||
40 | else | ||
41 | return (unsigned)dma_request_channel(mask, pl330_filter, | ||
42 | filter_param); | ||
37 | } | 43 | } |
38 | 44 | ||
39 | static int samsung_dmadev_release(unsigned ch, void *param) | 45 | static int samsung_dmadev_release(unsigned ch, void *param) |
diff --git a/arch/arm/plat-samsung/include/plat/dma-ops.h b/arch/arm/plat-samsung/include/plat/dma-ops.h index f5144cdd3001..114178268b75 100644 --- a/arch/arm/plat-samsung/include/plat/dma-ops.h +++ b/arch/arm/plat-samsung/include/plat/dma-ops.h | |||
@@ -39,7 +39,8 @@ struct samsung_dma_config { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | struct samsung_dma_ops { | 41 | struct samsung_dma_ops { |
42 | unsigned (*request)(enum dma_ch ch, struct samsung_dma_req *param); | 42 | unsigned (*request)(enum dma_ch ch, struct samsung_dma_req *param, |
43 | struct device *dev, char *ch_name); | ||
43 | int (*release)(unsigned ch, void *param); | 44 | int (*release)(unsigned ch, void *param); |
44 | int (*config)(unsigned ch, struct samsung_dma_config *param); | 45 | int (*config)(unsigned ch, struct samsung_dma_config *param); |
45 | int (*prepare)(unsigned ch, struct samsung_dma_prep *param); | 46 | int (*prepare)(unsigned ch, struct samsung_dma_prep *param); |
diff --git a/arch/arm/plat-samsung/s3c-dma-ops.c b/arch/arm/plat-samsung/s3c-dma-ops.c index f99448c48d30..0cc40aea3f5a 100644 --- a/arch/arm/plat-samsung/s3c-dma-ops.c +++ b/arch/arm/plat-samsung/s3c-dma-ops.c | |||
@@ -36,7 +36,8 @@ static void s3c_dma_cb(struct s3c2410_dma_chan *channel, void *param, | |||
36 | } | 36 | } |
37 | 37 | ||
38 | static unsigned s3c_dma_request(enum dma_ch dma_ch, | 38 | static unsigned s3c_dma_request(enum dma_ch dma_ch, |
39 | struct samsung_dma_req *param) | 39 | struct samsung_dma_req *param, |
40 | struct device *dev, char *ch_name) | ||
40 | { | 41 | { |
41 | struct cb_data *data; | 42 | struct cb_data *data; |
42 | 43 | ||