diff options
Diffstat (limited to 'sound/pci/hda/patch_ca0132.c')
-rw-r--r-- | sound/pci/hda/patch_ca0132.c | 50 |
1 files changed, 17 insertions, 33 deletions
diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c index e0383eea9880..72d20652df50 100644 --- a/sound/pci/hda/patch_ca0132.c +++ b/sound/pci/hda/patch_ca0132.c | |||
@@ -719,7 +719,6 @@ struct ca0132_spec { | |||
719 | unsigned int num_inputs; | 719 | unsigned int num_inputs; |
720 | hda_nid_t shared_mic_nid; | 720 | hda_nid_t shared_mic_nid; |
721 | hda_nid_t shared_out_nid; | 721 | hda_nid_t shared_out_nid; |
722 | struct hda_pcm pcm_rec[5]; /* PCM information */ | ||
723 | 722 | ||
724 | /* chip access */ | 723 | /* chip access */ |
725 | struct mutex chipio_mutex; /* chip access mutex */ | 724 | struct mutex chipio_mutex; /* chip access mutex */ |
@@ -4036,12 +4035,11 @@ static struct hda_pcm_stream ca0132_pcm_digital_capture = { | |||
4036 | static int ca0132_build_pcms(struct hda_codec *codec) | 4035 | static int ca0132_build_pcms(struct hda_codec *codec) |
4037 | { | 4036 | { |
4038 | struct ca0132_spec *spec = codec->spec; | 4037 | struct ca0132_spec *spec = codec->spec; |
4039 | struct hda_pcm *info = spec->pcm_rec; | 4038 | struct hda_pcm *info; |
4040 | 4039 | ||
4041 | codec->pcm_info = info; | 4040 | info = snd_hda_codec_pcm_new(codec, "CA0132 Analog"); |
4042 | codec->num_pcms = 0; | 4041 | if (!info) |
4043 | 4042 | return -ENOMEM; | |
4044 | info->name = "CA0132 Analog"; | ||
4045 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = ca0132_pcm_analog_playback; | 4043 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = ca0132_pcm_analog_playback; |
4046 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0]; | 4044 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].nid = spec->dacs[0]; |
4047 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].channels_max = | 4045 | info->stream[SNDRV_PCM_STREAM_PLAYBACK].channels_max = |
@@ -4049,27 +4047,27 @@ static int ca0132_build_pcms(struct hda_codec *codec) | |||
4049 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; | 4047 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; |
4050 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; | 4048 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; |
4051 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0]; | 4049 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[0]; |
4052 | codec->num_pcms++; | ||
4053 | 4050 | ||
4054 | info++; | 4051 | info = snd_hda_codec_pcm_new(codec, "CA0132 Analog Mic-In2"); |
4055 | info->name = "CA0132 Analog Mic-In2"; | 4052 | if (!info) |
4053 | return -ENOMEM; | ||
4056 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; | 4054 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; |
4057 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; | 4055 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; |
4058 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1]; | 4056 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[1]; |
4059 | codec->num_pcms++; | ||
4060 | 4057 | ||
4061 | info++; | 4058 | info = snd_hda_codec_pcm_new(codec, "CA0132 What U Hear"); |
4062 | info->name = "CA0132 What U Hear"; | 4059 | if (!info) |
4060 | return -ENOMEM; | ||
4063 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; | 4061 | info->stream[SNDRV_PCM_STREAM_CAPTURE] = ca0132_pcm_analog_capture; |
4064 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; | 4062 | info->stream[SNDRV_PCM_STREAM_CAPTURE].substreams = 1; |
4065 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2]; | 4063 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->adcs[2]; |
4066 | codec->num_pcms++; | ||
4067 | 4064 | ||
4068 | if (!spec->dig_out && !spec->dig_in) | 4065 | if (!spec->dig_out && !spec->dig_in) |
4069 | return 0; | 4066 | return 0; |
4070 | 4067 | ||
4071 | info++; | 4068 | info = snd_hda_codec_pcm_new(codec, "CA0132 Digital"); |
4072 | info->name = "CA0132 Digital"; | 4069 | if (!info) |
4070 | return -ENOMEM; | ||
4073 | info->pcm_type = HDA_PCM_TYPE_SPDIF; | 4071 | info->pcm_type = HDA_PCM_TYPE_SPDIF; |
4074 | if (spec->dig_out) { | 4072 | if (spec->dig_out) { |
4075 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = | 4073 | info->stream[SNDRV_PCM_STREAM_PLAYBACK] = |
@@ -4081,7 +4079,6 @@ static int ca0132_build_pcms(struct hda_codec *codec) | |||
4081 | ca0132_pcm_digital_capture; | 4079 | ca0132_pcm_digital_capture; |
4082 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in; | 4080 | info->stream[SNDRV_PCM_STREAM_CAPTURE].nid = spec->dig_in; |
4083 | } | 4081 | } |
4084 | codec->num_pcms++; | ||
4085 | 4082 | ||
4086 | return 0; | 4083 | return 0; |
4087 | } | 4084 | } |
@@ -4352,7 +4349,7 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec) | |||
4352 | const struct dsp_image_seg *dsp_os_image; | 4349 | const struct dsp_image_seg *dsp_os_image; |
4353 | const struct firmware *fw_entry; | 4350 | const struct firmware *fw_entry; |
4354 | 4351 | ||
4355 | if (request_firmware(&fw_entry, EFX_FILE, codec->bus->card->dev) != 0) | 4352 | if (request_firmware(&fw_entry, EFX_FILE, codec->card->dev) != 0) |
4356 | return false; | 4353 | return false; |
4357 | 4354 | ||
4358 | dsp_os_image = (struct dsp_image_seg *)(fw_entry->data); | 4355 | dsp_os_image = (struct dsp_image_seg *)(fw_entry->data); |
@@ -4413,8 +4410,7 @@ static void hp_callback(struct hda_codec *codec, struct hda_jack_callback *cb) | |||
4413 | * state machine run. | 4410 | * state machine run. |
4414 | */ | 4411 | */ |
4415 | cancel_delayed_work_sync(&spec->unsol_hp_work); | 4412 | cancel_delayed_work_sync(&spec->unsol_hp_work); |
4416 | queue_delayed_work(codec->bus->workq, &spec->unsol_hp_work, | 4413 | schedule_delayed_work(&spec->unsol_hp_work, msecs_to_jiffies(500)); |
4417 | msecs_to_jiffies(500)); | ||
4418 | cb->tbl->block_report = 1; | 4414 | cb->tbl->block_report = 1; |
4419 | } | 4415 | } |
4420 | 4416 | ||
@@ -4702,20 +4698,8 @@ MODULE_ALIAS("snd-hda-codec-id:11020011"); | |||
4702 | MODULE_LICENSE("GPL"); | 4698 | MODULE_LICENSE("GPL"); |
4703 | MODULE_DESCRIPTION("Creative Sound Core3D codec"); | 4699 | MODULE_DESCRIPTION("Creative Sound Core3D codec"); |
4704 | 4700 | ||
4705 | static struct hda_codec_preset_list ca0132_list = { | 4701 | static struct hda_codec_driver ca0132_driver = { |
4706 | .preset = snd_hda_preset_ca0132, | 4702 | .preset = snd_hda_preset_ca0132, |
4707 | .owner = THIS_MODULE, | ||
4708 | }; | 4703 | }; |
4709 | 4704 | ||
4710 | static int __init patch_ca0132_init(void) | 4705 | module_hda_codec_driver(ca0132_driver); |
4711 | { | ||
4712 | return snd_hda_add_codec_preset(&ca0132_list); | ||
4713 | } | ||
4714 | |||
4715 | static void __exit patch_ca0132_exit(void) | ||
4716 | { | ||
4717 | snd_hda_delete_codec_preset(&ca0132_list); | ||
4718 | } | ||
4719 | |||
4720 | module_init(patch_ca0132_init) | ||
4721 | module_exit(patch_ca0132_exit) | ||