~ubuntu-branches/ubuntu/saucy/linux-ti-omap4/saucy-proposed

« back to all changes in this revision

Viewing changes to sound/soc/codecs/cs42l73.c

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati, Stefan Bader, Upstream Kernel Changes
  • Date: 2012-08-15 17:17:43 UTC
  • Revision ID: package-import@ubuntu.com-20120815171743-h5wnuf51xe7pvdid
Tags: 3.5.0-207.13
[ Paolo Pisati ]

* Start new release

[ Stefan Bader ]

* (config) Enable getabis to use local package copies

[ Upstream Kernel Changes ]

* fixup: gargabe collect iva_seq[0|1] init
* [Config] enable all SND_OMAP_SOC_*s
* fixup: cm2xxx_3xxx.o is needed for omap2_cm_read|write_reg
* fixup: add some snd_soc_dai* helper functions
* fixup: s/snd_soc_dpcm_params/snd_soc_dpcm/g
* fixup: typo, no_host_mode and useless SDP4430 init
* fixup: enable again aess hwmod

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
};
44
44
 
45
45
static const struct reg_default cs42l73_reg_defaults[] = {
46
 
        { 1, 0x42 },    /* r01  - Device ID A&B */
47
 
        { 2, 0xA7 },    /* r02  - Device ID C&D */
48
 
        { 3, 0x30 },    /* r03  - Device ID E */
49
46
        { 6, 0xF1 },    /* r06  - Power Ctl 1 */
50
47
        { 7, 0xDF },    /* r07  - Power Ctl 2 */
51
48
        { 8, 0x3F },    /* r08  - Power Ctl 3 */
402
399
 
403
400
static const struct snd_kcontrol_new cs42l73_snd_controls[] = {
404
401
        SOC_DOUBLE_R_SX_TLV("Headphone Analog Playback Volume",
405
 
                        CS42L73_HPAAVOL, CS42L73_HPBAVOL, 7,
406
 
                        0xffffffC1, 0x0C, hpaloa_tlv),
 
402
                        CS42L73_HPAAVOL, CS42L73_HPBAVOL, 0,
 
403
                        0x41, 0x4B, hpaloa_tlv),
407
404
 
408
405
        SOC_DOUBLE_R_SX_TLV("LineOut Analog Playback Volume", CS42L73_LOAAVOL,
409
 
                        CS42L73_LOBAVOL, 7, 0xffffffC1, 0x0C, hpaloa_tlv),
 
406
                        CS42L73_LOBAVOL, 0, 0x41, 0x4B, hpaloa_tlv),
410
407
 
411
408
        SOC_DOUBLE_R_SX_TLV("Input PGA Analog Volume", CS42L73_MICAPREPGAAVOL,
412
 
                        CS42L73_MICBPREPGABVOL, 5, 0xffffff35,
413
 
                        0x34, micpga_tlv),
 
409
                        CS42L73_MICBPREPGABVOL, 5, 0x34,
 
410
                        0x24, micpga_tlv),
414
411
 
415
412
        SOC_DOUBLE_R("MIC Preamp Switch", CS42L73_MICAPREPGAAVOL,
416
413
                        CS42L73_MICBPREPGABVOL, 6, 1, 1),
417
414
 
418
415
        SOC_DOUBLE_R_SX_TLV("Input Path Digital Volume", CS42L73_IPADVOL,
419
 
                        CS42L73_IPBDVOL, 7, 0xffffffA0, 0xA0, ipd_tlv),
 
416
                        CS42L73_IPBDVOL, 0, 0xA0, 0x6C, ipd_tlv),
420
417
 
421
418
        SOC_DOUBLE_R_SX_TLV("HL Digital Playback Volume",
422
 
                        CS42L73_HLADVOL, CS42L73_HLBDVOL, 7, 0xffffffE5,
423
 
                        0xE4, hl_tlv),
 
419
                        CS42L73_HLADVOL, CS42L73_HLBDVOL,
 
420
                        0, 0x34, 0xE4, hl_tlv),
424
421
 
425
422
        SOC_SINGLE_TLV("ADC A Boost Volume",
426
423
                        CS42L73_ADCIPC, 2, 0x01, 1, adc_boost_tlv),
427
424
 
428
425
        SOC_SINGLE_TLV("ADC B Boost Volume",
429
 
                        CS42L73_ADCIPC, 6, 0x01, 1, adc_boost_tlv),
430
 
 
431
 
        SOC_SINGLE_TLV("Speakerphone Digital Playback Volume",
432
 
                        CS42L73_SPKDVOL, 0, 0xE4, 1, hl_tlv),
