aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/sound/rcar_snd.h8
-rw-r--r--sound/soc/sh/rcar/ssi.c23
2 files changed, 15 insertions, 16 deletions
diff --git a/include/sound/rcar_snd.h b/include/sound/rcar_snd.h
index d76412b84b48..83284cae464c 100644
--- a/include/sound/rcar_snd.h
+++ b/include/sound/rcar_snd.h
@@ -36,14 +36,14 @@
36#define RSND_SSI_CLK_PIN_SHARE (1 << 31) 36#define RSND_SSI_CLK_PIN_SHARE (1 << 31)
37#define RSND_SSI_NO_BUSIF (1 << 30) /* SSI+DMA without BUSIF */ 37#define RSND_SSI_NO_BUSIF (1 << 30) /* SSI+DMA without BUSIF */
38 38
39#define RSND_SSI(_dma_id, _pio_irq, _flags) \ 39#define RSND_SSI(_dma_id, _irq, _flags) \
40{ .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags } 40{ .dma_id = _dma_id, .irq = _irq, .flags = _flags }
41#define RSND_SSI_UNUSED \ 41#define RSND_SSI_UNUSED \
42{ .dma_id = -1, .pio_irq = -1, .flags = 0 } 42{ .dma_id = -1, .irq = -1, .flags = 0 }
43 43
44struct rsnd_ssi_platform_info { 44struct rsnd_ssi_platform_info {
45 int dma_id; 45 int dma_id;
46 int pio_irq; 46 int irq;
47 u32 flags; 47 u32 flags;
48}; 48};
49 49
diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
index 6f7080b017fa..3844fbef4664 100644
--- a/sound/soc/sh/rcar/ssi.c
+++ b/sound/soc/sh/rcar/ssi.c
@@ -82,7 +82,7 @@ struct rsnd_ssi {
82#define rsnd_ssi_nr(priv) ((priv)->ssi_nr) 82#define rsnd_ssi_nr(priv) ((priv)->ssi_nr)
83#define rsnd_mod_to_ssi(_mod) container_of((_mod), struct rsnd_ssi, mod) 83#define rsnd_mod_to_ssi(_mod) container_of((_mod), struct rsnd_ssi, mod)
84#define rsnd_dma_to_ssi(dma) rsnd_mod_to_ssi(rsnd_dma_to_mod(dma)) 84#define rsnd_dma_to_ssi(dma) rsnd_mod_to_ssi(rsnd_dma_to_mod(dma))
85#define rsnd_ssi_pio_available(ssi) ((ssi)->info->pio_irq > 0) 85#define rsnd_ssi_pio_available(ssi) ((ssi)->info->irq > 0)
86#define rsnd_ssi_dma_available(ssi) \ 86#define rsnd_ssi_dma_available(ssi) \
87 rsnd_dma_available(rsnd_mod_to_dma(&(ssi)->mod)) 87 rsnd_dma_available(rsnd_mod_to_dma(&(ssi)->mod))
88#define rsnd_ssi_clk_from_parent(ssi) ((ssi)->parent) 88#define rsnd_ssi_clk_from_parent(ssi) ((ssi)->parent)
@@ -352,9 +352,6 @@ static void rsnd_ssi_record_error(struct rsnd_ssi *ssi, u32 status)
352 } 352 }
353} 353}
354 354
355/*
356 * SSI PIO
357 */
358static int rsnd_ssi_start(struct rsnd_mod *mod, 355static int rsnd_ssi_start(struct rsnd_mod *mod,
359 struct rsnd_dai *rdai) 356 struct rsnd_dai *rdai)
360{ 357{
@@ -386,7 +383,7 @@ static int rsnd_ssi_stop(struct rsnd_mod *mod,
386 return 0; 383 return 0;
387} 384}
388 385
389static irqreturn_t rsnd_ssi_pio_interrupt(int irq, void *data) 386static irqreturn_t rsnd_ssi_interrupt(int irq, void *data)
390{ 387{
391 struct rsnd_ssi *ssi = data; 388 struct rsnd_ssi *ssi = data;
392 struct rsnd_dai *rdai = ssi->rdai; 389 struct rsnd_dai *rdai = ssi->rdai;
@@ -436,17 +433,19 @@ static irqreturn_t rsnd_ssi_pio_interrupt(int irq, void *data)
436 return IRQ_HANDLED; 433 return IRQ_HANDLED;
437} 434}
438 435
436/*
437 * SSI PIO
438 */
439static int rsnd_ssi_pio_probe(struct rsnd_mod *mod, 439static int rsnd_ssi_pio_probe(struct rsnd_mod *mod,
440 struct rsnd_dai *rdai) 440 struct rsnd_dai *rdai)
441{ 441{
442 struct rsnd_priv *priv = rsnd_mod_to_priv(mod); 442 struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
443 struct device *dev = rsnd_priv_to_dev(priv); 443 struct device *dev = rsnd_priv_to_dev(priv);
444 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); 444 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
445 int irq = ssi->info->pio_irq;
446 int ret; 445 int ret;
447 446
448 ret = devm_request_irq(dev, irq, 447 ret = devm_request_irq(dev, ssi->info->irq,
449 rsnd_ssi_pio_interrupt, 448 rsnd_ssi_interrupt,
450 IRQF_SHARED, 449 IRQF_SHARED,
451 dev_name(dev), ssi); 450 dev_name(dev), ssi);
452 if (ret) 451 if (ret)
@@ -477,8 +476,8 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod,
477 int dma_id = ssi->info->dma_id; 476 int dma_id = ssi->info->dma_id;
478 int ret; 477 int ret;
479 478
480 ret = devm_request_irq(dev, ssi->info->pio_irq, 479 ret = devm_request_irq(dev, ssi->info->irq,
481 rsnd_ssi_pio_interrupt, 480 rsnd_ssi_interrupt,
482 IRQF_SHARED, 481 IRQF_SHARED,
483 dev_name(dev), ssi); 482 dev_name(dev), ssi);
484 if (ret) 483 if (ret)
@@ -509,7 +508,7 @@ static int rsnd_ssi_dma_remove(struct rsnd_mod *mod,
509 struct rsnd_priv *priv = rsnd_mod_to_priv(mod); 508 struct rsnd_priv *priv = rsnd_mod_to_priv(mod);
510 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); 509 struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod);
511 struct device *dev = rsnd_priv_to_dev(priv); 510 struct device *dev = rsnd_priv_to_dev(priv);
512 int irq = ssi->info->pio_irq; 511 int irq = ssi->info->irq;
513 512
514 rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod)); 513 rsnd_dma_quit(rsnd_mod_to_priv(mod), rsnd_mod_to_dma(mod));
515 514
@@ -680,7 +679,7 @@ static void rsnd_of_parse_ssi(struct platform_device *pdev,
680 /* 679 /*
681 * irq 680 * irq
682 */ 681 */
683 ssi_info->pio_irq = irq_of_parse_and_map(np, 0); 682 ssi_info->irq = irq_of_parse_and_map(np, 0);
684 683
685 /* 684 /*
686 * DMA 685 * DMA