diff options
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/wm_hubs.c | 2 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 119 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcpdm.c | 1 | ||||
-rw-r--r-- | sound/soc/pxa/tosa.c | 2 | ||||
-rw-r--r-- | sound/soc/sh/sh7760-ac97.c | 4 | ||||
-rw-r--r-- | sound/soc/sh/siu_pcm.c | 2 | ||||
-rw-r--r-- | sound/soc/soc-core.c | 1 | ||||
-rw-r--r-- | sound/soc/soc-dapm.c | 1 |
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 | ||
601 | static 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 | |||
654 | static 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 | |||
688 | static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, | 600 | static 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) | |||
79 | static int tosa_startup(struct snd_pcm_substream *substream) | 79 | static 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 | ||
238 | static void soc_init_codec_debugfs(struct snd_soc_codec *codec) | 239 | static 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, | |||
1084 | static const struct file_operations dapm_widget_power_fops = { | 1084 | static 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 | ||
1089 | void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec) | 1090 | void snd_soc_dapm_debugfs_init(struct snd_soc_codec *codec) |