433
 
 
434
 
        SOC_SINGLE_TLV("Ear Speaker Digital Playback Volume",
435
 
                        CS42L73_ESLDVOL, 0, 0xE4, 1, hl_tlv),
 
426
                       CS42L73_ADCIPC, 6, 0x01, 1, adc_boost_tlv),
 
427
 
 
428
        SOC_SINGLE_SX_TLV("Speakerphone Digital Volume",
 
429
                            CS42L73_SPKDVOL, 0, 0x34, 0xE4, hl_tlv),
 
430
 
 
431
        SOC_SINGLE_SX_TLV("Ear Speaker Digital Volume",
 
432
                            CS42L73_ESLDVOL, 0, 0x34, 0xE4, hl_tlv),
436
433
 
437
434
        SOC_DOUBLE_R("Headphone Analog Playback Switch", CS42L73_HPAAVOL,
438
435
                        CS42L73_HPBAVOL, 7, 1, 1),
599
596
        SND_SOC_DAPM_INPUT("MIC2"),
600
597
        SND_SOC_DAPM_SUPPLY("MIC2 Bias", CS42L73_PWRCTL2, 7, 1, NULL, 0),
601
598
 
602
 
        SND_SOC_DAPM_AIF_OUT("XSPOUTL", "XSP Capture",  0,
603
 
                        CS42L73_PWRCTL2, 1, 1),
604
 
        SND_SOC_DAPM_AIF_OUT("XSPOUTR", "XSP Capture",  0,
605
 
                        CS42L73_PWRCTL2, 1, 1),
606
 
        SND_SOC_DAPM_AIF_OUT("ASPOUTL", "ASP Capture",  0,
607
 
                        CS42L73_PWRCTL2, 3, 1),
608
 
        SND_SOC_DAPM_AIF_OUT("ASPOUTR", "ASP Capture",  0,
609
 
                        CS42L73_PWRCTL2, 3, 1),
