aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2013-02-11 06:06:41 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-02-11 06:06:41 -0500
commit2944c2f5d5c88d5893d6a1dad51d0768aed52d00 (patch)
treeb09658ebfcbb078afe82beb6e462b3edebd03ddd /arch
parentf8843c91c60ed744cc7dd6326e44ddb91250ab35 (diff)
parent5b1d3c3472f1941ab1a78575fe9ada718a7c0c25 (diff)
Merge remote-tracking branch 'asoc/topic/samsung' into asoc-next
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/exynos5250-smdk5250.dts26
-rw-r--r--arch/arm/boot/dts/exynos5250.dtsi44
-rw-r--r--arch/arm/mach-exynos/mach-exynos5-dt.c6
-rw-r--r--arch/arm/plat-samsung/dma-ops.c10
-rw-r--r--arch/arm/plat-samsung/include/plat/dma-ops.h3
-rw-r--r--arch/arm/plat-samsung/s3c-dma-ops.c3
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
21static unsigned samsung_dmadev_request(enum dma_ch dma_ch, 21static 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
39static int samsung_dmadev_release(unsigned ch, void *param) 45static 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
41struct samsung_dma_ops { 41struct 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
38static unsigned s3c_dma_request(enum dma_ch dma_ch, 38static 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