wm9713.c (8056d9bbb57207854462b6b0a3a75d172300cce5) wm9713.c (6335d05548eece40092000aa91b64a50310d69d5)
1/*
2 * wm9713.c -- ALSA Soc WM9713 codec support
3 *
4 * Copyright 2006 Wolfson Microelectronics PLC.
5 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the

--- 991 unchanged lines hidden (view full) ---

1000 SNDRV_PCM_RATE_22050 | \
1001 SNDRV_PCM_RATE_44100 | \
1002 SNDRV_PCM_RATE_48000)
1003
1004#define WM9713_PCM_FORMATS \
1005 (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
1006 SNDRV_PCM_FORMAT_S24_LE)
1007
1/*
2 * wm9713.c -- ALSA Soc WM9713 codec support
3 *
4 * Copyright 2006 Wolfson Microelectronics PLC.
5 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the

--- 991 unchanged lines hidden (view full) ---

1000 SNDRV_PCM_RATE_22050 | \
1001 SNDRV_PCM_RATE_44100 | \
1002 SNDRV_PCM_RATE_48000)
1003
1004#define WM9713_PCM_FORMATS \
1005 (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
1006 SNDRV_PCM_FORMAT_S24_LE)
1007
1008static struct snd_soc_dai_ops wm9713_dai_ops_hifi = {
1009 .prepare = ac97_hifi_prepare,
1010 .set_clkdiv = wm9713_set_dai_clkdiv,
1011 .set_pll = wm9713_set_dai_pll,
1012};
1013
1014static struct snd_soc_dai_ops wm9713_dai_ops_aux = {
1015 .prepare = ac97_aux_prepare,
1016 .set_clkdiv = wm9713_set_dai_clkdiv,
1017 .set_pll = wm9713_set_dai_pll,
1018};
1019
1020static struct snd_soc_dai_ops wm9713_dai_ops_voice = {
1021 .hw_params = wm9713_pcm_hw_params,
1022 .shutdown = wm9713_voiceshutdown,
1023 .set_clkdiv = wm9713_set_dai_clkdiv,
1024 .set_pll = wm9713_set_dai_pll,
1025 .set_fmt = wm9713_set_dai_fmt,
1026 .set_tristate = wm9713_set_dai_tristate,
1027};
1028
1008struct snd_soc_dai wm9713_dai[] = {
1009{
1010 .name = "AC97 HiFi",
1011 .ac97_control = 1,
1012 .playback = {
1013 .stream_name = "HiFi Playback",
1014 .channels_min = 1,
1015 .channels_max = 2,
1016 .rates = WM9713_RATES,
1017 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1018 .capture = {
1019 .stream_name = "HiFi Capture",
1020 .channels_min = 1,
1021 .channels_max = 2,
1022 .rates = WM9713_RATES,
1023 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1029struct snd_soc_dai wm9713_dai[] = {
1030{
1031 .name = "AC97 HiFi",
1032 .ac97_control = 1,
1033 .playback = {
1034 .stream_name = "HiFi Playback",
1035 .channels_min = 1,
1036 .channels_max = 2,
1037 .rates = WM9713_RATES,
1038 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1039 .capture = {
1040 .stream_name = "HiFi Capture",
1041 .channels_min = 1,
1042 .channels_max = 2,
1043 .rates = WM9713_RATES,
1044 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1024 .ops = {
1025 .prepare = ac97_hifi_prepare,
1026 .set_clkdiv = wm9713_set_dai_clkdiv,
1027 .set_pll = wm9713_set_dai_pll,},
1045 .ops = &wm9713_dai_ops_hifi,
1028 },
1029 {
1030 .name = "AC97 Aux",
1031 .playback = {
1032 .stream_name = "Aux Playback",
1033 .channels_min = 1,
1034 .channels_max = 1,
1035 .rates = WM9713_RATES,
1036 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1046 },
1047 {
1048 .name = "AC97 Aux",
1049 .playback = {
1050 .stream_name = "Aux Playback",
1051 .channels_min = 1,
1052 .channels_max = 1,
1053 .rates = WM9713_RATES,
1054 .formats = SNDRV_PCM_FMTBIT_S16_LE,},
1037 .ops = {
1038 .prepare = ac97_aux_prepare,
1039 .set_clkdiv = wm9713_set_dai_clkdiv,
1040 .set_pll = wm9713_set_dai_pll,},
1055 .ops = &wm9713_dai_ops_aux,
1041 },
1042 {
1043 .name = "WM9713 Voice",
1044 .playback = {
1045 .stream_name = "Voice Playback",
1046 .channels_min = 1,
1047 .channels_max = 1,
1048 .rates = WM9713_PCM_RATES,
1049 .formats = WM9713_PCM_FORMATS,},
1050 .capture = {
1051 .stream_name = "Voice Capture",
1052 .channels_min = 1,
1053 .channels_max = 2,
1054 .rates = WM9713_PCM_RATES,
1055 .formats = WM9713_PCM_FORMATS,},
1056 },
1057 {
1058 .name = "WM9713 Voice",
1059 .playback = {
1060 .stream_name = "Voice Playback",
1061 .channels_min = 1,
1062 .channels_max = 1,
1063 .rates = WM9713_PCM_RATES,
1064 .formats = WM9713_PCM_FORMATS,},
1065 .capture = {
1066 .stream_name = "Voice Capture",
1067 .channels_min = 1,
1068 .channels_max = 2,
1069 .rates = WM9713_PCM_RATES,
1070 .formats = WM9713_PCM_FORMATS,},
1056 .ops = {
1057 .hw_params = wm9713_pcm_hw_params,
1058 .shutdown = wm9713_voiceshutdown,
1059 .set_clkdiv = wm9713_set_dai_clkdiv,
1060 .set_pll = wm9713_set_dai_pll,
1061 .set_fmt = wm9713_set_dai_fmt,
1062 .set_tristate = wm9713_set_dai_tristate,
1071 .ops = &wm9713_dai_ops_voice,
1063 },
1072 },
1064 },
1065};
1066EXPORT_SYMBOL_GPL(wm9713_dai);
1067
1068int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
1069{
1070 if (try_warm && soc_ac97_ops.warm_reset) {
1071 soc_ac97_ops.warm_reset(codec->ac97);
1072 if (ac97_read(codec, 0) == wm9713_reg[0])

--- 214 unchanged lines hidden ---
1073};
1074EXPORT_SYMBOL_GPL(wm9713_dai);
1075
1076int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
1077{
1078 if (try_warm && soc_ac97_ops.warm_reset) {
1079 soc_ac97_ops.warm_reset(codec->ac97);
1080 if (ac97_read(codec, 0) == wm9713_reg[0])

--- 214 unchanged lines hidden ---