610
 
        SND_SOC_DAPM_AIF_OUT("VSPOUTL", "VSP Capture",  0,
 
599
        SND_SOC_DAPM_AIF_OUT("XSPOUTL", NULL,  0,
 
600
                        CS42L73_PWRCTL2, 1, 1),
 
601
        SND_SOC_DAPM_AIF_OUT("XSPOUTR", NULL,  0,
 
602
                        CS42L73_PWRCTL2, 1, 1),
 
603
        SND_SOC_DAPM_AIF_OUT("ASPOUTL", NULL,  0,
 
604
                        CS42L73_PWRCTL2, 3, 1),
 
605
        SND_SOC_DAPM_AIF_OUT("ASPOUTR", NULL,  0,
 
606
                        CS42L73_PWRCTL2, 3, 1),
 
607
        SND_SOC_DAPM_AIF_OUT("VSPOUTL", NULL,  0,
611
608
                        CS42L73_PWRCTL2, 4, 1),
612
 
        SND_SOC_DAPM_AIF_OUT("VSPOUTR", "VSP Capture",  0,
 
609
        SND_SOC_DAPM_AIF_OUT("VSPOUTR", NULL,  0,
613
610
                        CS42L73_PWRCTL2, 4, 1),
614
611
 
615
612
        SND_SOC_DAPM_PGA("PGA Left", SND_SOC_NOPM, 0, 0, NULL, 0),
638
635
        SND_SOC_DAPM_MIXER("VSPL Output Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
639
636
        SND_SOC_DAPM_MIXER("VSPR Output Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
640
637
 
641
 
        SND_SOC_DAPM_AIF_IN("XSPINL", "XSP Playback", 0,
642
 
                                CS42L73_PWRCTL2, 0, 1),
643
 
        SND_SOC_DAPM_AIF_IN("XSPINR", "XSP Playback", 0,
644
 
                                CS42L73_PWRCTL2, 0, 1),
645
 
        SND_SOC_DAPM_AIF_IN("XSPINM", "XSP Playback", 0,
646
 
                                CS42L73_PWRCTL2, 0, 1),
647
 
 
648
 
        SND_SOC_DAPM_AIF_IN("ASPINL", "ASP Playback", 0,
649
 
                                CS42L73_PWRCTL2, 2, 1),
650
 
        SND_SOC_DAPM_AIF_IN("ASPINR", "ASP Playback", 0,
651
 
                                CS42L73_PWRCTL2, 2, 1),
652
 
        SND_SOC_DAPM_AIF_IN("ASPINM", "ASP Playback", 0,
653
 
                                CS42L73_PWRCTL2, 2, 1),
654
 
 
655
 
        SND_SOC_DAPM_AIF_IN("VSPIN", "VSP Playback", 0,
 
638
        SND_SOC_DAPM_AIF_IN("XSPINL", NULL, 0,
 
639
                                CS42L73_PWRCTL2, 0, 1),
 
640
        SND_SOC_DAPM_AIF_IN("XSPINR", NULL, 0,
 
641
                                CS42L73_PWRCTL2, 0, 1),
 
642
        SND_SOC_DAPM_AIF_IN("XSPINM", NULL, 0,
 
643
                                CS42L73_PWRCTL2, 0, 1),
 
644
 
 
645
        SND_SOC_DAPM_AIF_IN("ASPINL", NULL, 0,
 
646
                                CS42L73_PWRCTL2, 2, 1),
 
647
        SND_SOC_DAPM_AIF_IN("ASPINR", NULL, 0,
 
648
                                CS42L73_PWRCTL2, 2, 1),
 
649
        SND_SOC_DAPM_AIF_IN("ASPINM", NULL, 0,
 
650
                                CS42L73_PWRCTL2, 2, 1),
 
651
 
 
652
        SND_SOC_DAPM_AIF_IN("VSPIN", NULL, 0,
656
653
                                CS42L73_PWRCTL2, 4, 1),
657
654
 
658
655
        SND_SOC_DAPM_MIXER("HL Left Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
776
773
        {"HL Left Mixer", NULL, "VSPIN"},
777
774
        {"HL Right Mixer", NULL, "VSPIN"},
778
775
 
 
776
        {"ASPINL", NULL, "ASP Playback"},
 
777
        {"ASPINM", NULL, "ASP Playback"},
 
778
        {"ASPINR", NULL, "ASP Playback"},
 
779
        {"XSPINL", NULL, "XSP Playback"},
 
780
        {"XSPINM", NULL, "XSP Playback"},
 
781
        {"XSPINR", NULL, "XSP Playback"},
 
782
        {"VSPIN", NULL, "VSP Playback"},
 
783
 
779
784
        /* Capture Paths */
780
785
        {"MIC1", NULL, "MIC1 Bias"},
781
786
        {"PGA Left Mux", "Mic 1", "MIC1"},
822
827
 
823
828
        {"VSPOUTL", NULL, "VSPL Output Mixer"},
824
829
        {"VSPOUTR", NULL, "VSPR Output Mixer"},
 
830
 
 
831
        {"ASP Capture", NULL, "ASPOUTL"},
 
832
        {"ASP Capture", NULL, "ASPOUTR"},
 
833
        {"XSP Capture", NULL, "XSPOUTL"},
 
834
        {"XSP Capture", NULL, "XSPOUTR"},
 
835
        {"VSP Capture", NULL, "VSPOUTL"},
 
836
        {"VSP Capture", NULL, "VSPOUTR"},
825
837
};
826
838
 
827
839
struct cs42l73_mclk_div {
1091
1103
                                 struct snd_pcm_hw_params *params,
1092
1104
                                 struct snd_soc_dai *dai)
1093
1105
{
1094
 
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
1095
 
        struct snd_soc_codec *codec = rtd->codec;
 
1106
        struct snd_soc_codec *codec = dai->codec;
1096
1107
        struct cs42l73_private *priv = snd_soc_codec_get_drvdata(codec);
1097
1108
        int id = dai->id;
1098
1109
        int mclk_coeff;
1429
1440
 
1430
1441
};
1431
1442
 
1432
 
static int __init cs42l73_modinit(void)
1433
 
{
1434
 
        int ret;
1435
 
        ret = i2c_add_driver(&cs42l73_i2c_driver);
1436
 
        if (ret != 0) {
1437
 
                pr_err("Failed to register CS42L73 I2C driver: %d\n", ret);
1438
 
                return ret;
1439
 
        }
1440
 
        return 0;
1441
 
}
1442
 
 
1443
 
module_init(cs42l73_modinit);
1444
 
 
1445
 
static void __exit cs42l73_exit(void)
1446
 
{
1447
 
        i2c_del_driver(&cs42l73_i2c_driver);
1448
 
}
1449
 
 
1450
 
module_exit(cs42l73_exit);
 
1443
module_i2c_driver(cs42l73_i2c_driver);
1451
1444
 
1452
1445
MODULE_DESCRIPTION("ASoC CS42L73 driver");
1453
1446
MODULE_AUTHOR("Georgi Vlaev, Nucleus Systems Ltd, <joe@nucleusys.com>");