aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/codecs/wm_hubs.c2
-rw-r--r--sound/soc/omap/omap-mcbsp.c119
-rw-r--r--sound/soc/omap/omap-mcpdm.c1
-rw-r--r--sound/soc/pxa/tosa.c2
-rw-r--r--sound/soc/sh/sh7760-ac97.c4
-rw-r--r--sound/soc/sh/siu_pcm.c2
-rw-r--r--sound/soc/soc-core.c1
-rw-r--r--sound/soc/soc-dapm.c1
8 files changed, 37 insertions, 95 deletions
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c
index 31c2a5724d85..008b1f27aea8 100644
--- a/sound/soc/codecs/wm_hubs.c
+++ b/sound/soc/codecs/wm_hubs.c
@@ -130,7 +130,7 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec)
130 reg_r = reg & WM8993_DCS_DAC_WR_VAL_0_MASK; 130 reg_r = reg & WM8993_DCS_DAC_WR_VAL_0_MASK;
131 break; 131 break;
132 default: 132 default:
133 WARN(1, "Unknown DCS readback method"); 133 WARN(1, "Unknown DCS readback method\n");
134 break; 134 break;
135 } 135 }
136 136
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index 99696187b55a..d211c9fa5a91 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -31,7 +31,6 @@
31#include <sound/initval.h> 31#include <sound/initval.h>
32#include <sound/soc.h> 32#include <sound/soc.h>
33 33
34#include <plat/control.h>
35#include <plat/dma.h> 34#include <plat/dma.h>
36#include <plat/mcbsp.h> 35#include <plat/mcbsp.h>
37#include "omap-mcbsp.h" 36#include "omap-mcbsp.h"
@@ -598,93 +597,6 @@ static int omap_mcbsp_dai_set_clkdiv(struct snd_soc_dai *cpu_dai,
598 return 0; 597 return 0;
599} 598}
600 599
601static int omap_mcbsp_dai_set_clks_src(struct omap_mcbsp_data *mcbsp_data,
602 int clk_id)
603{
604 int sel_bit;
605 u16 reg, reg_devconf1 = OMAP243X_CONTROL_DEVCONF1;
606
607 if (cpu_class_is_omap1()) {
608 /* OMAP1's can use only external source clock */
609 if (unlikely(clk_id == OMAP_MCBSP_SYSCLK_CLKS_FCLK))
610 return -EINVAL;
611 else
612 return 0;
613 }
614
615 if (cpu_is_omap2420() && mcbsp_data->bus_id > 1)
616 return -EINVAL;
617
618 if (cpu_is_omap343x())
619 reg_devconf1 = OMAP343X_CONTROL_DEVCONF1;
620
621 switch (mcbsp_data->bus_id) {
622 case 0:
623 reg = OMAP2_CONTROL_DEVCONF0;
624 sel_bit = 2;
625 break;
626 case 1:
627 reg = OMAP2_CONTROL_DEVCONF0;
628 sel_bit = 6;
629 break;
630 case 2:
631 reg = reg_devconf1;
632 sel_bit = 0;
633 break;
634 case 3:
635 reg = reg_devconf1;
636 sel_bit = 2;
637 break;
638 case 4:
639 reg = reg_devconf1;
640 sel_bit = 4;
641 break;
642 default:
643 return -EINVAL;
644 }
645
646 if (clk_id == OMAP_MCBSP_SYSCLK_CLKS_FCLK)
647 omap_ctrl_writel(omap_ctrl_readl(reg) & ~(1 << sel_bit), reg);
648 else
649 omap_ctrl_writel(omap_ctrl_readl(reg) | (1 << sel_bit), reg);
650
651 return 0;
652}
653
654static int omap_mcbsp_dai_set_rcvr_src(struct omap_mcbsp_data *mcbsp_data,
655 int clk_id)
656{
657 int sel_bit, set = 0;
658 u16 reg = OMAP2_CONTROL_DEVCONF0;
659
660 if (cpu_class_is_omap1())
661 return -EINVAL; /* TODO: Can this be implemented for OMAP1? */
662 if (mcbsp_data->bus_id != 0)
663 return -EINVAL;
664
665 switch (clk_id) {
666 case OMAP_MCBSP_CLKR_SRC_CLKX:
667 set = 1;
668 case OMAP_MCBSP_CLKR_SRC_CLKR:
669 sel_bit = 3;
670 break;
671 case OMAP_MCBSP_FSR_SRC_FSX:
672 set = 1;
673 case OMAP_MCBSP_FSR_SRC_FSR:
674 sel_bit = 4;
675 break;
676 default:
677 return -EINVAL;
678 }
679
680 if (set)
681 omap_ctrl_writel(omap_ctrl_readl(reg) | (1 << sel_bit), reg);
682 else
683 omap_ctrl_writel(omap_ctrl_readl(reg) & ~(1 << sel_bit), reg);
684
685 return 0;
686}
687
688static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, 600static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
689 int clk_id, unsigned int freq, 601 int clk_id, unsigned int freq,
690 int dir) 602 int dir)
@@ -693,6 +605,14 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
693 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; 605 struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
694 int err = 0; 606 int err = 0;
695 607
608 /* The McBSP signal muxing functions are only available on McBSP1 */
609 if (clk_id == OMAP_MCBSP_CLKR_SRC_CLKR ||
610 clk_id == OMAP_MCBSP_CLKR_SRC_CLKX ||
611 clk_id == OMAP_MCBSP_FSR_SRC_FSR ||
612 clk_id == OMAP_MCBSP_FSR_SRC_FSX)
613 if (cpu_class_is_omap1() || mcbsp_data->bus_id != 0)
614 return -EINVAL;
615
696 mcbsp_data->in_freq = freq; 616 mcbsp_data->in_freq = freq;
697 617
698 switch (clk_id) { 618 switch (clk_id) {
@@ -700,8 +620,20 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
700 regs->srgr2 |= CLKSM; 620 regs->srgr2 |= CLKSM;
701 break; 621 break;
702 case OMAP_MCBSP_SYSCLK_CLKS_FCLK: 622 case OMAP_MCBSP_SYSCLK_CLKS_FCLK:
623 if (cpu_class_is_omap1()) {
624 err = -EINVAL;
625 break;
626 }
627 err = omap2_mcbsp_set_clks_src(mcbsp_data->bus_id,
628 MCBSP_CLKS_PRCM_SRC);
629 break;
703 case OMAP_MCBSP_SYSCLK_CLKS_EXT: 630 case OMAP_MCBSP_SYSCLK_CLKS_EXT:
704 err = omap_mcbsp_dai_set_clks_src(mcbsp_data, clk_id); 631 if (cpu_class_is_omap1()) {
632 err = 0;
633 break;
634 }
635 err = omap2_mcbsp_set_clks_src(mcbsp_data->bus_id,
636 MCBSP_CLKS_PAD_SRC);
705 break; 637 break;
706 638
707 case OMAP_MCBSP_SYSCLK_CLKX_EXT: 639 case OMAP_MCBSP_SYSCLK_CLKX_EXT:
@@ -710,11 +642,18 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
710 regs->pcr0 |= SCLKME; 642 regs->pcr0 |= SCLKME;
711 break; 643 break;
712 644
645
713 case OMAP_MCBSP_CLKR_SRC_CLKR: 646 case OMAP_MCBSP_CLKR_SRC_CLKR:
647 omap2_mcbsp1_mux_clkr_src(CLKR_SRC_CLKR);
648 break;
714 case OMAP_MCBSP_CLKR_SRC_CLKX: 649 case OMAP_MCBSP_CLKR_SRC_CLKX:
650 omap2_mcbsp1_mux_clkr_src(CLKR_SRC_CLKX);
651 break;
715 case OMAP_MCBSP_FSR_SRC_FSR: 652 case OMAP_MCBSP_FSR_SRC_FSR:
653 omap2_mcbsp1_mux_fsr_src(FSR_SRC_FSR);
654 break;
716 case OMAP_MCBSP_FSR_SRC_FSX: 655 case OMAP_MCBSP_FSR_SRC_FSX:
717 err = omap_mcbsp_dai_set_rcvr_src(mcbsp_data, clk_id); 656 omap2_mcbsp1_mux_fsr_src(FSR_SRC_FSX);
718 break; 657 break;
719 default: 658 default:
720 err = -ENODEV; 659 err = -ENODEV;
diff --git a/sound/soc/omap/omap-mcpdm.c b/sound/soc/omap/omap-mcpdm.c
index f161c2f5ed36..bed09c27e44c 100644
--- a/sound/soc/omap/omap-mcpdm.c
+++ b/sound/soc/omap/omap-mcpdm.c
@@ -32,7 +32,6 @@
32#include <sound/initval.h> 32#include <sound/initval.h>
33#include <sound/soc.h> 33#include <sound/soc.h>
34 34
35#include <plat/control.h>
36#include <plat/dma.h> 35#include <plat/dma.h>
37#include <plat/mcbsp.h> 36#include <plat/mcbsp.h>
38#include "mcpdm.h" 37#include "mcpdm.h"
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index a3bfb2e8b70f..73d0edd8ded9 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -79,7 +79,7 @@ static void tosa_ext_control(struct snd_soc_codec *codec)
79static int tosa_startup(struct snd_pcm_substream *substream) 79static int tosa_startup(struct snd_pcm_substream *substream)
80{ 80{
81 struct snd_soc_pcm_runtime *rtd = substream->private_data; 81 struct snd_soc_pcm_runtime *rtd = substream->private_data;
82 struct snd_soc_codec *codec = rtd->card->codec; 82 struct snd_soc_codec *codec = rtd->codec;
83 83
84 /* check the jack status at stream startup */ 84 /* check the jack status at stream startup */
85 tosa_ext_control(codec); 85 tosa_ext_control(codec);
diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c
index b897f7b96d89..f8e0ab82ef59 100644
--- a/sound/soc/sh/sh7760-ac97.c
+++ b/sound/soc/sh/sh7760-ac97.c
@@ -52,8 +52,8 @@ static int __init sh7760_ac97_init(void)
52 unsigned short ipsel; 52 unsigned short ipsel;
53 53
54 /* enable both AC97 controllers in pinmux reg */ 54 /* enable both AC97 controllers in pinmux reg */
55 ipsel = ctrl_inw(IPSEL); 55 ipsel = __raw_readw(IPSEL);
56 ctrl_outw(ipsel | (3 << 10), IPSEL); 56 __raw_writew(ipsel | (3 << 10), IPSEL);
57 57
58 ret = -ENOMEM; 58 ret = -ENOMEM;
59 sh7760_ac97_snd_device = platform_device_alloc("soc-audio", -1); 59 sh7760_ac97_snd_device = platform_device_alloc("soc-audio", -1);
diff --git a/sound/soc/sh/siu_pcm.c b/sound/soc/sh/siu_pcm.c
index d6c79fa56d12..ed29c9e1ed4e 100644
--- a/sound/soc/sh/siu_pcm.c
+++ b/sound/soc/sh/siu_pcm.c
@@ -127,6 +127,7 @@ static int siu_pcm_wr_set(struct siu_port *port_info,
127 sg_init_table(&sg, 1); 127 sg_init_table(&sg, 1);
128 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buff)), 128 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buff)),
129 size, offset_in_page(buff)); 129 size, offset_in_page(buff));
130 sg_dma_len(&sg) = size;
130 sg_dma_address(&sg) = buff; 131 sg_dma_address(&sg) = buff;
131 132
132 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan, 133 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan,
@@ -176,6 +177,7 @@ static int siu_pcm_rd_set(struct siu_port *port_info,
176 sg_init_table(&sg, 1); 177 sg_init_table(&sg, 1);
177 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buff)), 178 sg_set_page(&sg, pfn_to_page(PFN_DOWN(buff)),
178 size, offset_in_page(buff)); 179 size, offset_in_page(buff));
180 sg_dma_len(&sg) = size;
179 sg_dma_address(&sg) = buff; 181 sg_dma_address(&sg) = buff;
180 182
181 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan, 183 desc = siu_stream->chan->device->device_prep_slave_sg(siu_stream->chan,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 805343fe903b..614a8b30d87b 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -233,6 +233,7 @@ static const struct file_operations codec_reg_fops = {
233 .open = codec_reg_open_file, 233 .open = codec_reg_open_file,
234 .read = codec_reg_read_file, 234 .read = codec_reg_read_file,
235 .write = codec_reg_write_file, 235 .write = codec_reg_write_file,
236 .llseek = default_llseek,
236}; 237};
237 238
238static void soc_init_codec_debugfs(struct snd_soc_codec *codec) 239static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 035cab85cb66..7d85c6496afa 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -1084,6 +1084,7 @@ static ssize_t dapm_widget_power_read_file(struct file *file,
1084static const struct file_operations dapm_widget_power_fops = { 1084static const struct file_operations dapm_widget_power_fops = {
1085 .open = dapm_widget_power_open_file, 1085 .open = dapm_widget_power_open_file,
1086 .read = dapm_widget_power_read_file, 1086 .read = dapm_widget_power_read_file,
1087 .llseek = default_llseek,
1087}; 1088};
1088 1089
1089void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec) 1090void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec)